Finito is an open-source project under active development. APIs, UI, and data model may change.
Finito is a local-first payments platform for small businesses. The goal is simple: keep control over your data, your payment flow, and reduce dependency on third parties.
Payment systems are becoming increasingly centralized, regulated, and dependent on closed providers. For many small businesses, this means rising costs, reduced flexibility, and weaker control over critical operational data.
Finito exists to offer a practical alternative:
- independent by default,
- open-source and auditable,
- simple enough for daily business use,
- modern enough to support real digital payment workflows.
We believe accepting payments should feel more like handling cash: direct, transparent, and under the merchant's control.
- You own your business data and payment records.
- The system is local-first, so your core workflow does not rely on a single central operator.
- Integrations are composable, so payment methods can evolve without replacing the whole product.
- The codebase is open for inspection, contribution, and long-term community maintenance.
- Merchant/admin app (
app/admin/...) for managing:- items, categories, clients, tables, and reservations,
- payments, invoices, POS workflows, and reservation operations.
- Client app (
app/(client)/...) for:- receiving and confirming payments,
- payment history and basic settings.
- Local-first data layer powered by Evolu:
- data is primarily local,
- sync uses configurable transports (currently Nostr relay model).
- Desktop wrapper via Tauri (
src-tauri/).
- Next.js (App Router), React, TypeScript
- Bun (runtime + scripts)
- Jotai (state), Evolu (DB/sync), TanStack Query
- Tailwind + Radix UI components
- Nostr integration (
@nostr-dev-kit/ndk) - Tauri 2 (desktop build)
bun(latest stable recommended)- Node.js (for some ecosystem tooling)
- Optional: Rust + Tauri toolchain for desktop builds
bun installbun run devbun run check:lint
bun run check:types
bun run check:testsOr run everything at once:
bun run checkFor iterating on a single E2E test while editing the implementation, keep the development server running:
bun run devThen run the test against that server:
bun run e2e:dev:headed e2e/path/to/test.spec.tsbun run buildYou can serve the static output locally:
bun run startapp/routes and UI flows (merchant + client)components/shared UI/feature componentsatoms/Jotai atoms (account/evolu bootstrap)hooks/hooks for queries, UI state, and integrationslib/domain utilities, Evolu schema, messagingsrc-tauri/desktop layer (Rust)scripts/helper scripts
Detailed architecture documentation:
It covers:
- codebase map for fast navigation,
- data flow (app Evolu vs. device Evolu),
DataTable+ cursor pagination rules,- guardrails for safe changes.
- The project is experimental, but already useful for development and real-world testing.
- Treat the current implementation as evolving, not a finalized production standard.
- If you deploy it in production-like contexts, keep a fallback plan.
Is Finito free to use?
Yes. Finito is open-source and free to use.
Is it production-ready for all businesses?
Not yet. It is evolving quickly and should be adopted with operational caution.
Who operates Finito?
No single company operates it as a centralized payment processor. It is software you run and control.
PRs are welcome. For larger changes, open an issue or draft PR first to align on direction.



