{"id":21441427,"url":"https://github.com/lucassimao/cashflow","last_synced_at":"2026-04-30T11:36:48.840Z","repository":{"id":37326645,"uuid":"164212166","full_name":"lucassimao/Cashflow","owner":"lucassimao","description":"SpringBoot based restful backend + Angular frontend for cash flow management ","archived":false,"fork":false,"pushed_at":"2023-01-07T06:40:30.000Z","size":2722,"stargazers_count":0,"open_issues_count":30,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-05T06:04:23.819Z","etag":null,"topics":["angular","backend","cash-flow","crud","docker","expenses","jwt","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucassimao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-05T12:18:10.000Z","updated_at":"2019-06-24T12:24:28.000Z","dependencies_parsed_at":"2023-02-06T14:15:36.804Z","dependency_job_id":null,"html_url":"https://github.com/lucassimao/Cashflow","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lucassimao/Cashflow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucassimao%2FCashflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucassimao%2FCashflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucassimao%2FCashflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucassimao%2FCashflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucassimao","download_url":"https://codeload.github.com/lucassimao/Cashflow/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucassimao%2FCashflow/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32463892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","backend","cash-flow","crud","docker","expenses","jwt","spring-boot"],"created_at":"2024-11-23T01:25:58.270Z","updated_at":"2026-04-30T11:36:44.101Z","avatar_url":"https://github.com/lucassimao.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cash flow  \nThis is a pet project for cash flow management whose goal is to practice microservices architecture development.\nThe idea is to transform the excel spreadsheet found [here](https://luz.vc/planilhas-empresariais/planilha-de-fluxo-de-caixa-excel) \nin a webapp, using spring boot to implement the microservice on the backend and Angular on the frontend\n\n## Tech stack\n- Spring boot / Java11/\n- JWT\n- MySQL\n- Docker\n- Angular/TypeScript \n\n\n## How to run with the development environment\n\n- Ensure a properly configured MySQL database instance is running and create a new database to be used by this application  \n- edit the properties __spring.datasource.url__, __spring.datasource.username__, __spring.datasource.password__ in the file  **src/main/resources/application.properties** and ensure they are properly configured for your enviroment. Property names are self explanatory.\n- Use the following commands to create the mysql server container and databases\n\u003e docker pull mysql\n\n\u003e docker run --name mysql-db -p 3306:3306 -e MYSQL_ROOT_PASSWORD= ? -e MYSQL_USER=app -e MYSQL_PASSWORD=123 -e MYSQL_DATABASE=cash_flow -d mysql\n\n\u003e docker exec -it mysql-db mysql -u root -p -e \"create database cash_flow_tests; grant all on cash_flow_tests.* to app\"\n\n- If you have apache maven (3.1+) on your system's classpath, just run:\n\u003e mvn spring-boot:run \n- otherwise anf if you are on a linux box, run:\n\u003e ./mvnw spring-boot:run\n- ... on a windows machine\n\u003e ./mvnw.bat spring-boot:run\n\n\n## How to run in production mode\n\tmvn -Dspring-boot.run.profiles=production spring-boot:run\n## How to run the integration tests\n    mvn -Dspring.profiles.active=integrationtest test\n\n## Tasks - Backend\n1. CRUD of Book entries groups **[done]**\n2. CRUD of Book entries ( expenses or incomes ) **[done]**\n3. Signup api, Login with JWT and Multitenancy : **[done]**\n   1. CRUD operations on book entries groups and book entries must be scoped to the logged user \n   2. Signup api must be public\n4. Reports **[done]**\n   1. Annual, monthly and Daily reports of income and expenses\n5.  Cash flow goals - to define income and expenses goals in order to compare with the real cash flow **[done]**\n\n## Tasks - Frontend\n1. CRUD of Book entries groups\n2. CRUD of Book entries ( expenses or incomes )\n3.  Cash flow goals - to define income and expenses goals in order to compare with the real cash flow\n4. Reports\n   1. Annual, monthly and Daily reports of income and expenses\n5. Signup from \n6. Login form\n\n\n## Reference and articles ##\n1. [Java Money and the Currency API](https://www.baeldung.com/java-money-and-currency)\n2. [Working with Relationships in Spring Data REST](https://www.baeldung.com/spring-data-rest-relationships)\n3. [GLOSSÁRIO DE TERMOS USADOS NAS ÁREAS DE FINANÇAS, CONTABILIDADE E JURÍDICA ](https://www.sk.com.br/sk-fcj.html)\n4. [Spring Boot - Unit Testing and Mocking with Mockito and JUnit](http://www.springboottutorial.com/spring-boot-unit-testing-and-mocking-with-mockito-and-junit)\n5. [Spring Boot testing features](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html)\n\n\n## Tips\n1. Creating a generic user\n   \u003e curl -i -H \"content-type: application/json\" -d '{\"name\":\"Lucas Simão\",\"email\":\"lsimaocosta@gmail.com\",\"password\":\"123\"}'  -v http://localhost:8080/users\n2. Authenticatig as admin using curl in development enviroment\n   \u003e curl -i -H \"content-type: application/json\" -d '{\"username\":\"admin@mycashflow.com\",\"password\":\"123\"}'  -v http://localhost:8080/login\n3. Beteween the response headers from the previous request, will be the Authorization one. Just send the header value in any request\n   \u003e curl -i -H \"content-type:application/json\" -H \"authorization: $AUTHORIZATION_TOKEN\" -d '{\"type\":\"Expense\",\"description\":\"credit card\" }'  http://localhost:8080/bookEntryGroups","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucassimao%2Fcashflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucassimao%2Fcashflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucassimao%2Fcashflow/lists"}