Account Portal Routes

This project now uses a dedicated Node.js customer portal UI (not Hugo-rendered app pages) served by the provisioning API.

UI routes (served by provisioning API)

  • /
  • /overview
  • /billing
  • /exports
  • /security

All routes render the same shell and hydrate client-side sections based on path.

Auth and account API routes

  • POST /api/account/auth/start
    • starts auth flow
    • in development, can bypass magic link for DEV_BYPASS_EMAIL
  • GET /api/account/auth/debug
    • development-only diagnostics for bypass/account matching
  • POST /api/account/auth/verify
    • verifies magic link token and creates session cookie
  • POST /api/account/auth/logout
    • revokes session and clears cookie
  • GET /api/account/me
    • authenticated account + tenant + exports payload
  • GET /api/account/overview
    • tenant + provisioning details + tenant events timeline
  • GET /api/account/billing
    • billing/plan lifecycle details + Stripe subscription/invoice snapshot when configured
  • GET /api/account/exports
    • export history payload for exports screen
  • GET /api/account/security
    • auth and session metadata + account audit events for security screen
  • POST /api/billing/portal
    • authenticated Stripe customer portal session creation

Notes

  • Marketing page /account/ in Hugo links users into the dedicated account subdomain portal.
  • Internal/admin tooling remains separate from this customer-facing portal.
  • Customers download export files from GooseHub tenant-hosted links sent by email (not from control-plane routes).