gadget-bot / gadget-bot/gadget
Admin Web UI Dashboard
- Dominant language
- Go
- Stars
- 2
- Forks
- 2
- Avg merge
- 21d 49m
- Merged PRs (30d)
- 1
Description
## Overview
Add an optional, server-rendered admin web UI to Gadget. The dashboard provides at-a-glance visibility into the bot's registered routes, user/group permissions, and configuration — things that are awkward to inspect via Slack commands alone.
## Design Direction
Inspired by the [Oxide Console](https://console-preview.oxide.computer/projects) aesthetic:
- Clean, information-dense layout
- Dark theme with light/system toggle
- Monospace-influenced typography
- Dense, scannable tables
- Minimal chrome, functional design
Built as a Go `html/template` server-rendered UI — no JS framework, no frontend build step.
## Planned Pages
- **Dashboard** — Overview: route count, user count, group count, bot status
- **Routes** — Table of all registered routes (mention, channel message, slash command) with pattern, description, permissions, priority
- **Groups** — List of groups with member counts, expandable to see members
- **Users** — User list with group memberships
- **Configuration** — Read-only view of current config (env vars, sanitized)
## Architecture
- New `plugins/admin/` package
- Registers HTTP routes under `/admin/` prefix on the existing HTTP server
- Opt-in via `core.EnableAdminUI()` or similar
- Auth via shared secret or global admin session check
- Embedded templates and static assets via `embed.FS`
## Non-Goals (v1)
- No write operations from the UI (read-only dashboard)
- No real-time updates / WebSocket
- No external JS dependencies
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by examining the existing HTTP server and the planned plugins/admin/ package boundary. Implement the opt-in, read-only /admin/ UI using Go html/template with embedded templates and static assets, covering the listed dashboard, routes, groups, users, and configuration views. Done means the pages expose the specified bot information without write operations, real-time updates, or external JavaScript dependencies.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, html
- Domain
- backend, web-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100