Welcome to the Weather App repository! This project is a Node.js application that provides real-time weather data. It utilizes a robust CI/CD pipeline with Jenkins for builds and ArgoCD for GitOps deployments. The app runs in a Kubernetes environment, with Docker Hub storing the container images.
To get started, you can download the latest release of the Weather App from the Releases section. Make sure to follow the instructions in the release notes to execute the files correctly.
- Real-Time Weather Data: Access up-to-date weather information for any location.
- CI/CD Pipeline: Automated builds with Jenkins and deployments with ArgoCD.
- Containerization: Use Docker to run the application smoothly across different environments.
- Kubernetes Management: Deploy and manage the application in a production-grade Kubernetes cluster.
- Helm Charts: Simplify the deployment process with Helm.
- Secure Secrets Management: Keep your sensitive information safe.
- Node.js: The core technology for building the application.
- Jenkins: For continuous integration and automated builds.
- ArgoCD: For GitOps-style continuous deployment.
- Docker: For containerization of the application.
- Kubernetes: For orchestrating the deployment.
- Helm: For managing Kubernetes applications.
- Weather API: To fetch real-time weather data.
Here's a brief overview of the files and directories in this repository:
Weather_app/
│
├── Dockerfile # Docker configuration for the app
├── Jenkinsfile # Jenkins pipeline configuration
├── helm/ # Helm charts for deployment
│ └── <chart-files>
├── k8s/ # Kubernetes manifests
│ └── <k8s-manifests>
├── src/ # Source code for the application
│ └── <app-files>
└── README.md # Project documentation
To run the Weather App locally, follow these steps:
-
Clone the repository:
git clone https://github.com/tiagolacheski/Weather_app.git cd Weather_app
-
Build the Docker image:
docker build -t weather-app .
-
Run the Docker container:
docker run -p 3000:3000 weather-app
-
Access the app: Open your browser and go to
http://localhost:3000
.
Once the app is running, you can enter any city name to get the current weather data. The app provides temperature, humidity, wind speed, and a brief description of the weather conditions.
This repository features a fully automated CI/CD pipeline:
- Jenkins: Automatically builds the application when changes are pushed to the repository.
- ArgoCD: Deploys the new version to the Kubernetes cluster without manual intervention.
The container images for the Weather App are stored on Docker Hub. You can pull the latest image using:
docker pull your-dockerhub-username/weather-app
Replace your-dockerhub-username
with your actual Docker Hub username.
For secure management of sensitive data, the application uses environment variables. Make sure to set these variables in your Kubernetes deployment files or Docker run command.
To monitor the application, you can integrate tools like Prometheus and Grafana for performance metrics and logging. This will help you keep track of the app's health and usage.
Here are some ideas for future enhancements:
- User Authentication: Add user accounts to save favorite locations.
- Mobile Responsiveness: Improve the UI for mobile devices.
- Historical Weather Data: Provide access to past weather data.
- Push Notifications: Notify users of severe weather alerts.
We welcome contributions! If you want to help improve the Weather App, please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature/YourFeature
). - Make your changes and commit them (
git commit -m 'Add some feature'
). - Push to the branch (
git push origin feature/YourFeature
). - Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
For any questions or feedback, feel free to open an issue or contact me directly. You can also check the Releases section for the latest updates.
Thank you for checking out the Weather App! We hope you find it useful.