Skip to content

Production-ready Weather Tracker Application demonstrating enterprise DevOps practices. Containerized full-stack app (React + Node.js) deployed on AWS EC2 with Jenkins CI/CD pipeline, Terraform IaC, and multi-cloud architecture featuring AWS/Azure modules with Route 53 failover.

Notifications You must be signed in to change notification settings

Dhanuzz369/multi-cloud-weather

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

11 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

โ˜๏ธ Multi-Cloud Weather Tracker Application

AWS Azure Docker Jenkins Terraform

Enterprise-grade full-stack weather application demonstrating production-ready DevOps practices, multi-cloud architecture, and automated infrastructure provisioning.


๐Ÿ“‹ Project Overview

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.

๐Ÿš€ Live Demo Access

โš ๏ธ 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.


โœจ Features & Highlights

Core Functionality

  • ๐ŸŒค๏ธ 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

DevOps & Infrastructure Excellence

  • ๐Ÿณ 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

๐Ÿ›๏ธ Architecture

System Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         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)        โ”‚
          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Architecture diagram

diagram-export-10-12-2025-3_32_52-PM

Deployment Flow

Developer Push โ†’ GitHub โ†’ Jenkins Webhook โ†’ Build Docker Images 
โ†’ Push to Registry โ†’ Deploy to EC2 โ†’ Health Check โ†’ Live

๐Ÿ“ Project Structure

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

๐Ÿ”ง Deployment & Usage

Prerequisites

  • Docker and Docker Compose
  • AWS Account (for cloud deployment)
  • Jenkins Server (for CI/CD)
  • Terraform CLI
  • OpenWeatherMap API Key

Local Development

  1. Clone the repository

    git clone https://github.com/Dhanuzz369/multi-cloud-weather.git
    cd multi-cloud-weather
  2. 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
  3. Build and run with Docker Compose

    docker-compose up --build
  4. Access the application

    • Frontend: http://localhost:3000
    • Backend API: http://localhost:5000

Production Deployment

Infrastructure Provisioning (Terraform)

  1. Navigate to Terraform directory

    cd terraform/aws
  2. Initialize Terraform

    terraform init
  3. Review and apply infrastructure

    terraform plan
    terraform apply -auto-approve
  4. Note the output values (EC2 IPs, Security Group IDs)

CI/CD Pipeline (Jenkins)

The project uses Jenkins for automated build and deployment:

Pipeline Stages:

  1. โœ… Checkout Code: Pull latest changes from GitHub
  2. ๐Ÿ—๏ธ Build Frontend: Create Docker image for React application
  3. ๐Ÿ—๏ธ Build Backend: Create Docker image for Node.js API
  4. ๐Ÿงช Run Tests: Execute unit and integration tests
  5. ๐Ÿ“ฆ Push Images: Upload to Docker registry (optional)
  6. ๐Ÿš€ Deploy: Deploy containers to EC2 instances
  7. ๐Ÿฉบ 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

๐ŸŽฏ Key Achievements

Technical Accomplishments

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

Skills Demonstrated

  • 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

๐Ÿ“Š Technology Stack

Frontend

React JavaScript HTML5 CSS3

Backend

Node.js Express

DevOps & Cloud

Docker Jenkins Terraform AWS Azure

Tools & APIs

Git GitHub OpenWeatherMap


๐Ÿ”ฎ Future Enhancements

Application Features

  • ๐Ÿ—บ๏ธ 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

๐Ÿ“ Notes for Reviewers

Viewing the Application

๐Ÿ”ด 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.

Screenshots

Screenshot 2025-10-12 at 3 11 15โ€ฏPM

Repository Structure

  • 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

Architecture Diagram

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

๐Ÿ“ฌ Contact & Collaboration

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!

โญ Show Your Support

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

About

Production-ready Weather Tracker Application demonstrating enterprise DevOps practices. Containerized full-stack app (React + Node.js) deployed on AWS EC2 with Jenkins CI/CD pipeline, Terraform IaC, and multi-cloud architecture featuring AWS/Azure modules with Route 53 failover.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published