4.8 KiB
4.8 KiB
Project Checklist (tidy & current)
Below are implemented features and pending items, grouped by area.
Backend
- Express API: OAuth, server settings, channel/role endpoints, leave
- Invite endpoints (GET/POST/DELETE) and invite-token issuance
- Per-command toggles persistence and management
- Config endpoints for welcome/leave and autorole
Frontend
- Login, Dashboard, Server Settings pages
- Login redirects to Dashboard after OAuth and user/guilds are persisted in localStorage
- Dashboard is protected: user must be logged in to view (redirects to login otherwise)
- MUI components, responsive layout, mobile fixes
- Theme switching (persist local) and user settings UI
- Invite UI: create form, list, copy, delete with confirmation
- Commands UI (per-command toggles)
- Live Notifications UI (per-server toggle & config)
- Live Notifications accessible from server page via dropdown and dialog
- Dashboard: channel dropdown and watched-user list added
Discord Bot
- discord.js integration (events and commands)
- Slash commands:
/create-invite,/list-invites,/manage-commands,/help - Bot used by backend to fetch live guild data and manage invites
- Bot reads/writes per-guild command toggles via backend/Postgres
- Backend immediately notifies bot of toggle changes (pushes updated settings to bot cache) so frontend toggles take effect instantly
- New slash command:
/list-twitchusersto list watched Twitch usernames for a guild - Frontend: Confirm dialog and working Delete action for Twitch watched users in Live Notifications
- Live Notifications: bot posts message to configured channel with stream title and link when a watched Twitch user goes live
- Live Notifications: bot posts rich embed to channel when a watched Twitch user goes live (thumbnail, clickable title, bio/description, category/game, viewers, footer with "ehchadservices" and start datetime)
- Live Notifications polling frequency set to 3 seconds for rapid detection (configurable via
TWITCH_POLL_INTERVAL_MS)
- Frontend: show "Watch Live" button next to watched user when they are live (links to Twitch)
Database
- Postgres support via
DATABASE_URL(backend auto-createsservers,invites,users) - Legacy encrypted
backend/db.jsonretained (migration planned) - Migration script: import
backend/db.jsoninto Postgres (planned) - Schema: live notification settings stored in server settings (via
liveNotificationsJSON)
Security & Behavior
- Invite DELETE requires short-lived HMAC token (
x-invite-token) - Frontend confirmation dialog for invite deletion
- Harden invite-token issuance (require OAuth + admin check)
Docs & Deployment
- README and CHANGELOG updated with setup steps and Postgres guidance
- Core env vars:
DATABASE_URL,DISCORD_CLIENT_ID,DISCORD_CLIENT_SECRET,DISCORD_BOT_TOKEN,INVITE_TOKEN_SECRET,ENCRYPTION_KEY,HOST,PORT,CORS_ORIGIN - Frontend: set
REACT_APP_API_BASEto backend URL before build - Tailscale: bind backend to your tailnet IP (100.x.y.z) and set
DATABASE_URLto a Postgres reachable over the tailnet
Notes:
backend/.env.exampleandfrontend/.env.exampleare templates — copy to.envand fill values.- Postgres / pgAdmin: create DB & user, set
DATABASE_URL; backend auto-creates tables on startup.
UI tweaks applied:
-
Server cards: uniform sizes, image cropping, name clamping
-
Mobile spacing and typography adjustments
-
Dashboard action buttons repositioned (Invite/Leave under title)
-
Browser tab now shows
ECS - <Page Name>(e.g., 'ECS - Dashboard') -
Dashboard duplicate title fixed; user settings (avatar/themes) restored via NavBar
-
Maintenance page
-
Frontend displays a maintenance page with a loading indicator when the backend is offline; it polls the backend and reloads UI immediately when the backend is available.
- Global backend health & SSE
- Added
BackendContextto centralize health polling and a single shared EventSource - Pages (including
ServerSettings) use the shared event bus for live updates so the whole site receives changes in real-time - Frontend file re-organization
- Verify guild-scoped SSE payloads include guildId and frontend filters events by guild (in-progress)
- Add debug SSE publish endpoint to help validate real-time flows (done, guarded by DEBUG_SSE)
- Created
frontend/src/lib/api.jsand refactored some modules to use it - Created
frontend/src/components/commonandfrontend/src/components/server - Moved
ConfirmDialogandMaintenancePagetocomponents/common - Moved
ServerSettingsandHelpPagetocomponents/server - Remove legacy top-level duplicate files (archival recommended)
- Created
- Added
- Global backend health & SSE