FolderSync + AWS S3: Private Android Photo Backup

What FolderSync is an Android app that syncs local folders to S3-compatible storage. This guide sets up a private S3 bucket with a scoped IAM user and maps it to your device’s camera folder for automatic, private photo backup. You need an AWS account to start. Why Own your data: No Big Tech gallery lock-in. Reliability: S3 durability + Intelligent-Tiering for cost control. Simplicity: No self-hosted NAS, static IP, RAID, or server maintenance. How Step 1: Create S3 bucket (Region: us-east-1 recommended) ...

October 12, 2025 · 2 min · 347 words · Sagar Nayak

Expense Tracker (Part 3/5): AWS Setup

Series links: Part 1/5 - Introduction Part 2/5 - Database Planning Part 3/5 - AWS Setup (you are here) Part 4/5 - Backend APIs Part 5/5 - Frontend What A light AWS setup to hold two things: your files (bills) and your data (transactions). Why S3 is reliable and affordable for documents/photos. RDS PostgreSQL gives you a managed database without running servers. How S3 bucket for web hosting (public read) Create a bucket for the static site (e.g., my-expenses-web). Make it public-read so the HTML/CSS/JS can be fetched by browsers. Optionally use CloudFront in front; with OAC you can keep the bucket private and still serve publicly via the CDN. Alternative hosts: Netlify, Vercel, or any simple web server. S3 bucket for documents (private) ...

June 6, 2025 · 2 min · 341 words · Sagar Nayak

Deploy Angular to AWS S3 with GitHub Actions

What You can directly push your angular build to aws s3 from github using github action. How For this you need aws iam with s3 access and cloudfront access ( if you are using CloudFront to serve the s3 resources ). the action script is name: Deploy to S3 on: push: branches: - master jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Node JS uses: actions/setup-node@v4 with: node-version: 'lts/*' - name: Install dependencies run: npm install --legacy-peer-deps - name: Build Angular project run: npm run build --configuration=production - name: Sync S3 bucket uses: jakejarvis/s3-sync-action@master with: args: --delete env: AWS_S3_BUCKET: your-bucket AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: 'eu-west-2' SOURCE_DIR: 'dist/proj' - name: Invalidate CloudFront uses: chetan/invalidate-cloudfront-action@v2 env: DISTRIBUTION: your-cf-id PATHS: "/*" AWS_REGION: "us-east-1" AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} In the script above, replace your-bucket with your bucket name, your-cf-id with your CloudFront distribution ID, and set the AWS IAM credentials in the GitHub repository secrets tab. ...

December 18, 2024 · 1 min · 190 words · Sagar Nayak

Deploy a Static HTML Site to AWS S3 with GitHub Actions

What You can push your static HTML files with their related assets to AWS S3 directly from GitHub Actions whenever you push to GitHub. How You will need an AWS IAM user with access to S3 and CloudFront (if you are going to use CloudFront), and an S3 bucket to deploy into. name: Deploy to S3 on: push: branches: - master jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: submodules: false - name: Sync S3 bucket uses: jakejarvis/s3-sync-action@master with: args: --delete env: AWS_S3_BUCKET: your-bucket-name AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: 'us-west-1' SOURCE_DIR: '.' - name: Invalidate CloudFront uses: chetan/invalidate-cloudfront-action@v2 env: DISTRIBUTION: your-cf-id PATHS: "/*" AWS_REGION: "us-east-1" AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} If you are not using a CloudFront distribution to serve the S3 bucket, remove the Invalidate CloudFront step. ...

November 5, 2024 · 1 min · 161 words · Sagar Nayak

Deploy Hugo to AWS S3 with GitHub Actions and CloudFront

What You can deploy the hugo project to s3 directly when you make a push to github repository. this is a guide for that. you are going to use AWS s3, IAM role with s3 access and cloudfront access if you want to use cloudfront in front of s3 bucket. How the github action for your repo will be name: Deploy to S3 on: push: branches: - master jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: submodules: true - name: Set up Hugo uses: peaceiris/actions-hugo@v3 with: hugo-version: 'latest' - name: Build the Hugo site run: hugo --verbose --debug - name: Sync S3 bucket uses: jakejarvis/s3-sync-action@master with: args: --delete env: AWS_S3_BUCKET: your-bucket AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: 'us-west-1' SOURCE_DIR: 'public' - name: Invalidate CloudFront uses: chetan/invalidate-cloudfront-action@v2 env: DISTRIBUTION: YOUR-CF-DIST-ID PATHS: "/*" AWS_REGION: "us-east-1" AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} If you are not using CloudFront, ignore the invalidation step and you are good to go. ...

October 22, 2024 · 1 min · 190 words · Sagar Nayak