A modern, full-stack to-do list web application with complete DevOps automation, built using React.js, Node.js, MongoDB, and deployed on AWS with Kubernetes.
- π Task Management: Create, update, delete, and mark tasks as complete
- πΎ Persistent Storage: MongoDB database for reliable data persistence
- π¨ Modern UI: Clean, responsive design with Material-UI components
- π Real-time Updates: Instant UI updates for task operations
- ποΈ Microservices Architecture: Separate frontend and backend services
- π³ Containerized: Docker containers for consistent deployment
- βΈοΈ Kubernetes Ready: Complete Kubernetes manifests for production deployment
- π CI/CD Pipeline: Automated Jenkins pipelines for build and deployment
- π Security: VPC, security groups, and IAM roles for secure AWS deployment
- π Monitoring: Health checks and monitoring endpoints
- β‘ Performance: Optimized builds and scalable infrastructure
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Frontend β β Backend β β Database β
β (React.js) βββββΊβ (Node.js/ βββββΊβ (MongoDB) β
β Port: 3000 β β Express) β β Port: 27017 β
β β β Port: 3500 β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
- Frontend: React.js 17.0.2, Material-UI 4.11.4, Axios
- Backend: Node.js, Express.js 4.17.1, Mongoose 6.13.6
- Database: MongoDB
- DevOps: Docker, Kubernetes, Jenkins, Terraform
- Cloud: AWS (VPC, EC2, ECR, S3, DynamoDB)
- Monitoring: SonarQube, Health Check Endpoints
- Node.js 14.x or higher
- npm or yarn
- Docker and Docker Compose
- MongoDB (local or cloud)
- AWS Account (for cloud deployment)
- Kubernetes cluster (for production deployment)
- Jenkins server (for CI/CD)
git clone https://github.com/krnmaheshwari09/To-do-list-webApp.git
cd To-do-list-webAppcd Application-Code/backend
npm install
node index.js
# Backend runs on http://localhost:3500cd Application-Code/frontend
npm install
npm start
# Frontend runs on http://localhost:3000# Option 1: Local MongoDB
mongod --port 27017
# Option 2: Docker MongoDB
docker run -d -p 27017:27017 --name mongodb mongo:latestdocker-compose up -d- Frontend: http://localhost:3000
- Backend API: http://localhost:3500/api/tasks
- Health Check: http://localhost:3500/healthz
cd Jenkins-Server-TF
terraform init
terraform plan -var-file="variables.tfvars"
terraform apply -var-file="variables.tfvars"- Access Jenkins at
http://<jenkins-server-ip>:8080 - Install required plugins (Node.js, Docker, AWS CLI)
- Configure Jenkins pipelines using provided Jenkinsfiles
# Deploy database
kubectl apply -f Kubernetes-Manifests-file/Database/
# Deploy backend
kubectl apply -f Kubernetes-Manifests-file/Backend/
# Deploy frontend
kubectl apply -f Kubernetes-Manifests-file/Frontend/
# Configure ingress
kubectl apply -f Kubernetes-Manifests-file/ingress.yamlDevelopment: http://localhost:3500
Production: https://your-domain.com
GET /healthz- Basic health checkGET /ready- Readiness check with database connectionGET /started- Startup verification
GET /api/tasks- Get all tasksPOST /api/tasks- Create new taskPUT /api/tasks/:id- Update task completion statusDELETE /api/tasks/:id- Delete task
# Get all tasks
curl -X GET http://localhost:3500/api/tasks
# Create a new task
curl -X POST http://localhost:3500/api/tasks \
-H "Content-Type: application/json" \
-d '{"task": "Complete project documentation"}'
# Update task completion
curl -X PUT http://localhost:3500/api/tasks/TASK_ID \
-H "Content-Type: application/json" \
-d '{"completed": true}'
# Delete a task
curl -X DELETE http://localhost:3500/api/tasks/TASK_IDcd Application-Code/frontend
npm test
npm test -- --coveragecd Application-Code/backend
# Manual API testing with curl commands
# Integration testing with frontend# Start all services
docker-compose up -d
# Test complete workflow
# 1. Access frontend at http://localhost:3000
# 2. Create, update, and delete tasks
# 3. Verify data persistenceThe application includes comprehensive health check endpoints:
- Liveness:
/healthz- Confirms the application is running - Readiness:
/ready- Confirms database connectivity - Startup:
/started- Confirms successful startup
livenessProbe:
httpGet:
path: /healthz
port: 3500
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 3500
initialDelaySeconds: 5
periodSeconds: 5- CORS configuration for secure cross-origin requests
- Input validation and sanitization
- Error handling without sensitive information exposure
- VPC with private and public subnets
- Security groups with minimal required ports (22, 80, 8080, 9000, 9090)
- IAM roles and policies for AWS services
- Container security best practices
- Optimized React build for production
- Efficient MongoDB queries with Mongoose
- Container resource limits and requests
- Kubernetes horizontal pod autoscaling
- Load balancing with ingress controller
- Stateless frontend and backend design
- Independent service scaling
- Database replica sets support
- Auto-scaling based on CPU/memory metrics
- Source Control: GitHub repository with webhook triggers
- Build: Jenkins pipelines for frontend and backend
- Quality Gates: SonarQube code analysis
- Testing: Automated test execution
- Package: Docker image creation and ECR storage
- Deploy: Kubernetes deployment with rolling updates
- Monitor: Health checks and performance monitoring
main: Production-ready codefeature/*: Feature development brancheshotfix/*: Critical bug fixes
To-do-list-webApp/
βββ Application-Code/
β βββ frontend/ # React.js frontend application
β β βββ src/ # Source code
β β βββ public/ # Static assets
β β βββ package.json # Dependencies and scripts
β β βββ Dockerfile # Frontend container
β βββ backend/ # Node.js backend application
β βββ routes/ # API routes
β βββ models/ # Database models
β βββ package.json # Dependencies and scripts
β βββ Dockerfile # Backend container
βββ Jenkins-Server-TF/ # Terraform infrastructure code
β βββ vpc.tf # VPC and networking
β βββ backend.tf # Terraform backend configuration
β βββ variables.tf # Variable definitions
βββ Jenkins-Pipeline-Code/ # CI/CD pipeline definitions
β βββ Jenkinsfile-Frontend
β βββ Jenkinsfile-Backend
βββ Kubernetes-Manifests-file/ # Kubernetes deployment files
β βββ Frontend/ # Frontend K8s manifests
β βββ Backend/ # Backend K8s manifests
β βββ Database/ # Database K8s manifests
β βββ ingress.yaml # Ingress configuration
βββ ARCHITECTURE.md # System architecture documentation
βββ TECHNICAL_SPECIFICATION.md # Technical specifications
βββ WORKFLOW.md # Development and deployment workflows
βββ README.md # Project documentation
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style
- Add tests for new features
- Update documentation for significant changes
- Ensure all CI/CD checks pass
This project is licensed under the MIT License. See the LICENSE file for details.
For support and questions:
- Create an issue in this repository
- Check the WORKFLOW.md for troubleshooting steps
- Review the TECHNICAL_SPECIFICATION.md for detailed implementation
- React team for the amazing frontend framework
- Express.js community for the robust backend framework
- MongoDB for the flexible database solution
- AWS for reliable cloud infrastructure
- Kubernetes community for orchestration platform
- Jenkins for powerful CI/CD automation
Built with β€οΈ for modern web development and DevOps practices