Solstice
Credit-only white-label document signing — self-serve orgs, a live Firma signing integration, and an encrypted secrets vault in one monorepo.
Solstice (rebranded from the "Nah" working name this repo still carries internally) is a $0.50-flat-per-document signing platform: a credit-only, white-label surface for firms that want their own brand on the signing workflow without per-seat fees. One monorepo ships a Go backend, a SvelteKit portal + super-admin, and the public marketing site. The architecture's hard rule is that the backend is the only process that will ever hold privileged upstream keys — an encrypted secrets vault with role-based access and rotation tooling backs it. Firma is now wired in for real: per-org signing workspaces provision on demand and a signed webhook receiver verifies, spools, and dispatches events. Orgs are self-serve — sign up, verify by email, invite teammates, switch between organizations — rather than admin-provisioned only. Deploys are atomic symlink swaps on a pull-mode server.
- Go
- SQLite
- SvelteKit
- Svelte 5
- TypeScript
- Tailwind CSS
- Vite
- pnpm
- Playwright
- Apache
Solstice (this repo's working name is still "Nah") is a credit-only, white-label document signing platform — 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; the upstream signing provider keeps the cryptographic side.
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 platform.
The monorepo, in four drawers
backend/— Go API, single static binary on CGO-free SQLite. The only process that will ever talk to upstream signing, billing, or AI providers; the only thing that holds privileged keys.web/— SvelteKit bundle shared by the customer/portaland the super/admin.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 — and a 2026 cleanup pass brought every file back under budget rather than letting the rule rot.
What ships today
The portal and super-admin run on the production hostname:
self-serve org signup with email verification, teammate
invites, and org switching; credit grants and a per-tenant
credits ledger; document audit; white-label configuration; and
per-tenant branding. Behind /admin sits an
encrypted secrets vault with role-based access,
key-rotation tooling, and a written recovery runbook. The Firma
signing integration is live, not just wired for later: each org
gets its own signing workspace provisioned on demand, and a
signed webhook receiver verifies, spools, and dispatches events
with replay protection and an admin re-dispatch console. Credit
top-up billing (Stripe) is still admin-granted rather than
self-serve. A public /stack page publishes the
deployed commit and build time straight from the server, so "is
prod current with the repo?" is a URL, not a question. Desktop
shells and the AI layer (designed bring-your-own-key) remain on
the roadmap.
Work with us
Project briefs & proposals.
Downloadable, branded documents that explain the project end-to-end and how to bid on it. Built for contractors deciding whether and how to take this on.
Complete this repository
Continuation track — take the existing, production-deployed codebase and finish it. Full scope, the secure two-server workflow, and how to bid.
Download PDF PDFGreenfield this repository
Clean-build track — build the same product your way against fixed requirements. Stack-flexible; we reserve the right to reject.
Download PDFStraight 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.
- Prod: https://solstice.nexus
- Repo: github.com/saintpetejackboy/nah (private)
- Bootstrap spec: BOOTSTRAP.md
- Agent collab: AGENTS.md
- Current state + next steps: HANDOFF.md
- Open questions: QUESTIONS.md
- ADR log: DECISIONS.md
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 shelldesktop/— planned Electron wrapper aroundweb/build(Phase 5; not scaffolded yet)marketing/— public site, static HTMLops/— server-side deploy/rollback/migrate scripts + Apache vhosttests/e2e/— Playwrightdocs/agent/— prompts and notes for future agents
Hard rules
See BOOTSTRAP.md §1. The short version:
- No destructive git, no destructive SQL, no secrets in repo.
- Server is pull-mode after initial setup. Deploys are atomic symlink swaps.
- Frontend never holds privileged keys — backend is the only thing that talks to Firma / Stripe / OpenRouter / Postmark.
- Files ≤150 lines, functions ≤30 lines.
- 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.