finds.dev← search

// the find

jadijadi/bestoon

★ 925 · JavaScript · updated May 2024

یک پروژه برای دیدن اینکه چطوری یک ایده می تونه به مرحله اجرا برسه. قدم به قدم فیلم گرفتم و منتشر کردم و خود سیستم هم برای عموم قابل استفاده است

Bestoon is a Django-based income/expense tracker built as a public, filmed step-by-step tutorial on shipping an idea, with a REST API and a swarm of community-built clients (Ionic app, bash CLI, Ruby/PHP/Angular wrappers, Telegram bots). It's aimed at developers following the build log or forking it to write their own client against a working API, not at anyone wanting a finance app to actually use today.

The API-first design paid off — a dozen third-party clients in different languages exist because the REST layer was simple enough to wrap, which is a decent case study in API design even if the clients themselves are toy projects. It ships an actual test suite (test_submit_expense.py, test_submit_income.py, test_token.py) rather than just claiming coverage. Scope discipline is real: one backend, one official mobile client, one CLI, done, instead of scope creep into a bigger product.

Hard-pinned to Python 2 with virtualenv setup instructions — Python 2 has been EOL since 2020, so getting this running at all now means porting it yourself, not following the README. The project's own TODO admits the two things that matter for a real deployment are unfinished: no useful error messages back to clients on auth failure, and no logging system at all. The Ionic client is Ionic 1 / AngularJS 1 with Bower, a dependency stack that was already legacy when this was written and is unrunnable without significant rework now. Most of the linked third-party clients are single-commit repos from what look like course assignments, so 'more clients' is mostly dead links rather than an active ecosystem.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →