LaWalletdocs
Roadmap

Roadmap

8-month development timeline for LaWallet NWC, funded by OpenSats (Fifteenth Wave, Dec 2025 – Sep 2026).

8-Month Development Timeline

All eight months are covered by the OpenSats grant (Fifteenth Wave, Dec 2025 – Sep 2026). The phases progress from foundation (M1–M2) through enhancement (M3–M4) and expansion (M5–M6) to monetization and intelligence (M7–M8).

MonthPhaseStatusKey Deliverables
1Foundation CompletedSee report →Vitest + MSW + 154 integration tests, error hierarchy, Zod env + input validation, Pino logging, JWT auth + RBAC (4 roles), rate limiting + request limits, Next.js 16 + ESLint 9
2Foundation CompletedSee report →GitHub Actions CI/CD pipeline, security scanning + coverage thresholds, Vercel config, NIP-98 → JWT session auth migration
3Enhancement CompletedSee report →Figma-based admin dashboard rebuild (Home/Users/Activity/Cards/Settings + shadcn/ui), responsive/mobile layout, multi-tab Settings (Branding/Wallet/Infrastructure), 8-preset theme system, branding image uploads, domain claim onboarding wizard, lawallet.io landing repo split, v0.9.0 release
4Enhancement CompletedSee report →Monorepo migration (pnpm + Turborepo, 3 apps + 3 packages), full Admin Dashboard E2E (Cards/Designs + BoltCard QR/NFC), schema rewrite (LightningAddress 1→N + NWCConnection, IDLE/ALIAS/NWC modes), user-facing Wallet (onboarding, Send/Receive/Scan, offline cache), system-wide Activity Log + SSE, LUD-12/16/21 compliance, OpenAPI 3.1 + Scalar Playground, docs site overhaul, v0.10.0 release
5Expansion In Progress📊 Presentation →Remote Wallets first (named RemoteWallet model + NWC driver; LND / CLN / BTCPay deferred), then Card System Apps (B.0 QR-based JWT login → card-installer Android → simple-card-manager rewrite drives the E2E → end-user "Activate Card" flow with SIMPLE / MASTER cards + ONE_TIME / FOREVER QRs), Platform Polish (full NIP-05, relay picker, user data cache, onboarding v2 with infra-aware .well-known rewrites, customizable domain landing, admin home redesign, dashboard cache, PWA, bug fixes)
6Expansion PlannedNWC Payment Listener (lite, transport-only) + LUD-22 plumbing, NWC Proxy Lite settlement layer, full LUD-16/21/22 + NIP-57 closeout, @lawallet-nwc/react extraction, multi-email (Resend), Nostr scheduler, full wallet settings, deploy targets (Vercel/Netlify/Umbrel/Start9/Docker), threat model, SDK + hooks finalization
7Monetization & Communication PlannedSubscription Manager (paid tiers, monthly/one-time), perks (vanity LN address, email-to-Nostr bridge, sat allowance), Nostr Chat DMs (NIP-17/44), operator → user broadcast, i18n (en/es/pt-BR)
8Intelligence PlannedAI Agents with own LN address + Nostr identity + NWC wallet (one-click spawn, dashboard funding, scheduled tasks), Vercel AI Gateway router, sat-metered runs with subscriber discounts, Mode A (nsec) + Mode B (NIP-46/Amber) signing

Phase 1: Foundation (Months 1-2)

Month 1: Backend Infrastructure + Testing (COMPLETED)

See the Month 1 progress report. Exceeded original scope. Delivered 90% of the backend infrastructure:

  • Vitest + MSW + 154 integration tests covering all 32 routes
  • Error handling (ApiError hierarchy + withErrorHandling)
  • Configuration (Zod env validation + AppConfig)
  • Pino structured logging (originally Month 2)
  • JWT auth + RBAC with 4 roles (originally Month 3)
  • Security middleware (rate limiting, request limits, maintenance mode)
  • Zod validation for all API inputs
  • Next.js 16 + ESLint 9 upgrade

Month 2: CI/CD + Auth Flow Upgrade (COMPLETED)

