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.
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
- React 19 with Vite
- Tailwind CSS
- Framer Motion
- React Router
- TipTap Editor (for rich text blog editing)
- AWS Lambda (Python)
- API Gateway
- DynamoDB
- S3 for static website hosting and asset hosting
- Terraform
- GitHub Actions
- AWS CloudFront
- Route 53
- Admin authentication system
- Blog management with rich text editor
- Responsive design with mobile navigation
- Terminal boot animation
- Scroll progress indicator
- Visitor counter
- Node.js 18+
- AWS CLI configured (for deployment)
- Terraform (for infrastructure)
# 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 devThe application will be available at http://localhost:5173
Create a .env file in the frontend directory:
VITE_API_BASE_URL=your-api-gateway-urlThis project requires AWS infrastructure to be provisioned first:
-
DynamoDB Tables:
blog-posts-devblog-posts-prod
-
Lambda Functions:
blog-get-all-postsblog-get-post-by-slugblog-create-post
-
API Gateway with appropriate routes and CORS configuration
-
S3 Bucket for static hosting with CloudFront distribution
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# 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- Lambda Functions: Python 3.9+ runtime with appropriate IAM roles
- DynamoDB: Tables with partition key
postIdand GSI onslug - API Gateway: REST API with CORS enabled for frontend domain
- S3: Static website hosting with public read access
The deployment requires IAM permissions for:
- S3 bucket management
- Lambda function deployment
- DynamoDB table access
- API Gateway configuration
- CloudFront distribution management
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
- 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
- JWT-based authentication for admin access
- CORS configuration for API security
- Input validation and sanitization
- Secure environment variable handling
- Static site generation for fast loading
- CloudFront CDN for global distribution
- Optimized images and lazy loading
To deploy this project yourself:
- AWS Account Setup: Ensure you have AWS credentials configured
- Infrastructure: Create required AWS resources (DynamoDB, Lambda, API Gateway)
- Environment Configuration: Update environment variables for your endpoints
- Domain Setup: Configure your own domain in CloudFront and Route 53
- Secrets Management: Set up GitHub secrets for automated deployment
MIT License - see LICENSE for details.
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