gadget-bot / gadget-bot/gadget

Admin Web UI Dashboard

Open
#69 0 comments 1 reaction 0 assignees View on GitHub
enhancement
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.