This app aims to help user manage bills and debts.
it's developed with SpringBoot and JPA
Front-end application is built in ReactJS
See the demo here
User:
- User login/logout
- User Authorization using JWT
- Edit User profile
Bill:
- Manage bills/indebts:
- Create bill
- Manage bills/indebts
- decline
- accept
- pay
- confirm
- settle indebts with multiple users
- social media part, creating groups and chatrooms
- create group shared bill
- settle indebts in group
- Statistics
User entity records users’ information. Every user registered in this app will have a unique record.
In realization, we use email as user’s ID.
record information related to shared bills. Every bill has a record in Bill.
- Bill entity has several basic fields to describe one bill. They are amount, type and comment.
- Bill entity has 2 timestamp fields:
- Create Time: the time when the bill was created.
- Due Time: the time when debts should be settled.
- It also has a status indicating whether it’s settled or not.
It’s a relation which keeps track of debtors in each shared bill. Each debtor in each bill will correspond an indebt record.
- This relation also has amount field indicating the amount of payment for the debtor
- 2 timestamp fields show
- when it’s accepted by the debtor
- when it’s paid
- The status is an important field in indebt relation, as it indicates the status of each indebt record
- -1 means the debtor declined the payment request
- 0 means that the bill is created and the indebt is generated but debtor hasn’t claimed to accept
- 1 means that the indebt has been accepted by debtor
- 2 means that the debtor has paid his part of shared bill
- 3 means that the bill owner has confirmed payment from the debtor and this debt is settled and archived
BillController is responsible for events related to bill such as bill/indebt management and response bill/indebt data to front-end.
UserController handles request related to users such as edit user profile and send user data to front-end;
JWTController deals with Authenticating and Authorizing users.