# 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 - 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?).