Per the Months 2–3 progress report:

  • GitHub Actions CI/CD pipeline with build integration
  • Security scanning in CI + coverage thresholds + test exclusion cleanup
  • Vercel configuration with framework detection and security headers
  • NIP-98 → JWT session authentication migration (PR #184)
  • Aligned frontend login behavior with the new JWT-based admin experience
  • TypeScript Client SDK + React Hooks package + Playwright E2E pulled forward to later phases

Phase 2: Enhancement (Months 3-4)

Month 3: Figma Admin Dashboard + Onboarding + Landing Split (COMPLETED)

Per the Months 2–3 progress report — the project pulled forward parts of Month 4 (white-label, branding, customizable landing) during this period:

  • Frontend stripped down and rebuilt around the new Figma direction
  • New Home, Users, Activity, Cards, and Settings experiences
  • Full-page login flow + responsive/mobile layout support
  • Component preview environment for fast UI iteration
  • shadcn/ui adopted as the base component system
  • Multi-tab Settings (Branding / Wallet / Infrastructure) with 8 theme presets
  • Image uploads for logotype/isotype branding + border radius presets
  • Setup banner + domain configuration UX
  • Onboarding wizard with veintiuno.lat community lookup, debounced username availability, NostrConnect form
  • lawallet.io landing extracted into its own lawallet-landing repo
  • Released v0.9.0

Month 4: User Wallet + Admin Dashboard E2E + Schema Rewrite (COMPLETED)

See the Month 4 progress report. The largest release window in the project's history. Original scope (User Dashboard, Courtesy NWC Proxy, wallet polish, white-label) was significantly exceeded:

  • Monorepo migration
  • Brand-new user-facing wallet
  • Complete admin dashboard build-out
  • Schema rewrite enabling per-address NWC routing
  • System-wide activity log with real-time SSE
  • Full LUD-12 / LUD-16 / LUD-21 compliance via the mode-aware resolver
  • OpenAPI 3.1 spec with a live Scalar playground
  • Public docs site overhaul
  • Courtesy NWC reframed mid-month as a Bun-based NWC notification service on the nostr-trigger branch (feature-rich but not yet merged); a lite version lands in Month 6 as the LUD-16/21/22/NIP-57 settlement layer

Phase 3: Expansion (Months 5-6)

Month 5: Card System + Platform Polish + NWC Listener Lite

Splits into two themes:

  1. Card System Completion — Android BoltCard login app, simple-card-manager rebrand, end-to-end issue → activate → pair → pay flow.
  2. Platform Polish & Integrations — full NIP-05, relay picker, user data cache, onboarding v2 (Cloudflare detection), NWC Listener Lite (transport-only) merged from nostr-trigger, LUD-22 webhook plumbing, @lawallet-nwc/react hooks package, multi-email (Resend), dashboard cache, PWA wallet, Follower Capture Endpoint (formerly "Subscription Manager (admin)"), bug fixes, landing CRM swap.

Full LUD-16/21/22 + NIP-57 compliance moves to Month 6 via the NWC Proxy Lite settlement layer.

Month 6: NWC Proxy Lite + Lightning Compliance + Deployment

The headline deliverable is the NWC Proxy Lite — built on top of the M5 listener, it becomes the LUD-16 settlement layer and ships full LUD-16 / LUD-21 / LUD-22 / NIP-57 compliance.

  • NWC Proxy Lite (settlement layer, single-tenant)
  • Full LUD-16 / LUD-21 / LUD-22 / NIP-57 closeout
  • Nostr scheduler (pre-sign + cron-dispatch)
  • Full Wallet settings (theme, notifications, currency, contacts, privacy, NWC management)
  • Deploy targets: Vercel, Netlify, Umbrel, Start9, Docker Compose
  • Threat model + crypto-operations doc, security audit prep
  • SDK + hooks finalization

Phase 4: Monetization & Intelligence (Months 7-8)

Month 7: Monetization Plane (Subscription Manager + Nostr Chat)

Operators can charge users in sats for tier access; users can talk to each other.

  • Subscription Manager — operator-defined plans with monthly or one-time pricing in sats
  • Perks (P0): vanity Lightning address, email-to-Nostr bridge, sat allowance credited monthly
  • Nostr Chat — DMs (NIP-17 gift-wrapped over NIP-44, NIP-04 fallback) with relay-only message storage
  • Email-to-Nostr bridgeusername+inbox@domain.com MX route delivered as NIP-44 DMs
  • Operator → user broadcast via instance nsec, segmented by tier
  • Daily expiry cron runs in apps/listener
  • M5 rename: legacy "Subscription Manager (admin)" follower-capture endpoint becomes "Follower Capture Endpoint"

See Month 7.

Month 8: Intelligence Plane (AI Agents)

Operators spawn AI agents with full identity and a wallet; users pay in sats with subscriber discounts.

  • One-click agent spawn from the dashboard — generates Nostr keypair, provisions <slug>@domain.com LN address, creates an NWC wallet via the M6 Proxy
  • Per-agent funding — operator clicks "Fund Agent", pays an invoice from their wallet, agent balance updates
  • Identity Mode A (server-side encrypted nsec, autonomous) and Mode B (NIP-46 / Amber bunker URI, delegated)
  • Heartbeats / scheduled tasks — cron-driven POST, REPLY_TO_MENTIONS, ZAP_LIST, CUSTOM_PROMPT
  • Sat-metered runs — debits the M7 user allowance first; falls back to a 402-style invoice from the agent's wallet
  • Reference agents: Drafter + Summarizer + custom OperatorBot
  • Vercel AI SDK + AI Gateway as the model router (no new container)

See Month 8.


Beyond M8

Group chat threads (NIP-29), operator-hosted paid Nostr relay (strfry/khatru), Cashu eCash mint, and the community plugin family (Events, Badges, Commerce) live in Vision under "Beyond M8 / Community Vision".


Current State (as of Month 4)

Snapshot of what has shipped so far. This grows each month as deliverables land.

AreaState
API Routes47 handlers, all wrapped with error handling, Zod validation, and unified auth
Admin DashboardFull Figma rebuild — Home / Users / Activity / Cards / Designs / Settings, fully responsive
Wallet UIOnboarding, Send / Receive / Scan, offline cache, NWC setup, settings
LandingSplit into the lawallet-landing repo; this app redirects / there
Auth BackendNIP-98 → JWT exchange, dual-method (Authorization: Nostr or Bearer), RBAC with 4 roles, maintenance mode
Testing578 tests across 50 files (Vitest + MSW + happy-dom), CI-enforced coverage thresholds; Playwright E2E in M5
Database8 models — User, Card, CardDesign, Ntag424, LightningAddress, AlbySubAccount, Settings, Invoice
Lightning AddressLUD-12 (payer comments) and LUD-21 (verification) live; LUD-16 alias / NWC modes; LUD-22 plumbed in M5
NFC CardsFull NTAG424 encryption, scan, write, OTC activation, BoltCard QR pairing
Alby IntegrationSub-account management via @getalby/sdk v7
Developer SurfaceOpenAPI 3.1 spec + Scalar Playground at beta.lawallet.io/api-docs; TS SDK + React Hooks
Monorepopnpm workspaces + Turborepo — 3 apps (web, docs, listener) + 3 packages (sdk, shared, openapi)

Lightning Address Compliance Timeline

FeatureStandardMonthStatus
Address management (admin)3 Completed
User dashboard + npub4 Completed
Payer commentsLUD-124 Completed
Verify endpointLUD-214 Completed
Address redirect5 In Progress
Base Lightning address (full)LUD-166 Planned
WebhooksLUD-226 Planned
ZapsNIP-576 Planned
Courtesy NWC (Alby, LNBits, etc.)6 Planned

Containers Timeline

MonthContainerStatusService
4lawallet-listenerStub in apps/listener/ (echo)NWC Payment Listener — added during the monorepo migration
5lawallet-listenerM5: Lite (transport-only)NWC relay monitoring + LUD-22 webhook plumbing
6lawallet-nwc-proxyM6: LiteCourtesy NWC settlement layer for external providers

M7 and M8 add no new containers. The email-to-Nostr bridge (M7) and the agent scheduler / heartbeat ticker (M8) extend apps/listener. Agent inference (M8) runs inside apps/web route handlers via the Vercel AI SDK. Container count stays at 3 (web, listener, nwc-proxy).

On this page