Skip to content

PhuongHoang/expense-app

Repository files navigation

Expense tracking application

This project serves as a learning ground for me. I am trying to get myself familiar with the following technologies:

Goals

  1. Gradle: especially the multi-project feature
  2. Spring Data
  3. Spring Data REST
  4. React for Spring Boot project, link here
  5. JUnit 5 with Spring
  6. Spring Security with OAuth support

Stretch goals

These are goals that I would like to achieve. However, they are deemed nice-to-have goals as they do not contribute to my learning for the time being.

  1. Setup and use HashiCorp Vault in my project, with the help of Spring Vault
  2. Setup Spring Cloud Config so that all my projects get the configuration from a common place. This is very useful for my integration-api project at work as well.
  3. Spring Rest Docs to document my REST APIs

Another goal is to learn React as the same time. However, this is stretch goal.

Progress

So far, I have got the following working

Setup PostgreSQL database

☑️ Having a springbootdb database

☑️ Setup uuid-ossp extension which allows UUID to be generated, based on this instruction

☑️ Verifying it works with the app

🔲 Setup correct index for the tables

Setup Gradle for my project

Gradle is my company official build tool. It makes sense that I should at least be familiar with it.

☑️ Gradle multi-project approach

☑️ Setup inter-project dependencies

☑️ Setup common build scripts in parent project.

Setup data access layer using Spring Data JPA

This is a very well known Spring project. It is necessary for me to know about it. I don't have to know it inside out. However, I have to know enough to be able to use it effectively.

☑️ Setup entity and repositories classes in data project

☑️ Setup a common data layer that other projects can use, based on this instruction

☑️ Verified that the data can be saved/retrieved from PostgreSQL database

🔲 Audit entity classes to make sure they follow good practice for JPA

Setup Flyway

This is a tool to manage different versions of the database migration script. This is very useful to ensure that the code that you work with is applicable to the database schema.

☑️ Add Flyway support for my project with the help of this link

☑️ Created migration scripts for the project

🔲 Create repeatable migration scripts. The reason is because I find that I keep having to drop and create database whenever I changed my schema. I will use this link to help me.

Setup REST endpoint with Spring Data REST

Spring Data REST generates REST endpoints for @Repository classes automatically. This saves from having to write @RestController classes by hand.

☑️ Setup the endpoints for all the available repositories in expense-tracker

🔲 Configure the JSON response so that it helps me to work with the response effectively. The current default JSON response (HAL based) is not very intuitive to work with.

Setup React front end

I need a front end for my application. React fits the bill nicely as it is very popular at the moment. For this, I will use this tutorial as a guide.

☑️ Create an empty react project, called expense-ui

☑️ Configure the gradle build to build this project

🔲 Integrate with the expense-tracker back end

🔲 Testing with Jest framework

Setup testing

Obviously I need to perform testing for my application

🔲 Setup JUnit testing for data

🔲 Integrate with Test Containers

🔲 Setup JUnit testing for data-loader

🔲 Setup JUnit testing for expense-tracker

Containerize the applications

I need to create Docker images for the following applications

🔲 data-loader

🔲 expense-tracker

🔲 expense-ui

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published