docs: init the project readme
This commit is contained in:
parent
a512d41a0c
commit
6f210883ee
55
README.md
55
README.md
@ -1,3 +1,56 @@
|
||||
# howmuch
|
||||
|
||||
A tricount like expense-sharing system written in Go
|
||||
A tricount like expense-sharing system written in Go
|
||||
|
||||
---
|
||||
|
||||
It is a personal project to learn go and relative technologies.
|
||||
|
||||
---
|
||||
|
||||
## Project Diary
|
||||
|
||||
### 2024/09/30
|
||||
|
||||
The idea comes from a discussion with my mom. I was thinking about doing
|
||||
some personal budget management thing but she brought up the expense-sharing
|
||||
application that could be a good idea. I explained why it was a terrible idea
|
||||
and had no value but in fact it was a really a good idea.
|
||||
|
||||
First I have to set up a web server. I'm thinking about using `gin`, since I
|
||||
have played with `chi` in other projects.
|
||||
|
||||
Then I have to add some basic support functions like system `logging`,
|
||||
versioning, and other stuffs.
|
||||
|
||||
Next I need to design the API.
|
||||
|
||||
- User management: signup, login, logout.
|
||||
- A logged-in user must be able to:
|
||||
- create an event
|
||||
- add other users to that event
|
||||
- A user can only view their own events, but not the events of other users'
|
||||
- A user can add an expense to the event (reason, date, who payed how much,
|
||||
who benefited how much)
|
||||
- Users in the event can edit or delete one entry
|
||||
- changes are sent to friends in the event
|
||||
- User can get the money they spent themselves and the money they must pay
|
||||
to each other
|
||||
- User can also get the total amount or the histories.
|
||||
|
||||
That is what I thought of for now.
|
||||
|
||||
Thus, Besides a web server, I must have a database that can store all the
|
||||
data. ex. PostgreSQL. I need a message queue system (RabbitMQ?) to handle
|
||||
changes for an event. That will results in a messaging service sending emails.
|
||||
|
||||
I also want to use `Redis` for cache management.
|
||||
|
||||
What else?
|
||||
|
||||
`OpenAPI` + `swagger` for API management.
|
||||
|
||||
And last but not least, `Docker` + `Kubernetes` for the deployment.
|
||||
|
||||
That is what I am thinking of for now. I will note down other ideas during
|
||||
the project.
|
||||
|
Loading…
Reference in New Issue
Block a user