Sovereign citizen wallet — identity, credentials, documents, money, exams.
Monorepo (pnpm workspaces):
app/— Core PWA shell (Vue 3 + Quasar + Vite + PWA)modules/sdk/— Module interface contract (@attestto/module-sdk)modules/cr-driving/— CR driving exam module (app-module-cr-driving)modules/cr-medical/— CR medical attestation module (app-module-cr-medical)
- Vue 3 + TypeScript
- Quasar Framework (components + dark theme)
- Vite + vite-plugin-pwa
- Pinia (state management)
- Vue Router (with module dynamic route registration)
Modules implement AttesttoModule from @attestto/module-sdk. They:
- Declare required credentials in their manifest
- Register routes dynamically on install
- Push inbox items to the home screen
- Get scoped storage (localStorage namespaced by module ID)
- Are credential-gated: no matching VC in vault = can't install
Colors, spacing, radii defined in app/src/styles/tokens.css. Dark theme only.
| Token | Value | Usage |
|---|---|---|
--bg-base |
#0f1923 | Background |
--bg-card |
#1a1f2e | Cards |
--primary |
#594FD3 | Action buttons |
--success |
#4ade80 | Valid/verified |
--critical |
#ef4444 | Invalid/failed |
- WebAuthn passkey for vault unlock (
app/src/composables/useCrypto.ts) - Ed25519 signing via
@noble/curves— key in IndexedDB, gated behind WebAuthn - AES-256-GCM encrypted vault (
app/src/composables/useEncryptedVault.ts) — not yet wired to vault.ts - SHA-256 hash chain in exam sessions (Web Crypto API)
- Solana anchor via HTTP to attestto-anchor (
app/src/composables/useAnchor.ts)
vue-i18nwithes(Spanish) anden(English) locale files- Default locale:
es, persisted to localStorage - Language toggle in Settings page
- Key views wired: LockScreen, HomePage, SettingsPage, BottomNav
- Remaining views use hardcoded Spanish — see
TODO.md
pnpm dev # Start dev server (app/)
pnpm build # Build PWA (app/)
pnpm test # Run tests (vitest, 251 tests)
pnpm typecheck # Typecheck all packagesGitHub Actions (.github/workflows/ci.yml): install → typecheck → test → build on push/PR to main.
See TODO.md for hardening tasks (encrypted vault wiring, full signature verification, anchor service, i18n coverage, test expansion).
- No Co-Authored-By in commits
- No PII in code or commits
- No strategy/internal docs in public repo
- Blue for action CTAs, green only for state/verified badges
- Spanish UI text (Attestto serves LATAM first)