Work nah
platform

Nah

Credit-only white-label wrapper over Firma.dev signing — desktop, web portal, admin, marketing, all one monorepo.

Nah is a $0.50-flat-per-document signing platform that wraps the Firma.dev signing API in a credit-only, white-label surface for firms that want their own brand on the workflow without per-seat fees. One monorepo ships an Electron desktop app, a SvelteKit portal + admin, a Go backend, and the public marketing site — backend is the only thing that touches Firma, Stripe, OpenRouter, or Postmark, so the frontend never holds privileged keys. Deploys are atomic symlink swaps on a pull-mode server.

Last updateApr 26, 2026 PrimaryGo
  • Go
  • SvelteKit
  • TypeScript
  • Electron
  • Firma.dev
  • Stripe
  • Postmark
  • OpenRouter
  • Playwright
  • Apache
Nah — Credit-only white-label wrapper over Firma.dev signing — desktop, web portal, admin, marketing, all one monorepo.

Nah is a credit-only, white-label wrapper over the Firma.dev signing API — a desktop app, a web portal, a super-admin, and a public marketing site, all in one monorepo. $0.50 flat per document, no per-seat fees, no surprise overages. The platform owner keeps the brand; the user keeps the workflow; Firma keeps the cryptographic side of the signing.

Why credit-only?

Per-seat e-signature pricing punishes intermittent users — every paralegal who signs three documents a quarter pays the same $40/mo as the partner who signs 200. Credit-only flips that: load credits when you need them, pay flat per document, no recurring bill, no contract review. The pricing model is the point of the wrapper.

The monorepo, in five drawers

  • backend/ — Go API, single static binary. The only process that talks to Firma, Stripe, OpenRouter, Postmark; the only thing that holds privileged keys.
  • web/ — SvelteKit bundle shared by the customer /portal, the super /admin, and the Electron shell.
  • desktop/ — Electron wrapper around the SvelteKit build for firms that prefer a native shell on the operator side.
  • marketing/ — public site, static HTML, deployed independently of the app surface.
  • ops/ + tests/e2e/ — server-side deploy/rollback/migrate scripts, Apache vhost, Playwright end-to-end suite.

The hard rules

  • No destructive git, no destructive SQL, no secrets in repo.
  • Server is pull-mode after initial setup. Deploys are atomic symlink swaps, never edits in place.
  • Frontend never holds privileged keys — backend is the only thing that talks to upstream services.
  • Files ≤150 lines, functions ≤30 lines, by policy.
  • Bring-your-own-key supported on the AI side — firms can wire their own OpenRouter / model provider and cut their AI cost roughly in half.

What ships today

Windows installer is live; macOS is in build. The web portal runs on the production hostname and the admin behind it handles credit grants, document audit, white-label configuration, and per-tenant branding. The marketing surface is the entry point you're reading the description from.

Straight from the source

The project's own README.

Rendered in place — every link, image, and code block carried over from the repo. The page below is what a contributor would see opening the project for the first time.

Nah

Credit-only, white-labeled wrapper over the Firma.dev signing API. Desktop (Electron), web portal, public marketing site, and super-admin in one monorepo. $0.50 flat per document.

Quick start

just doctor         # verify toolchain
just dev            # run backend + web concurrently
just test           # backend unit + vitest + playwright
just lint           # gofmt + eslint + svelte-check

See just --list for the full recipe catalog.

Layout

  • backend/ — Go API (single static binary)
  • web/ — SvelteKit bundle shared by /portal, /admin, and the Electron shell
  • desktop/ — Electron wrapper around web/build
  • marketing/ — public site, static HTML
  • ops/ — server-side deploy/rollback/migrate scripts + Apache vhost
  • tests/e2e/ — Playwright
  • docs/agent/ — prompts and notes for future agents

Hard rules

See BOOTSTRAP.md §1. The short version:

  1. No destructive git, no destructive SQL, no secrets in repo.
  2. Server is pull-mode after initial setup. Deploys are atomic symlink swaps.
  3. Frontend never holds privileged keys — backend is the only thing that talks to Firma / Stripe / OpenRouter / Postmark.
  4. Files ≤150 lines, functions ≤30 lines.
  5. Ask before inventing — add to QUESTIONS.md and pause the thread.

Build something like this

Want a tool like this for your shop?

We've shipped this kind of thing before. Twenty-minute intro call, no slides.