Skip to content

Repository files navigation

Sovran

Maintenance health

Core gates: Tests Lint Type Check Knip Compiler Bailout Budget Styling Budget Bundle Size Budget

Other checks: Docs Glass Headers React Doctor — advisory

Badges show the latest push to main. Green means the gate passed—not necessarily that historical debt is zero. React Doctor is advisory: its badge only confirms that the report was generated. Bundle Size uploads the scored iOS/Android maintenance-health.json artifact.

Monorepo for the Sovran Bitcoin wallet and its self-contained packages. Managed with Bun workspaces — no inter-package publishing; everything links directly.

Layout

Package Path What it is
app app/ The Expo / React Native application (the product).
wallet wallet/ Payment UX logic for Coco-based Cashu wallets — parsing, classification, routing, annotation, offline suggestions. UI- and navigation-agnostic. (Formerly the colada repo.)
nostr nostr/ Typed, UI-agnostic client helpers for the Nagg GraphQL / app-view APIs and the tiered Nostr data layer. (Formerly the nagg-ts repo.)
docs docs/ The documentation site (VitePress).

app depends on wallet and nostr via workspace:*; both ship raw TypeScript (no build step). @sovranbitcoin/schemas remains an external package (shared with the web properties) and resolves from GitHub Packages — see .npmrc.

Getting started

bun install            # installs the whole workspace
bun run dev            # start the app (delegates to app/)
bun run docs:dev       # start the docs site

bun run test and bun run type-check at the root cover the WHOLE workspace — they fan out with bun run --filter '*', so app (both platform passes), wallet and nostr all run. That is what CI runs. To scope to one package, filter it (bun --filter wallet run test) or run it inside the package; focused Jest with arguments has its own root alias, since arguments would otherwise be forwarded to every package's runner:

bun run test:app -- <files> --runInBand

The remaining app commands (lint, knip, build:*, …) are still cd app delegators at the root, or run them inside app/ directly. lint covers app/ only — wallet and nostr are not in its ESLint project. EAS builds run from app/ (where eas.json lives).

Production automation, credentials, signing continuity, and operator validation are documented in release/README.md. Publication is disabled until explicitly configured and enabled.

Docs

bun run docs:dev       # local dev server
bun run docs:build     # static build → docs/.vitepress/dist
bun run docs:preview   # preview the build

See docs/README.md for more.

About

A mobile Cashu wallet

Topics

Resources

Stars

24 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages