1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
Shared Cost
===========
Share costs with a group of people:
- Share according to people income,
- Monthly payments available,
- Statistics by month,
- Weekly activity sent by email.
Getting started
---------------
Install nix:
```
curl https://nixos.org/nix/install | sh
```
Start the environment with:
```bash
./make start
```
Init the database with migration scripts:
```bash
sqlite3 database < server/migrations/1.sql
```
Inside the tmux session, add some users with sqlite after the migration is done:
```
sqlite3 database
insert into user(creation, email, name) values (datetime('now'), 'john@mail.com', 'John');
insert into user(creation, email, name) values (datetime('now'), 'lisa@mail.com', 'Lisa');
```
Later, stop the environment with:
```bash
./make stop
```
Dist
----
```
make dist
```
Configuration
-------------
See [application.conf](application.conf).
TODO
----
### Interface
- Add a payment.
- Edit a payment.
- Delete a payment.
- Clone a payment.
#### Bonus
- Adjust login design.
- smooth search.
- search payments by:
- category,
- date.
### Code
- modal as body child https://stackoverflow.com/questions/33711392/what-is-the-proper-way-in-reflex-dom-to-handle-a-modal-dialog
- Move up element ids security (editOwn is actually at db level).
- move persistence methods to a module.
- try DuplicateRecordFields (https://ghc.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields/DuplicateRecordFields)
### Tooling
- migration diff (use flyway?).
|