This is expense tracker web application. It is built with NestJS (backend), ReactJS (frontend) and MySQL (database). It had used some popular library like React-Toastify (message alert), dnd-kit (drag and drop), React Query (manage the API calling) and Chart.js.
Most of the styling and design are referred to Monny app
- Manage expense and income and the same time
- User can create multiple wallets
- View the expense/income distribution by pie chart, bar chart and line chart.
There are 2 branch: master and refine-vite. The refine-vite branch is using refine's vite framework to develop. Both branch perform the same.
Please ensure you have installed the following framework or software
-
Pull MySQL image
-
Start the container and create database (You may need to create a user in the MySQL container)
-
Create a .env file as .env.example and fill them all
-
Build the client folder (frontend)
npm run build:client
-
Start the application
npm run start
Name | Description |
---|---|
DB_HOST | MySQL host. Ignored if DB_SOCKETPATH is provided. |
DB_PORT | MySQL port, default 3306 . Ignored if DB_SOCKETPATH is provided. |
DB_DATABASE | MySQL database name. |
DB_USERNAME | MySQL username. |
DB_PASSWORD | MySQL password. For production, the password should be stored in GAE_DB_PASSWORD secret in the same GCP project. |
JWT_SECRET | Secret for creating and verifying the JWT |
JWT_EXPIRATION_TIME | Expiration time for the JWT |