Social bill tracker and civil engagement platform.
The project is organized as followed:
- clients contains various client implementations for the app.
- browser a browser-based client application, built with React/Typescript.
- model defines the data model provided by the server. It is a Rust crate.
- server implements the server application which makes the data queryable for clients.
git clone [email protected]:jbearer/bill-tracker.git
cd bill-trackerThis project consists of both a Rust project and a React project, each with their own dependencies. It uses Nix as a one-stop shop for managing the complexity of these dependencies. While it is possible to develop on this project without Nix, by manually installing Cargo, Node.js, and related dependencies, we highly recommend using Nix to get everything in one shot and be sure you are using the same versions as other developers.
If you don't already have Nix on your system, install it by following the instructions
here. Once installed, you can enter a shell with up-to-date
versions of all the necessary dependencies in scope simply by running nix shell from the project
root.
Optionally, you can also install direnv, which will automatically drop you into the Nix
shell whenever you enter the project directory. Use direnv allow to enable this convenience after
installing. Once in the Nix shell, you can use direnv deny if you ever need to drop out of it.
The whole project is a Cargo workspace, so to build everything you can simply run
cargo build --workspaceUse cargo clippy to run the linter and cargo test to run unit tests.
There is a browser client for the app in clients/browser. This is a React Typescript project. To
use it you should first cd in to the directory and make sure the required NPM packages are
installed:
cd clients/browser
npm installThen you can use various npm scripts to develop:
npm startwill build a development version of the project, open it in your browser, and watch your local directory for code changesnpm testruns unit testsnpx eslint --fixfinds and fixes formatting and style issues