Backend Architecture
Built a Django REST Framework backend with four core apps: authentication, projects, work experience, and contact messages. Each app handles its own API endpoints, serializers, and admin models, keeping the codebase modular and maintainable.
Dockerization
Containerized the backend and frontend using Docker and Docker Compose. The backend runs on Gunicorn with WhiteNoise for static file serving, while the frontend is served through Nginx. Local development uses a single docker compose up command to spin up the full stack with PostgreSQL.
Terraform Infrastructure
Provisioned the entire AWS infrastructure using Terraform, including VPC, public subnet for EC2, private subnets for RDS, internet gateway, route tables, EC2 instance, ECR repositories for backend and frontend images, RDS PostgreSQL, S3 bucket, and IAM roles with instance profiles.
CI/CD Pipeline
Configured GitHub Actions to run Django checks, execute migrations in CI, run backend tests, build Docker images, push to ECR, SSH into EC2, pull the latest images, recreate containers, and reload Nginx — all triggered on push to main.
Deployment & Teardown
Successfully deployed the full stack to EC2 with ECR, validated the working system for two to three days, then tore down the infrastructure using terraform destroy and shifted to static hosting to preserve the AWS budget for the next project.