Enterprise-grade full-stack weather application demonstrating production-ready DevOps practices, multi-cloud architecture, and automated infrastructure provisioning.
This is a full-stack weather application featuring a modern React frontend and a robust Node.js backend, designed to showcase industry-standard DevOps engineering practices. The application is fully containerized using Docker and deployed across cloud infrastructure with automated CI/CD pipelines.
Key Differentiator: Built with multi-cloud readiness in mind, featuring AWS and Azure infrastructure modules with Route 53 DNS failover capabilities, demonstrating true cloud-agnostic architecture and high-availability design.
โ ๏ธ Note: Due to cost optimization, the cloud instances are currently turned off. If you would like to see the working weather application in action, please reach out to me and I'll provide the current instance IP address for a live demonstration.
- ๐ค๏ธ Real-Time Weather Data: Fetches current weather information using OpenWeatherMap API
- ๐ป Modern Frontend: Responsive React-based user interface with clean UX
- ๐ง Robust Backend: Node.js backend handling API requests and data processing
- ๐ RESTful API: Well-structured API endpoints for weather data retrieval
- ๐ณ Containerized Architecture: Frontend and Backend fully containerized and deployed on AWS EC2 instances
- ๐ CI/CD Pipeline: Implemented using Jenkins, automatically building and redeploying containers on code changes
- ๐๏ธ Infrastructure as Code: Fully automated infrastructure provisioning using Terraform
- ๐ Secure Credentials Management: Environment variables and sensitive credentials securely managed using Jenkins credential store
- โ๏ธ Multi-Cloud Ready: Infrastructure modules for both AWS and Azure with Route 53 DNS failover
- ๐ฏ High Availability: Demonstrates failover architecture for production resilience
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MULTI-CLOUD SETUP โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโดโโโโโโโโโโโโโ
โ โ
โโโโโโโโโโโผโโโโโโโโโ โโโโโโโโโโผโโโโโโโโโโ
โ AWS Primary โ โ Azure Backup โ
โ Infrastructure โ โ Infrastructure โ
โโโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโโ
โ โ
โโโโโโโโโโโโโโฌโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโผโโโโโโโโโโโโโ
โ Route 53 DNS โ
โ Failover Routing โ
โโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโผโโโโโโโโโโ โโโโโโโโโโผโโโโโโโโโ โโโโโโโโโโโผโโโโโโโโโ
โ GitHub Repo โ โ Jenkins CI/CD โ โ OpenWeatherMap โ
โ (Source Code) โโโโโถโ (EC2 Master) โโโโโโ API โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโดโโโโโโโโโโโโโ
โ โ
โโโโโโโโโโโผโโโโโโโโโ โโโโโโโโโโผโโโโโโโโโโ
โ Frontend EC2 โ โ Backend EC2 โ
โ React App โโโโโโโถโ Node.js API โ
โ (Docker) โ โ (Docker) โ
โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
Developer Push โ GitHub โ Jenkins Webhook โ Build Docker Images
โ Push to Registry โ Deploy to EC2 โ Health Check โ Live
multi-cloud-weather/
โ
โโโ terraform/ # Infrastructure as Code
โ โโโ aws/ # AWS infrastructure modules
โ โ โโโ main.tf # EC2, Security Groups, IAM
โ โ โโโ variables.tf # Input variables
โ โ โโโ outputs.tf # Output values (IPs, DNS)
โ โโโ azure/ # Azure infrastructure modules (failover)
โ โโโ route53/ # DNS failover configuration
โ
โโโ website/ # Frontend Application
โ โโโ public/ # Static assets
โ โโโ src/ # React components
โ โ โโโ components/ # Reusable UI components
โ โ โโโ services/ # API service layer
โ โ โโโ App.js # Main application component
โ โโโ Dockerfile # Frontend container configuration
โ โโโ package.json # npm dependencies
โ
โโโ backend/ # Backend Application
โ โโโ src/ # Source code
โ โ โโโ routes/ # API route definitions
โ โ โโโ controllers/ # Business logic
โ โ โโโ services/ # External API integrations
โ โโโ Dockerfile # Backend container configuration
โ โโโ package.json # Node.js dependencies
โ โโโ .env.example # Environment variable template
โ
โโโ docker-compose.yml # Local development orchestration
โโโ Jenkinsfile # CI/CD pipeline definition
โโโ .gitignore # Git ignore rules
โโโ README.md # Project documentation
- Docker and Docker Compose
- AWS Account (for cloud deployment)
- Jenkins Server (for CI/CD)
- Terraform CLI
- OpenWeatherMap API Key
-
Clone the repository
git clone https://github.com/Dhanuzz369/multi-cloud-weather.git cd multi-cloud-weather -
Set up environment variables
# Create .env file in backend directory echo "OPENWEATHER_API_KEY=your_api_key_here" > backend/.env echo "PORT=5000" >> backend/.env
-
Build and run with Docker Compose
docker-compose up --build
-
Access the application
- Frontend:
http://localhost:3000 - Backend API:
http://localhost:5000
- Frontend:
-
Navigate to Terraform directory
cd terraform/aws -
Initialize Terraform
terraform init
-
Review and apply infrastructure
terraform plan terraform apply -auto-approve
-
Note the output values (EC2 IPs, Security Group IDs)
The project uses Jenkins for automated build and deployment:
Pipeline Stages:
- โ Checkout Code: Pull latest changes from GitHub
- ๐๏ธ Build Frontend: Create Docker image for React application
- ๐๏ธ Build Backend: Create Docker image for Node.js API
- ๐งช Run Tests: Execute unit and integration tests
- ๐ฆ Push Images: Upload to Docker registry (optional)
- ๐ Deploy: Deploy containers to EC2 instances
- ๐ฉบ Health Check: Verify application is running correctly
Pipeline Configuration:
- Automatically triggered on GitHub push via webhook
- Uses Jenkins credentials for secure API key management
- Implements zero-downtime deployment strategies
- Provides build notifications and logs
Full-stack weather application deployed on AWS EC2 using Docker containerization
Automated CI/CD pipeline with Jenkins to rebuild and redeploy containers on code push
Infrastructure provisioned using Terraform modules for AWS, Azure failover, and Route 53 DNS failover
Secure credential management through Jenkins credential store (API keys, environment variables)
Modular project design showcasing multi-cloud architecture and failover readiness
Production-ready infrastructure with security groups, IAM roles, and monitoring capabilities
DevOps best practices including IaC, containerization, and automated deployments
- Cloud Platforms: AWS EC2, Azure (multi-cloud architecture)
- Containerization: Docker, Docker Compose
- CI/CD: Jenkins, Pipeline as Code (Jenkinsfile)
- Infrastructure as Code: Terraform (AWS & Azure modules)
- Frontend: React, JavaScript, HTML5, CSS3
- Backend: Node.js, Express, RESTful APIs
- DNS & Networking: Route 53, DNS failover, Security Groups
- Security: Credential management, secure environment variables
- Version Control: Git, GitHub workflows
- ๐บ๏ธ Geolocation: Automatic weather detection based on user location
- ๐ Extended Forecasts: 5-day and 7-day weather predictions
- ๐ Historical Data: Weather trends and historical comparisons
- ๐พ User Preferences: Save favorite locations and custom settings
๐ด Important: The cloud instances are currently stopped to minimize costs. If you're interested in seeing the working weather application or would like to review the live deployment, please contact me directly and I'll provide you with the current instance IP address and start the servers for a demonstration.
- All infrastructure code is modular and reusable
- Terraform modules are designed for multi-environment deployments (dev, staging, prod)
- Docker images are optimized for production use
- Jenkins pipeline includes comprehensive error handling and rollback mechanisms
For a visual representation of the complete architecture, refer to the diagram in the Architecture section above. The project demonstrates:
- Multi-cloud infrastructure design
- High availability and failover capabilities
- Secure credential management
- Automated deployment workflows
If you'd like to:
- ๐ฏ See the live application in action
- ๐ผ Discuss the technical implementation
- ๐ค Collaborate on improvements
- ๐ง Have questions about the architecture
Please feel free to reach out!
If this project helped you understand DevOps concepts, multi-cloud architecture, or CI/CD pipelines, please consider giving it a โญ!
Built with โค๏ธ by Dhanuzz369
Demonstrating Production-Ready DevOps Engineering