{"id":18674462,"url":"https://github.com/mdnkv/expense-tracking","last_synced_at":"2026-04-11T01:43:25.974Z","repository":{"id":258254769,"uuid":"872617053","full_name":"mdnkv/expense-tracking","owner":"mdnkv","description":"Expense tracking application built with Spring \u0026 Angular","archived":false,"fork":false,"pushed_at":"2025-02-02T11:41:44.000Z","size":24535,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T12:29:47.394Z","etag":null,"topics":["angular","bulma","full-stack-web-development","hibernate","iubh","java","java21","postgresql","spring-boot","spring-mvc","spring-security","spring-security-jwt"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdnkv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-14T18:50:34.000Z","updated_at":"2025-02-02T11:41:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"4f4af441-ec23-434d-8317-f4ef541a4844","html_url":"https://github.com/mdnkv/expense-tracking","commit_stats":null,"previous_names":["mdnkv/expense-tracking"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdnkv%2Fexpense-tracking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdnkv%2Fexpense-tracking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdnkv%2Fexpense-tracking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdnkv%2Fexpense-tracking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdnkv","download_url":"https://codeload.github.com/mdnkv/expense-tracking/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239515826,"owners_count":19651836,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","bulma","full-stack-web-development","hibernate","iubh","java","java21","postgresql","spring-boot","spring-mvc","spring-security","spring-security-jwt"],"created_at":"2024-11-07T09:19:04.605Z","updated_at":"2026-04-11T01:43:23.150Z","avatar_url":"https://github.com/mdnkv.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Expense tracking application\n\n![](https://img.shields.io/badge/Java-ED8B00?style=for-the-badge\u0026logo=openjdk\u0026logoColor=white)\n![](https://img.shields.io/badge/Spring-6DB33F?style=for-the-badge\u0026logo=spring\u0026logoColor=white)\n![](https://img.shields.io/badge/Spring_Boot-6DB33F?style=for-the-badge\u0026logo=spring-boot\u0026logoColor=white)\n![](https://img.shields.io/badge/Hibernate-59666C?style=for-the-badge\u0026logo=Hibernate\u0026logoColor=white)\n![](https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)\n![](https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)\n![](https://img.shields.io/badge/Angular-DD0031?style=for-the-badge\u0026logo=angular\u0026logoColor=white)\n![Bulma](https://img.shields.io/badge/bulma-00D0B1?style=for-the-badge\u0026logo=bulma\u0026logoColor=white)\n![RxJS](https://img.shields.io/badge/rxjs-%23B7178C.svg?style=for-the-badge\u0026logo=reactivex\u0026logoColor=white)\n\nThe application “Expense tracking” can be used by users in order to track personal finance situation: expenses and income, as well operations across various accounts (bank cards, cash etc.)\n\n## Project description\n\nThe target audience of this project are people who want to track their expenses and income and have an overview of the current financial situation. They are not satisfied by existing solutions and want to have more clear and user-friendly interface and synchronization between different devices (web, mobile). The usage of the project provides following of benefits: operations are categorized and recorded in a clear manner; different reports are generated to present an actual situation etc.\n\nFrom a domain driven design perspective, the application is divided into 5 core domains: Users, Payment accounts, Categories, Operations, and Currencies.\n\n## How to run the project\n\nThe application is a standard Java application that is packaged as fat jar and therefore can run on any environment where you can install Java (local, popular PaaS solutions, any cloud server).\n\nSystem requirements are:\n\n- Java JDK v.24+\n- PostgreSQL server v.16+\n\nThis section describes how to run application using the development configuration (for local testing) and the production configuration\n\n### Quick run\n\nIn order to quickly run the application locally:\n\n1. Create the PostgreSQL database\n    - Database name ```expense_tracking_db```\n    - Username ```expense_tracking_user```\n    - Password: ```secret```\n2. Open terminal and navigate to the root folder of the project\n3. Run Maven to generate a fat jar\n    - If you have a local Maven installation: ```mvn clean install```\n    - If you do not have a local Maven installation: ```./mvnw clean install```\n\n![](docs_phase3/images/installation-1.png)\n\n4. Run the fat jar ```java -jar target/expense-tracking-0.0.1-SNAPSHOT.jar```\n\n![](docs_phase3/images/installation-2.png)\n\n5. Open your browser and navigate to ```http://localhost:8080```\n\n![](docs_phase3/images/installation-3.png)\n\n### Run in a production mode\n\nThe previous section shows how to quickly get the application up and running. If you want to run the application in _production mode_ (for example, deploy it to the VPS), you need to run the ```prod``` profile.\n\nIn order to do this please first set following environment variables:\n\n- ```DATABASE_URL``` = the [jdbc url](https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html) to the PostgreSQL database\n- ```DATABASE_USER```= the database username \n- ```DATABASE_PASSWORD``` = the database password \n- ```FLYWAY_USER``` = the username used by Flyway to run migrations\n- ```FLYWAY_SECRET``` = the password used by Flyway to run migrations\n- ```HTTP_PORT``` = the HTTP port number for the application server\n\nOnce all these values are provided, the same sequence of steps applies:\n\n1. Navigate to the root folder for the project\n2. Run Maven to generate a fat jar\n   - If you have a local Maven installation: ```mvn clean install```\n   - If you do not have a local Maven installation: ```./mvnw clean install```\n3. Run the fat jar ```java -Dspring.profiles.active=prod -jar target/expense-tracking-0.0.1-SNAPSHOT.jar```\n4. Open your browser and navigate to ```http://localhost:{YourPortNumber}```\n\n## Android Application\n\nThis project has a companion Android application. This app is also an academic project, and I made a decision to leverage existing complex backend to be able to showcase advanced features in the app.\n\nYou can check the Android app in [this github repository](https://github.com/mdnkv/expense-tracking-app)\n\n## Author\n\n(C) 2024-2026 Iurii Mednikov \u003ciurii.mednikov@iu-study.org\u003e\n\nThe code is delivered under terms of the MIT software license. For more information, check the ```LICENSE.txt``` file.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdnkv%2Fexpense-tracking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdnkv%2Fexpense-tracking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdnkv%2Fexpense-tracking/lists"}