Skip to content

portfolio website hosted entirely serverless on aws infra: sayeedali.com

License

Notifications You must be signed in to change notification settings

alisayeed248/cloud-resume

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

155 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Cloud Resume - Serverless Portfolio

A modern, serverless portfolio website built with React and AWS, featuring a blog system and complete CI/CD pipeline. This project demonstrates full-stack development skills, cloud architecture, and DevOps practices.

πŸ—οΈ Architecture

This application follows a serverless architecture pattern using AWS services:

  • Frontend: React SPA hosted on S3 with CloudFront distribution
  • Backend: AWS Lambda functions with API Gateway
  • Database: DynamoDB for blog post storage
  • Infrastructure: Terraform for Infrastructure as Code
  • CI/CD: GitHub Actions for automated deployment

πŸ› οΈ Tech Stack

Frontend

  • React 19 with Vite
  • Tailwind CSS
  • Framer Motion
  • React Router
  • TipTap Editor (for rich text blog editing)

Backend

  • AWS Lambda (Python)
  • API Gateway
  • DynamoDB
  • S3 for static website hosting and asset hosting

Infrastructure & DevOps

  • Terraform
  • GitHub Actions
  • AWS CloudFront
  • Route 53

Additional Features

  • Admin authentication system
  • Blog management with rich text editor
  • Responsive design with mobile navigation
  • Terminal boot animation
  • Scroll progress indicator
  • Visitor counter

πŸš€ Running Locally

Prerequisites

  • Node.js 18+
  • AWS CLI configured (for deployment)
  • Terraform (for infrastructure)

Frontend Development

# Clone the repository
git clone https://github.com/alisayeed248/cloud-resume.git
cd cloud-resume

# Navigate to frontend directory
cd frontend

# Install dependencies
npm install

# Start development server
npm run dev

The application will be available at http://localhost:5173

Environment Variables

Create a .env file in the frontend directory:

VITE_API_BASE_URL=your-api-gateway-url

πŸ—οΈ Deployment

Infrastructure Setup

This project requires AWS infrastructure to be provisioned first:

  1. DynamoDB Tables:

    • blog-posts-dev
    • blog-posts-prod
  2. Lambda Functions:

    • blog-get-all-posts
    • blog-get-post-by-slug
    • blog-create-post
  3. API Gateway with appropriate routes and CORS configuration

  4. S3 Bucket for static hosting with CloudFront distribution

Automated Deployment

The project includes GitHub Actions workflow for automated deployment:

# Triggers on push to dev branch
# Builds React app
# Deploys infrastructure with Terraform
# Syncs files to S3
# Invalidates CloudFront cache

Manual Deployment

# Build the frontend
cd frontend
npm run build

# Deploy infrastructure
cd ../terraform
terraform init
terraform plan
terraform apply

# Sync to S3
aws s3 sync frontend/dist s3://your-bucket-name --delete

πŸ”§ Configuration

AWS Services Configuration

  • Lambda Functions: Python 3.9+ runtime with appropriate IAM roles
  • DynamoDB: Tables with partition key postId and GSI on slug
  • API Gateway: REST API with CORS enabled for frontend domain
  • S3: Static website hosting with public read access

Required AWS Permissions

The deployment requires IAM permissions for:

  • S3 bucket management
  • Lambda function deployment
  • DynamoDB table access
  • API Gateway configuration
  • CloudFront distribution management

πŸ“ Project Structure

cloud-resume/
β”œβ”€β”€ frontend/                 # React application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/      # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ pages/           # Page components
β”‚   β”‚   β”œβ”€β”€ admin/           # Admin dashboard
β”‚   β”‚   └── services/        # API service layer
β”‚   └── public/              # Static assets
β”œβ”€β”€ backend/
β”‚   └── lambdas/             # AWS Lambda functions
β”‚       β”œβ”€β”€ getAllPosts/
β”‚       β”œβ”€β”€ getPostBySlug/
β”‚       └── createPost/
β”œβ”€β”€ terraform/               # Infrastructure as Code
└── .github/workflows/       # CI/CD pipeline

🎯 Key Features

  • Responsive Design: Mobile-first approach with Tailwind CSS
  • Blog System: Full CRUD operations with rich text editor
  • Admin Panel: Protected routes with JWT authentication
  • Performance: Optimized with lazy loading and code splitting

πŸ” Security

  • JWT-based authentication for admin access
  • CORS configuration for API security
  • Input validation and sanitization
  • Secure environment variable handling

πŸ“Š Performance Features

  • Static site generation for fast loading
  • CloudFront CDN for global distribution
  • Optimized images and lazy loading

🚧 Self-Deployment Notes

To deploy this project yourself:

  1. AWS Account Setup: Ensure you have AWS credentials configured
  2. Infrastructure: Create required AWS resources (DynamoDB, Lambda, API Gateway)
  3. Environment Configuration: Update environment variables for your endpoints
  4. Domain Setup: Configure your own domain in CloudFront and Route 53
  5. Secrets Management: Set up GitHub secrets for automated deployment

πŸ“ License

MIT License - see LICENSE for details.

🀝 Contributing

This is a personal portfolio project, but feedback and suggestions are welcome! Feel free to open issues or reach out.


Live Demo: https://sayeedali.com
Author: Sayeed Ali

About

portfolio website hosted entirely serverless on aws infra: sayeedali.com

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors