refined financial system for a hackerspace. simple by design.
- entity — anything that can send or receive money: human, hackerspace, rent, fridge.
- transaction — move X from A to B. supports all currencies.
- balance — sum of all transactions from/to an entity.
- tags — for entities and transactions to perform a quick search.
- treasury - a bank account, cash box or a crypto wallet, specified in a transaction
- you can request a login link with your entity name
- login link will be sent to all available destinations (telegram, signal, email, etc) details
cp secrets.env.example secrets.prod.env
make prodAPI: http://0.0.0.0:8000/docs UI: http://0.0.0.0:9000
cp secrets.env.example secrets.dev.envuv python install 3.12
uv sync --devopen project in vscode, F1 python.setInterpreter, select .venv (workspace)
if you need to change project deps:
uv add packagename
uv remove packagename
uv syncinstall pre-commit hook
source ./.venv/bin/activate
pre-commit installmake devopen http://localhost:8000/docs and http://localhost:9000
make test- base classes
- errors
- unit tests
- complex search
- pagination
- tags
- transactions
- balances
- balance cache
- date range search
- payment splits
- multiple auth providers
- docker
- authentication?
- pytest ci
- generic deposit service
- usdt top-up
- currency exchange
- unit of work?
- fixed amount participation in split
- add split participants by a tag
-
grafana, statistics - treasuries
- logging
- postgres
- card processing
- migrations
- pass tags as a list, not as add/delete operations
- fix ui tag management
- misc validation of amounts (>0.00)
- improve split ux
- make a uniform deposit api CRUD, provider should be enum
- update all boolean attrs to status enums
- mobile ui
- rename base to common where applicable
- remove base service class
- permissions?
- deposit ui
- donation categories (entities?)
- easy payment urls
tests are mostly autogenerated by llm, given the route and schema. human review would be beneficial.
MIT
