Desktop-ready spending dashboard for QoQa.ch — automatically syncs your orders and PDF invoices to a local SQLite (or PostgreSQL) database and displays spending charts, stats, and a searchable orders table.
- Stats cards — total spent, number of orders, average per order
- Spending charts — monthly and yearly bar + line charts
- Category filter — filter all data by QoQa universe/sub-universe (URL-encoded)
- Orders table — searchable, paginated list of all orders
- Invoice PDF viewer — opens stored invoices in an in-app popup
- Settings modal — configure credentials, database URL, sync locale, and UI language; trigger a full or incremental sync with a live progress log
Pre-built binaries are available on the Releases page.
Because the app is not signed with an Apple Developer certificate, macOS will block it on first launch. To allow it:
- Try to open the app — macOS will show a warning and block it
- Open System Settings → Privacy & Security
- Scroll down to the security section — you will see "QoQa Compta was blocked from use because it is not from an identified developer"
- Click Open Anyway, then confirm in the dialog
You only need to do this once per installation.
QoQa Compta uses Bun.
bun install
# Starts the Hono API on :3001 and the Vite dev server on `:3000` concurrently. Open http://localhost:3000.
bun run dev
# Starts the ElectroBun desktop app
bun run desktop:dev
# Runs `vite build` first (via the ElectroBun `preBuild` hook) then packages the app. Output artifacts are in `artifacts/`: `.dmg` for macOS, `.zip` for Windows.
bun run build:stable| Layer | Technology |
|---|---|
| Backend | Hono on Bun — REST API + sync engine |
| Frontend | Vite SPA — React 19, React Router v7, Tailwind v4 |
| Desktop | ElectroBun — native macOS & Windows app |
| Database | SQLite (default, via @libsql/client) or PostgreSQL (via @neondatabase/serverless) |
| i18n | react-i18next — 5 locales: en, fr, de, it, rm |
