- Overview
- Architecture
- Tech Stack
- Infrastructure Setup
- CI/CD Pipeline
- Key Challenges & Solutions
- Local Development
- Deployment Guide
- Lessons Learned
Novagram is a real-time web chat application designed for devops end to end practice, deployed on AWS ECS Fargate with CI/CD automation and infrastructure-as-code via Terraform.
Frontend: React single-page app served by Nginx
Backend: Node.js + Socket.IO(web-socket)
Database: MongoDB Atlas (managed DB)
container image - docker image
Containerization: docker
Orchestration: AWS ECS Fargate
Networking: one VPC + ALB (path-based routing)
CI/CD: GitHub Actions using OIDC(open id connect)
Security: IAM roles, Secrets Manager
Image security: Trivy scanning
Infrastructure management: Terraform
This step involved understanding the make of the project
-
What runs and starts the app ?
- The backend was built with Node.js and socket.io(for realtime communication) - The backent starts with Node app.js - The frontend was built with react - The frontend starts with npm runWhat database is used and how does it connect
- The backend used mongoDB Atlas which is a self-managed database by mongodb - its connect to the mongodb via url which is injected via environmentVia what port does the backend and frontend connect to
- The backend uses port 5000 - the frontend uses port 80What environments exist and what separate each environment?
- for both backend and frontend uses 3 environment which are development, staging and production environment - each environment connects to different mongo databaseWhat is the end point for the backend to know its healthy
- for the backend the end point is /health at port 5000 - for the frontend the end point is / at port 80
Though the application could run on my pc after installing all packages and dependencies
- user can create account
- user can join rooms
- Admin can reset user pin, delete user create new rooms
- online and typing indication
- user inteface is very basic (white background)
- online and typing indicators are visible