Peanut Split is an accountless expense splitter. A room is its link: send it to a group, choose a name, add expenses in any supported currency, and record settlements made with cash, a bank, or any payment app.
Peanut Split is open source. Squirrel Labs Ltd is the granting entity. Code is AGPL-3.0-or-later (LICENSE);
documentation, content and artwork are CC-BY-4.0; third-party material keeps its own terms. The
per-path map is REUSE.toml, the notices are
THIRD_PARTY_NOTICES.md, and the marks policy is
TRADEMARKS.md. Reasoning in
the licensing decision; evidence in
the rights register.
The /source page and every FOSS claim on the live site stay behind NEXT_PUBLIC_FOSS_RELEASED
until the deployment is built from a public commit — see
the rights register for what is done and what is left.
The durable promise is about released software: recipients of an AGPL release keep the license
permissions to run, inspect, modify, and share that version, subject to the AGPL terms. It does not
guarantee that Squirrel Labs will operate peanutsplit.com forever, or that every future release or
hosted feature has the same terms.
Squirrel Labs is currently the sole upstream maintainer. Squirrel Labs pays the project's costs, including infrastructure, domains, third-party services, and the work hours spent building and maintaining the official service.
The official service may contain a bounded set of contextual Peanut references. They are an official-host editorial choice, not a software-license condition: they must never block a task, force a click, recur as nags, behave like spam, or make non-Peanut settlement worse. A downstream operator will not owe Peanut promotion. The precise surface budget remains unpublished until final maintainer approval; see STEWARDSHIP.md.
This is a maintainer-led project, not a contributor-recruitment program. Bug and private security reports are useful; unsolicited feature pull requests are not solicited and have no response, review, or merge promise. See CONTRIBUTING.md.
apps/web is the only request path proven to serve the current product. It is a Next.js application
whose route handlers talk directly to PostgreSQL schema split through its own Prisma client.
apps/api is a separate Fastify implementation with a different Prisma schema, app. The current
web application has no rewrite or request edge to it. Whether that component should be archived,
published separately, or developed again is an open maintainer decision; it is not part of the
documented self-host path.
browser -> apps/web (Next pages + /api handlers) -> PostgreSQL schema split
|-> optional FX, push, analytics, error, and receipt-model services
apps/api (Fastify, schema app) no current request edge from apps/web
Prerequisites: Node 22, pnpm 10.17.1, Docker, and Docker Compose. From the repository root:
cp apps/api/.env.example apps/api/.env
cp apps/web/.env.example apps/web/.env
pnpm bootstrap
docker compose -f apps/web/docker-compose.yml up -d db
pnpm --dir apps/web exec prisma migrate dev
pnpm dev:webThe API environment copy is needed only because the root dependency bootstrap generates both Prisma
clients; it does not put apps/api on the current web request path or connect to that database.
Open http://localhost:3000. The supplied Compose file is a development baseline, not a hardened or turnkey production deployment. Read SELF-HOSTING.md before exposing it to a network.
- Documentation index
- Architecture
- Data model
- HTTP surface
- Security and data lifecycle
- Self-hosting
- Testing
- Licensing decision
- Rights register
Current schema and route inventories are generated from source. Run:
# From the repository root, after `pnpm bootstrap`.
pnpm docs:generate
pnpm docs:checkHistorical design documents remain useful context, but they are not current contracts. The docs index labels that boundary explicitly.
# From the repository root, after `pnpm bootstrap`.
pnpm typecheck
pnpm format:check
pnpm docs:check
pnpm testDatabase integration and browser suites have additional prerequisites in TESTING.md. A green check does not itself clear copyright, asset, privacy, or publication rights.