Add the dist/migrate.js entrypoint the Helm job already invoked and point Compose at the same runner, so one implementation applies packages/server/migrations in both paths. Rewrite the console README to the standalone Docker build it actually uses and fix the chart description. Claude-Session: https://claude.ai/code/session_01Agoc9bRVE9KL7mmWtey9Vq
133 lines
5.3 KiB
Markdown
133 lines
5.3 KiB
Markdown
# Elydora Console
|
|
|
|
Web dashboard for the Elydora Responsibility Protocol. Provides agent management, operation inspection, epoch visualization, audit log querying, and compliance export tools.
|
|
|
|
## Tech Stack
|
|
|
|
- **Framework:** Next.js 16.1 (App Router)
|
|
- **Language:** TypeScript 5.7
|
|
- **UI:** React 19, Tailwind CSS 4
|
|
- **Data Fetching:** SWR 2.3
|
|
- **i18n:** i18next with English and Simplified Chinese
|
|
- **Deployment:** Docker image running the Next.js standalone server
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
src/
|
|
├── app/
|
|
│ ├── layout.tsx # Root layout with AppShell
|
|
│ ├── page.tsx # Dashboard: stats, recent operations, quick actions
|
|
│ ├── globals.css # Theme variables, global styles
|
|
│ ├── agents/
|
|
│ │ ├── page.tsx # Agent list, search, registration
|
|
│ │ └── [agent_id]/page.tsx # Agent details, keys, freeze/unfreeze
|
|
│ ├── operations/
|
|
│ │ ├── page.tsx # Operations log with filtering
|
|
│ │ └── [operation_id]/page.tsx # Operation details and verification
|
|
│ ├── epochs/
|
|
│ │ ├── page.tsx # Epoch list with root hashes
|
|
│ │ └── [epoch_id]/page.tsx # Epoch details, Merkle proof visualization
|
|
│ ├── exports/
|
|
│ │ └── page.tsx # Create and download compliance exports
|
|
│ ├── audit/
|
|
│ │ └── page.tsx # Audit log query builder
|
|
│ ├── login/page.tsx # Login form
|
|
│ ├── register/page.tsx # Registration form
|
|
│ ├── settings/ # Organization settings
|
|
│ ├── global-error.tsx # Root error boundary
|
|
│ └── jwks/page.tsx # Public key display
|
|
├── components/
|
|
│ ├── AppShell.tsx # Main layout wrapper with sidebar
|
|
│ ├── AgentDetailClient.tsx # Agent info and key management
|
|
│ ├── AgentRegistrationForm.tsx # Register new agent form
|
|
│ ├── OperationDetailClient.tsx # Operation inspection and verification
|
|
│ ├── OperationDetailCard.tsx # Operation data display
|
|
│ ├── EpochDetailClient.tsx # Epoch proof and verification
|
|
│ ├── ChainVisualization.tsx # Merkle chain visualization
|
|
│ ├── VerificationChecklist.tsx # Proof verification UI
|
|
│ ├── I18nProvider.tsx # Locale provider
|
|
│ ├── agent-registration/ # Registration flow components
|
|
│ └── ui/
|
|
│ ├── PageHeader.tsx # Page title and breadcrumbs
|
|
│ ├── DataTable.tsx # Sortable, paginated table
|
|
│ ├── Modal.tsx # Dialog component
|
|
│ ├── SearchInput.tsx # Search/filter input
|
|
│ ├── StatusBadge.tsx # Status indicator
|
|
│ ├── CopyButton.tsx # Copy-to-clipboard
|
|
│ ├── LanguageDropdown.tsx # Locale switcher
|
|
│ └── Sidebar.tsx # Navigation sidebar
|
|
├── features/
|
|
│ └── agent-registration/ # Install instructions and credential handling
|
|
├── i18n/ # en and zh message catalogs
|
|
├── lib/
|
|
│ ├── api.ts # Typed REST client for all endpoints
|
|
│ ├── auth.tsx # Auth context and hooks
|
|
│ └── hooks.ts # SWR data-fetching hooks
|
|
└── shared/ # Shared types (@elydora/shared)
|
|
e2e/ # Playwright specs
|
|
```
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- Node.js 18+
|
|
|
|
### Installation
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
### Environment
|
|
|
|
| Variable | Purpose | Default |
|
|
|----------|---------|---------|
|
|
| `NEXT_PUBLIC_API_BASE_URL` | Backend API URL | `http://localhost:8787` |
|
|
|
|
### Development
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
Runs at `http://localhost:3000` with Turbopack.
|
|
|
|
### Build
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
Produces a Next.js standalone server in `.next/standalone`.
|
|
|
|
### Deployment
|
|
|
|
The root `docker-compose.yml` builds this package with `packages/console/Dockerfile` and serves it on port 3000. The image runs `node server.js` from the standalone output.
|
|
|
|
### Checks
|
|
|
|
```bash
|
|
npm run typecheck # tsc --noEmit
|
|
npm run test:e2e # Playwright specs in e2e/
|
|
```
|
|
|
|
## Pages
|
|
|
|
| Path | Description |
|
|
|------|-------------|
|
|
| `/` | Dashboard with stats, recent operations, and quick actions |
|
|
| `/agents` | List, search, and register agents |
|
|
| `/agents/[agent_id]` | Agent details, key management, freeze/unfreeze |
|
|
| `/operations` | Browse operations with agent and type filters |
|
|
| `/operations/[operation_id]` | Operation details, chain hash verification |
|
|
| `/epochs` | List epochs with root hashes and leaf counts |
|
|
| `/epochs/[epoch_id]` | Epoch details with Merkle proof visualization |
|
|
| `/exports` | Create and download compliance exports (JSON/PDF) |
|
|
| `/audit` | Query builder for audit log with time range and agent filters |
|
|
| `/login` | Login |
|
|
| `/register` | Register account and organization |
|
|
| `/jwks` | Display server public keys in JWK format |
|
|
| `/settings` | Organization settings |
|