💡 Inspiration
As a student deeply passionate about cloud technologies and full-stack development, I wanted to go beyond basic local setups and build something that simulates real-world deployment scenarios. My goal was to explore how a MERN (MongoDB, Express.js, React.js, Node.js) application could be containerized using Docker and deployed on AWS using best practices like CI/CD automation and scalable infrastructure.
This led to the creation of CloudMERN — a full-stack, cloud-native, and production-ready project that helped me dive deep into DevOps workflows, container orchestration, and AWS services.
🔨 How I Built It
Here’s a breakdown of how I built the CloudMERN project and the tech stack involved:
Frontend – React.js
- Created a Single Page Application (SPA) with React.
- Hosted the static site on AWS S3.
- Configured AWS CloudFront as a CDN for faster, global delivery.
Backend – Node.js with Express
- Developed a RESTful API using Express.js.
- Dockerized the backend to ensure portability and consistency.
- Used AWS ECS with Fargate to run containers without managing servers.
Database – MongoDB Atlas
- Chose MongoDB Atlas for its managed infrastructure, backups, and scalability.
Docker & Containerization
- Wrote custom Dockerfiles for both frontend and backend.
- Leveraged multi-stage builds to keep image sizes lean and efficient.
AWS Services
- Used Amazon ECR to store Docker images before deploying to ECS.
- Managed secrets and environment variables using AWS Secrets Manager.
CI/CD – GitHub Actions
- Set up automated CI/CD pipelines to:
- Build Docker images.
- Push to ECR.
- Trigger deployment on ECS after each code push.
⚔️ Challenges Faced
CI/CD Pipeline Setup
- Configuring GitHub Actions to authenticate with AWS and trigger deployments was tricky. It took time to get IAM roles and secrets right.
ECS Networking & Permissions
- Initially faced issues understanding how ECS tasks communicate internally.
- Learned to properly configure VPCs, subnets, and security groups.
- Struggled with IAM roles and permissions, which caused deployment failures.
Large Docker Images
- My first Docker builds were unnecessarily large and slow.
- Solved it using multi-stage builds and minimal base images like Alpine.
📚 What I Learned
- ✅ How to write optimized and secure Dockerfiles.
- ✅ Deploying containerized apps using AWS ECS with Fargate.
- ✅ Automating deployments with GitHub Actions for a real DevOps workflow.
- ✅ Hosting frontend apps on AWS S3 and configuring CloudFront.
- ✅ Managing cloud security with IAM roles, Secrets Manager, and best practices.
- ✅ Gained a solid understanding of AWS networking (VPCs, subnets, security groups).
- ✅ Solved real deployment issues like broken builds, service discovery, and permissions.
CloudMERN became more than just a side project — it evolved into a complete learning journey across full-stack development, Docker, DevOps, and cloud infrastructure.


Log in or sign up for Devpost to join the conversation.