Skip to content

Ngandana/Finance-Management-System

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

118 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Finance-Management-System

ZakaWise is a full-stack personal finance management web application that allow users to take charge of their money. It provides users with the functionaliity of tracking their income and expenses, create and manage budgets, create and monitor saving goals and gives daily financial tips to users. This is secure with Firebase Authentication.

Kanban Board Customization

The Kanban board for ZakaWise was customized using the Automated Kanban template to support Agile development.

Two additional columns were added:

  • Testing: This column is used to track tasks that have been implemented but require testing. This ensures quality assurance before completion.
  • Blocked: This column is used to identify tasks that cannot proceed due to dependencies or technical issues. This helps in quickly identifying bottlenecks.

The board includes user stories and sprint tasks from Assignment 6, allowing full traceability between planning and implementation.

Automation was used to move tasks between "To Do", "In Progress", and "Done", improving workflow efficiency and reducing manual updates.

Assignment 10

The system follows a layered architecture:

  • Controller Layer (REST API endpoints)
  • Service Layer (business logic)
  • Repository Layer (data access using Spring Data JPA)
  • Model Layer (entities representing database tables)
  • Creational Patterns Layer (object creation logic/design patterns)

Design patterns used:

  • Singleton pattern was used for DatabaseConnection to ensure only one instance of the database connection exists throughout the application lifecycle. This improves performance and prevents multiple unnecessary connections.
  • Factory pattern was used in NotificationFactory and other object creation utilities to centralize object creation logic and reduce duplication in service classes.
  • Builder pattern was Used for User, Budget, Transaction, SavingsGoal, and Notification objects because these entities contain multiple fields, some fields are optional, improves readability and maintainability prevents regeneration of constructors

Technologies used

  • Java 17+
  • Spring Boot
  • Spring Data JPA
  • Hibernate
  • JUnit 5
  • Mockito
  • Maven

Key decisions

  • Builder Pattern was chosen for complex entity creation.
  • Service layer handles business logic only (no direct repository logic in controllers).
  • Repository layer abstracts database operations.
  • Mockito was avoided in final testing to demonstrate manual unit testing using JUnit and in-memory fakes.

Assignment 11

Design Choice: Dependency Injection (DI)

I selected Dependency Injection (DI) as the primary pattern for managing repository dependencies in the service layer.

Reasons:

  • Services do not depend on concrete repository implementations.
  • Enables easy unit testing using mock or in-memory repositories.
  • Spring Boot manages the instantiation of repository beans and injects them into services
  • Repositories can be swapped without changing service code.

Assignment 13

How to Run the Project Locally

1. Clone Repositor

CI/CD PIPELINE (GitHub Actions)

Continuous Integration (CI)

Triggered on:

  • Push to any branch
  • Pull requests to main

CI pipeline:

  • Sets up Java environment (JDK 17)
  • Builds the project using Maven
  • Runs all unit tests

Continuous Deployment (CD)

Triggered only when code is merged into main.

CD pipeline:

  • Builds the Spring Boot JAR file
  • Skips tests (after CI validation)
  • Uploads .jar file as a GitHub Actions artifact

Assignment 14

Getting Started

Requirements to access the system

  • Java 17
  • Maven 3.8+
  • Git

Installation

Clone the repository:

git https://github.com/BokaMokoena/Finance-Management-System.git

Navigate to the project directory:

cd Finance-Management-System/zakawise

Install dependencies:

mvn clean install

Run the application:

mvn spring-boot:run

Running Tests

mvn test

Features for Contribution

Feature Description Difficulty
Transaction Export Export transactions to CSV/PDF Beginner
Savings Goal Alerts Email reminders for goals Intermediate
Analytics Dashboard Financial visualizations Intermediate
User Profile Management Update account details Beginner
Multi-Currency Support Handle multiple currencies Advanced
Redis Caching Improve application performance Advanced

CI/CD

The project uses GitHub Actions to:

  • Run automated tests on every push and pull request.
  • Build the application automatically.
  • Generate deployable artifacts on successful builds.

Project Documents

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%