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).
| Month | Phase | Status | Key Deliverables |
|---|---|---|---|
| 1 | Foundation | 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 |
| 2 | Foundation | CompletedSee report → | GitHub Actions CI/CD pipeline, security scanning + coverage thresholds, Vercel config, NIP-98 → JWT session auth migration |
| 3 | Enhancement | 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 |
| 4 | Enhancement | 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 |
| 5 | Expansion | 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) |
| 6 | Expansion | Planned | NWC 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 |
| 7 | Monetization & Communication | Planned | Subscription 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) |
| 8 | Intelligence | Planned | AI 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.latcommunity lookup, debounced username availability, NostrConnect form lawallet.iolanding extracted into its ownlawallet-landingrepo- 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-triggerbranch (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:
- Card System Completion — Android BoltCard login app,
simple-card-managerrebrand, end-to-end issue → activate → pair → pay flow. - 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/reacthooks 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 bridge —
username+inbox@domain.comMX 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.comLN 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.
| Area | State |
|---|---|
| API Routes | 47 handlers, all wrapped with error handling, Zod validation, and unified auth |
| Admin Dashboard | Full Figma rebuild — Home / Users / Activity / Cards / Designs / Settings, fully responsive |
| Wallet UI | Onboarding, Send / Receive / Scan, offline cache, NWC setup, settings |
| Landing | Split into the lawallet-landing repo; this app redirects / there |
| Auth Backend | NIP-98 → JWT exchange, dual-method (Authorization: Nostr or Bearer), RBAC with 4 roles, maintenance mode |
| Testing | 578 tests across 50 files (Vitest + MSW + happy-dom), CI-enforced coverage thresholds; Playwright E2E in M5 |
| Database | 8 models — User, Card, CardDesign, Ntag424, LightningAddress, AlbySubAccount, Settings, Invoice |
| Lightning Address | LUD-12 (payer comments) and LUD-21 (verification) live; LUD-16 alias / NWC modes; LUD-22 plumbed in M5 |
| NFC Cards | Full NTAG424 encryption, scan, write, OTC activation, BoltCard QR pairing |
| Alby Integration | Sub-account management via @getalby/sdk v7 |
| Developer Surface | OpenAPI 3.1 spec + Scalar Playground at beta.lawallet.io/api-docs; TS SDK + React Hooks |
| Monorepo | pnpm workspaces + Turborepo — 3 apps (web, docs, listener) + 3 packages (sdk, shared, openapi) |
Lightning Address Compliance Timeline
| Feature | Standard | Month | Status |
|---|---|---|---|
| Address management (admin) | — | 3 | Completed |
| User dashboard + npub | — | 4 | Completed |
| Payer comments | LUD-12 | 4 | Completed |
| Verify endpoint | LUD-21 | 4 | Completed |
| Address redirect | — | 5 | In Progress |
| Base Lightning address (full) | LUD-16 | 6 | Planned |
| Webhooks | LUD-22 | 6 | Planned |
| Zaps | NIP-57 | 6 | Planned |
| Courtesy NWC (Alby, LNBits, etc.) | — | 6 | Planned |
Containers Timeline
| Month | Container | Status | Service |
|---|---|---|---|
| 4 | lawallet-listener | Stub in apps/listener/ (echo) | NWC Payment Listener — added during the monorepo migration |
| 5 | lawallet-listener | M5: Lite (transport-only) | NWC relay monitoring + LUD-22 webhook plumbing |
| 6 | lawallet-nwc-proxy | M6: Lite | Courtesy 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).