This is a pet project for cash flow management whose goal is to practice microservices architecture development. The idea is to transform the excel spreadsheet found here in a webapp, using spring boot to implement the microservice on the backend and Angular on the frontend
- Spring boot / Java11/
- JWT
- MySQL
- Docker
- Angular/TypeScript
- Ensure a properly configured MySQL database instance is running and create a new database to be used by this application
- 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.
- Use the following commands to create the mysql server container and databases
docker pull mysql
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
docker exec -it mysql-db mysql -u root -p -e "create database cash_flow_tests; grant all on cash_flow_tests.* to app"
- If you have apache maven (3.1+) on your system's classpath, just run:
mvn spring-boot:run
- otherwise anf if you are on a linux box, run:
./mvnw spring-boot:run
- ... on a windows machine
./mvnw.bat spring-boot:run
mvn -Dspring-boot.run.profiles=production spring-boot:run
mvn -Dspring.profiles.active=integrationtest test
- CRUD of Book entries groups [done]
- CRUD of Book entries ( expenses or incomes ) [done]
- Signup api, Login with JWT and Multitenancy : [done]
- CRUD operations on book entries groups and book entries must be scoped to the logged user
- Signup api must be public
- Reports [done]
- Annual, monthly and Daily reports of income and expenses
- Cash flow goals - to define income and expenses goals in order to compare with the real cash flow [done]
- CRUD of Book entries groups
- CRUD of Book entries ( expenses or incomes )
- Cash flow goals - to define income and expenses goals in order to compare with the real cash flow
- Reports
- Annual, monthly and Daily reports of income and expenses
- Signup from
- Login form
- Java Money and the Currency API
- Working with Relationships in Spring Data REST
- GLOSSÁRIO DE TERMOS USADOS NAS ÁREAS DE FINANÇAS, CONTABILIDADE E JURÍDICA
- Spring Boot - Unit Testing and Mocking with Mockito and JUnit
- Spring Boot testing features
- Creating a generic user
curl -i -H "content-type: application/json" -d '{"name":"Lucas Simão","email":"lsimaocosta@gmail.com","password":"123"}' -v http://localhost:8080/users
- Authenticatig as admin using curl in development enviroment
curl -i -H "content-type: application/json" -d '{"username":"admin@mycashflow.com","password":"123"}' -v http://localhost:8080/login
- Beteween the response headers from the previous request, will be the Authorization one. Just send the header value in any request
curl -i -H "content-type:application/json" -H "authorization: $AUTHORIZATION_TOKEN" -d '{"type":"Expense","description":"credit card" }' http://localhost:8080/bookEntryGroups