aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 9f9b64b6e31a7a171b283bc21bd42d053be096ca (plain)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# 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).

## Documentation

- [reflex](https://hackage.haskell.org/package/reflex-0.6.2.1/docs/doc-index-All.html)
- [reflex-dom](https://hackage.haskell.org/package/reflex-dom-0.3/docs/doc-index-All.html)

## TODO

### Payment view

- Check monthly payment UX
- Edit a payment.
- Possibly remove payment category after payment edit
- Clone a payment.

### Income view### Category view### Stat view#### Bonus

- HTTP error message
- Use only one loader
- Login with email and password
- search payments by:
    - category,
    - date.

### Code

- Use BEM style
- Move the CSS out from the index page
- Add tests about exceedingPayers
- try DuplicateRecordFields (https://ghc.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields/DuplicateRecordFields)

### DB

- Add DB indexes

### Tooling

- deploy command
- migration diff (use flyway?).