Code Monkey home page Code Monkey logo

budget-buddy's Introduction

Budget Buddy

Budget Buddy is a web-based budget tracking application built with Java, Spring Boot, and Angular. It allows users to monitor their financial transactions, set budget goals, and get insights into their spending habits. Written both for personal use and to brush up on the latest developments in Java-land and the Angular-chipelago. (Sorry, that one was a bit of a stretch.)

GitHub

Build Demo Server

Technologies

Frontend NodeJS TypeScript Angular HTML5 CSS3
Backend Java Spring Postgres
CI/CD GitHub Actions
Hosted Infra AWS Railway Docker

Features

  • Transaction Tracking: Log daily transactions and categorize them for better financial management.

Planned Features

  • Transaction Editing: Edit your transactions after entering them into the ledger! (Revolutionary technology!)
  • Custom Categories: Create new categories or use the presets.
  • Budget Goals: Set monthly or yearly budget goals and track your progress.
  • Spending Insights: Visualize your spending habits with intuitive charts and graphs.
  • Alerts & Notifications: Get notified when you're close to your budget limit or when unusual spending is detected.
  • User Profiles: Personalized user profiles with transaction history, saved goals, and more.

Getting Started

Prerequisites

  • Java 21 (OpenJDK preferred)
  • Gradle
  • Node.js and Angular CLI

Installation

  1. Clone the repository:

    git clone https://github.com/jdkendall/budget-buddy.git
  2. Navigate to the backend directory and build the project:

    cd budget-buddy/backend
    gradle bootRun
  3. In a separate terminal, navigate to the frontend directory and start the Angular app:

    cd budget-buddy/frontend
    ng serve
  4. Open a web browser and navigate to http://localhost:4200 to access the application.

Docker Deployment

Building the Docker Image

To build the Docker image for Budget Buddy:

docker build -t budget-buddy:latest .

This will create an image named budget-buddy with the tag latest. The Dockerfile is set up to build both the backend and frontend, and package them into a single image.

Running the Docker Container

Once the image is built, you can run Budget Buddy using:

docker run -p 8080:8080 budget-buddy:latest

Access the application by navigating to http://localhost:8080 in your web browser.

Continuous Integration with GitHub Actions

Budget Buddy uses GitHub Actions for Continuous Integration. Every push to the repository triggers the CI process, which includes:

  • Building the Angular frontend.
  • Building the Spring Boot backend.
  • Running tests for both frontend and backend.
  • Building the Docker image.

You can view the CI workflow details in the .github/workflows directory in the repository.

License

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

Acknowledgments

  • Thanks to my awesome spouse Micah for keeping me inspired and motivated.

budget-buddy's People

Contributors

dependabot[bot] avatar jdkendall avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

budget-buddy's Issues

Fix READMEs for local & Docker deployment

The README files are outdated, missing information about environment variables and other important information to be able to run the application. Need to clean up duplicate information areas (link between docs) and add correct info.

Parameterize endpoints for frontend APIs, CORS

I'm currently hardcoding localhost and budget.jdkendall.com, which prevents others from using the Docker container to host it for themselves. I need to refactor to allow parameterization of these values so they can be specified at Docker container launch time via env vars (or some other mechanism.)

Text-search dropdown for transaction party on ledger quickbar

Implement a text-search dropdown for transaction party in the ledger quickbar, allowing users to search and select transaction parties more efficiently. If a transaction party already exists, it will appear when typing as a search box or when clicking the dropdown; the user may also elect to type a transaction party that does not exist and the transaction party will be created once the line item is added to the ledger.

Text-search dropdown for categories on ledger quickbar

Implement a text-search dropdown for categories in the ledger quickbar, allowing users to search and select categories more efficiently. If a category already exists, it will appear when typing as a search box or when clicking the dropdown; the user may also elect to type a category that does not exist and the category will be created once the line item is added to the ledger.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.