meos-dashboard/README.md

130 lines
3.5 KiB
Markdown

# MeOS Dashboard
A web UI for the MeOS platform — wraps Forgejo API, vault browsing, and agent monitoring into one view.
## Architecture
```
Browser → nginx (n97) → MeOS Dashboard (Next.js on port 3001)
├── Forgejo API (repos, PRs, CI status)
├── Filesystem API (vault browsing via server-side reader)
└── OpenClaw Gateway API (agent status, memory)
```
## Stack
- **Framework:** Next.js 14 (App Router)
- **Styling:** Tailwind CSS (dark mode default, light mode toggle)
- **Deployment:** Node.js systemd service, reverse-proxied by nginx
## Quick Start
### 1. Install dependencies
```bash
cd ~/vault/meos/dashboard
npm install
```
### 2. Configure environment
```bash
cp .env.local.example .env.local
```
Edit `.env.local` and add your Forgejo API token:
```
FORGEJO_API_URL=http://192.168.168.221:3000/api/v1
FORGEJO_TOKEN=your-token-here
VAULT_PATH=/home/sscoble/vault
OPENCLAW_API_URL=http://localhost:7477
```
### 3. Run in development mode
```bash
cd ~/vault/meos/dashboard
npm run dev
```
Or use the startup script:
```bash
~/vault/meos/start-dashboard.sh
```
Open **http://n97:3001** (or http://192.168.168.97:3001).
### 4. Build for production
```bash
cd ~/vault/meos/dashboard
npm run build
npm run start
```
### 5. Install as a systemd service (production)
```bash
# First build the production bundle
cd ~/vault/meos/dashboard
npm run build
# Then install the service
sudo cp ~/vault/meos/meos-dashboard.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable meos-dashboard
sudo systemctl start meos-dashboard
```
Check status:
```bash
sudo systemctl status meos-dashboard
```
## Routes
| Route | Description |
|---|---|
| `/` | Dashboard overview — repos, recent zettels, agent status, quick actions |
| `/vault` | Vault browser — file tree, zettel viewer, search, graph view |
| `/vault/[slug]` | Direct zettel link |
| `/presentations` | Presentation repos and CI status |
| `/agents` | Department health, gateway status, memory info |
| `/pipeline` | CI/CD runs and recent commits |
## API Routes (internal, used by the frontend)
| Route | Description |
|---|---|
| `GET /api/forgejo/repos` | List all repos |
| `GET /api/forgejo/commits` | Recent commits across repos |
| `GET /api/forgejo/ci-runs` | CI/CD workflow runs |
| `GET /api/vault/list` | List all vault .md files |
| `GET /api/vault/read?path=` | Read a zettel |
| `GET /api/vault/search?q=` | Search zettel content |
| `GET /api/vault/recent` | Last 5 modified zettels |
| `GET /api/vault/graph` | [[wiki-link]] graph JSON |
| `GET /api/agent/status` | Gateway health check |
| `GET /api/agent/departments` | Department statuses |
| `GET /api/presentations/list` | Presentation repos |
## Architecture Notes
- **No authentication for MVP** — runs on local network only
- **No Docker** — n97 is a low-power NucBoxG5, keep it lean
- **Forgejo API** is local at `192.168.168.221:3000` — proxied through Next.js API routes
- **Vault access** is direct filesystem reads from `~/vault/` — no database needed
- **Port 3001** to avoid conflict with Forgejo on port 3000
## Future Improvements
- [ ] Full D3.js graph visualization for vault wiki-links
- [ ] nginx reverse proxy with HTTPS (Let's Encrypt)
- [ ] Authentication (basic auth or OAuth proxy)
- [ ] Forgejo webhook integration (auto-refresh on push)
- [ ] Real-time agent status via WebSocket
- [ ] Zettel editing and creation from the UI
- [ ] OpenClaw Gateway integration for session management