Security

Engineered with the boundaries of a regulated product in mind.

AtlasWallet separates authentication from financial authority. The frontend authenticates sessions and renders state โ€” it never writes authoritative balances, never holds provider secrets, and never fabricates success.

Session-only authentication

Supabase Auth handles authentication and session management. Financial state never lives in the frontend database โ€” Supabase is for auth/session only.

The AtlasWallet Backend API at api.atlaswallet.org is the single source of truth for account/wallet/fee/quote/transaction/investment operations. The frontend calls it over HTTPS with the Supabase bearer token.

No secret leakage

  • Only browser-safe NEXT_PUBLIC Supabase values are allowed in frontend environment
  • No DATABASE_URL, DIRECT_URL or service-role keys
  • No provider API secrets or crypto private keys
  • No backend policy bypass from the frontend

Capability-aware operations

Every operation respects effective capabilities. Requested vs effective capabilities are distinct โ€” requested-but-not-effective stays visible but soft-gated, never fabricated as available.

Unavailable operations never fabricate success. Provider maintenance surfaces as a neutral retryable state, not as an error.

Audit & error handling

  • Mutating operations carry an X-Request-ID
  • Errors are normalized with retriable signals
  • Bearer tokens and PII are never logged
  • One refresh attempt on 401, then login redirect
  • AbortController and timeouts on every request

Accessibility & performance

AtlasWallet is built toward WCAG 2.2 AA โ€” keyboard support, visible focus, ARIA for icon buttons, chart text alternatives, not-color-only status, mobile touch targets, and prefers-reduced-motion.

Performance targets: LCP under 2.5s, CLS under 0.1, INP under 200ms. We use next/image, lazy-load below-the-fold content, code-split app areas, and avoid heavy third parties.