This project sets up an automated CI/CD pipeline using Jenkins, Terraform, AWS, Docker, and Kubernetes. When you commit code to this repository, it triggers the CI pipeline on the Jenkins server, which builds the application, creates a Docker image, and pushes it to Docker Hub. Subsequently, the CD pipeline deploys the application on a Kubernetes cluster.
- AWS account
- Terraform installed
- Docker installed
- Jenkins installed
- Kubernetes cluster (Minikube or a cloud provider)
- Git installed
git clone <repository_url>
cd <repository_name>
Terraform scripts are provided to automate the creation of EC2 instances, and the installation of Jenkins and Kubernetes (master and node servers).
terraform init
terraform apply
Follow the prompts to confirm the action. This will create the necessary EC2 instances and set up Jenkins and Kubernetes.
- Access the Jenkins server using the public IP of the EC2 instance where Jenkins is installed.
- Install required plugins:
- Kubernetes plugin
- Docker plugin
- Git plugin
- Configure Jenkins credentials:
- AWS credentials
- Docker Hub credentials
- Set up Jenkins pipeline jobs for CI and CD.
- Jenkins CI pipeline will be triggered on code commit.
- It will build the application and create a Docker image.
- The image will be tagged and pushed to Docker Hub.
- Jenkins CD pipeline will be triggered after the Docker image is pushed.
- It will pull the latest Docker image from Docker Hub.
- Deploy the application on the Kubernetes cluster using
kubectl
.
Ensure your repository has the following structure and scripts:
.
├── Jenkinsfile
├── terraform
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
│ └── scripts
│ ├── install_jenkins.sh
│ └── install_k8s.sh
├── k8s
│ ├── deployment.yaml
│ ├── service.yaml
│ └── ingress.yaml
├── src
│ └── your_application_code
└── Dockerfile
Following these steps, you will have a fully automated CI/CD pipeline that builds
tests, and deploys your application on a Kubernetes cluster. Ensure to replace placeholders like <repository_url>
, your_dockerhub_username
, and your_repository_name
with actual values specific to your setup.
- About
- Features
- Technologies Used
- Setup
- Usage
- Authentication
- Dark and Light Mode
- Screenshots
- Contributing
- License
This is a MERN (MongoDB, Express, React, Node.js) Stack web application designed to help you track your personal finances. You can add expenses and income, manage your money, and gain insights from the data. It features JWT authentication for user management and integrates with Google and Facebook for authentication through Firebase. Additionally, it offers dark and light mode options for a customized user experience.
- User registration and authentication (JWT, Google, Facebook via Firebase)
- Add, edit, and delete expenses and income
- Categorize expenses and income for better organization
- Dashboard for an overview of your financial situation
- Data analysis and visualization for better money management
- Dark and light mode for user preference
- MongoDB for database storage
- Express.js for the backend server
- React for the frontend
- Node.js for server-side JavaScript
- JWT for user authentication
- Firebase for Google and Facebook authentication
- Charting libraries for data visualization (e.g., Chart.js)
- TailwindCSS and Styled Components for styling and dark/light mode
- Clone this repository to your local machine.
git clone https://github.com/PramithaMJ/Personal_Financial_Tracker_Web_App.git