kellpossible / coster

A self-hosted website for sharing costs between people

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Coster

Coster will be a web application designed to be used for the purpose of sharing costs between multiple people.

This project is inspired by SplittyPie, but with the following differences:

  • Written in Rust - simpler distribution, more reliable than Javascript with a stronger type system, and also for my own learning purposes.
  • Uses yew (similar to React and Elm) for the front-end logic.
  • Currency per expense - groups can submit expenses with different currencies
  • Support for a local database using rusqlite. Or perhaps use kvdb-rocksdb on the server side, along with kvdb-web on the client side because they both support the same interface which can be used directly in the costing library, and the kvdb-memorydb can be used for testing. Using kvdb would allow allow easily leveraging the work done to implement serde support for most of the types which was needed anyway for synchronisation.
  • Explore using web-view in the future to provide a desktop application.

Libraries

The following libraries were developed to service this application's needs, but they should also hopefully be useful for other purposes:

  • Doublecount - A double entry accounting system/library.
  • Commodity - A library for representing commodities/currencies.
  • cargo-i18n - A tool for extracting localizations and embedding them using i18n-embed.
  • i18n-embed - A library for embedding localizations extracted using cargo-i18n.
  • reactive-state - A library for managing global application state (similar to redux).
  • yew-bulma - A library for rendering bulma css components using yew.
  • form-validation - A library for validating user input in data forms in a GUI.
  • switch-router - An alternate version of the yew RouteService, which aims to provide a more type safe API for setting routes, and some other improvements.

TODO

  • Implement gettext translation capabilities using cargo-i18n.
  • Build gui WASM subcrate automatically using the build.rs build script.
  • Create a JSON rest API
  • Create GUI with yew
  • Support cookies to remember user on client
  • Implement database migrations with migrant or refinery.

About

A self-hosted website for sharing costs between people

License:Other


Languages

Language:Rust 96.9%Language:HTML 2.2%Language:SCSS 0.6%Language:Shell 0.3%