Skip to content

feat: improve UI by migrating to Next.js static export #364

@manojbajaj95

Description

@manojbajaj95

Summary

Replace the current CLI-only interface with a Next.js app compiled as a static export, served locally by the authsome daemon. This gives users a browser-based UI for managing identities, vaults, providers, and connections — without requiring a hosted backend.

Motivation

The CLI is powerful but hard to use for non-technical users and difficult to navigate when managing many providers or team vaults. A local Next.js static export solves this by:

  • Providing a visual dashboard for connections, provider status, and audit logs.
  • Making onboarding (init, login, invite) more guided and approachable.
  • Shipping as a zero-dependency static bundle — no Node.js runtime needed at runtime; the daemon serves the files directly.

Proposed Architecture

  • packages/ui — Next.js app with output: 'export' (generates plain HTML/CSS/JS under out/).
  • The daemon gains a static file handler that serves out/ at http://localhost:7998/ui.
  • All data fetching in the UI calls the existing daemon REST API (same endpoints the CLI uses) — no new backend surface.
  • authsome ui open command launches the default browser at the local UI URL.

Work Items

  • Scaffold packages/ui with Next.js + output: 'export' config
  • Add a static-file route to the daemon (GET /ui/*)
  • Build core pages: Dashboard, Providers, Connections, Vault, Audit Log, Settings
  • Add authsome ui open CLI command
  • Wire build output into the Python package so pip install authsome includes the UI bundle
  • CI: add a Next.js build step and bundle-size check
  • Update docs with UI usage guide

Design Principles

  • Static export only — no SSR, no separate Node server.
  • UI is a thin client; all business logic stays in the daemon.
  • Progressively enhances the CLI — every UI action must also be doable via CLI.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions