hmjatt / devops-ExpendiTrack

ExpendiTrack is a comprehensive web app for seamless budgeting and expense tracking, providing an intuitive user experience and efficient financial management.
MIT License
0 stars 2 forks source link

DevOps-ExpendiTrack

Overview

ExpenseTracker is an ambitious project aiming to leverage the Spring Boot framework, MySQL database, and React to create a robust web application dedicated to seamless budgeting and expense tracking. This comprehensive solution provides an intuitive user experience and efficient financial management. The project comprises various components and tasks that collectively contribute to its functionality.

Components

Agile-Board:

Front-End:

Backend:

Database:

Internationalization:

API Documentation:

Test Cases:

CI/CD Pipeline

Running the App Locally

Prerequisites

Backend Setup

  1. Clone the repository:
    git clone https://github.com/your-repo/devops-expenditrack.git
    cd devops-expenditrack/backend
  2. Build the backend:
    mvn clean install
  3. Run the backend server:
    mvn spring-boot:run

Frontend Setup

  1. Clone the repository:
    git clone https://github.com/your-repo/devops-expenditrack.git
    cd devops-expenditrack/frontend
  2. Install dependencies:
    npm install
  3. Run the frontend server:
    npm start

Database Setup

  1. Set up MySQL:
    • Create a database named Expendi.
    • Set up environment variables for MySQL:
      export MYSQL_DATABASE=Expendi
      export MYSQL_USER=sa
      export MYSQL_PASSWORD=password
      export MYSQL_ROOT_PASSWORD=password
    • Run the SQL scripts located in db/scripts to initialize the schema and data.

Docker Setup

  1. Build and run Docker containers:
    docker-compose up --build

CI/CD Pipeline Overview

The CI/CD pipeline for ExpenseTracker ensures continuous integration and deployment through a series of automated steps:

  1. Triggering the Pipeline:

    • The pipeline is triggered on pull requests targeting the main and Analytics branches.
  2. Backend Testing:

    • Uses GitHub Actions to set up JDK 17, build the backend using Maven, and run backend tests.
  3. Frontend Testing:

    • Uses GitHub Actions to set up Node.js, install dependencies, build the frontend, and run frontend tests.
  4. Selenium End-to-End Testing:

    • Uses Docker Compose to start necessary services (database, backend, frontend) and runs Selenium tests to verify end-to-end functionality.
    • Logs are monitored for test completion, and services are cleaned up after tests.
  5. Continuous Deployment:

    • Jenkins is configured to handle continuous deployment, integrating with Terraform for infrastructure provisioning and SonarQube for code quality analysis.

Branches and Features

Main Branch (main)

The main branch serves as the primary branch containing the basic version of the application. It includes the following features:

Analytics Branch (analytics)

The analytics branch focuses on adding analytics and charts to the application. Features include:

Jenkins Branch (jenkins)

The jenkins branch includes the following features:

SonarQube Branch (sonarqube)

The sonarqube branch focuses on integrating SonarQube for code quality analysis. Features include:

Terraform Branch (terraform)

The terraform branch is dedicated to deploying the application using Terraform. Key features include:

Getting Started

To get started with the ExpenseTracker project, follow the instructions in the respective branches' README files for setup and deployment details.

License

This project is licensed under the MIT License. See the LICENSE file for more details.