Files
ECS-FullStack/checklist.md

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-twitchusers to 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-creates servers, invites, users)
  • Legacy encrypted backend/db.json retained (migration planned)
  • Migration script: import backend/db.json into Postgres (planned)
  • Schema: live notification settings stored in server settings (via liveNotifications JSON)

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_BASE to backend URL before build
  • Tailscale: bind backend to your tailnet IP (100.x.y.z) and set DATABASE_URL to a Postgres reachable over the tailnet

Notes:

  • backend/.env.example and frontend/.env.example are templates — copy to .env and 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 BackendContext to 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.js and refactored some modules to use it
        • Created frontend/src/components/common and frontend/src/components/server
        • Moved ConfirmDialog and MaintenancePage to components/common
        • Moved ServerSettings and HelpPage to components/server
        • Remove legacy top-level duplicate files (archival recommended)