Vanilla HTML/CSS/JavaScript frontend (Vite) with client-side routing in src/main.js.
- OAuth login (Fluxer)
- Separate landing/login page and dashboard page
- View guilds and rules
- Create, update, delete rules
- Simple, lightweight UI
- Install dependencies:
npm install - Run locally:
npm run dev - Build for production:
npm run build - Serve built output from
dist/
The dashboard prompts for the backend URL on first load:
- Example:
http://localhost:8000(local dev) - Example:
https://api.example.com(production)
The URL is stored in localStorage for convenience.
src/main.js— vanilla router + page rendering + auth/dashboard behaviorsrc/Styles/— shared stylespublic/— static assets and legacy compatibility filesdist/— Vite production build output (do not edit manually)dist-legacy/— optional Parcel legacy output
npm install
npm run devnpm run buildnpm run legacy:dev
npm run legacy:build- Push repo to GitHub
- Enable GitHub Pages in repo settings
- Point to
frontend/directory - Update backend URL when prompted
- Connect repo to Render
- Set base directory to
frontend/ - Build command:
npm run build - Publish directory:
dist - Deploy and update backend URL
Upload contents of dist/ to any static host (AWS S3, Azure Blob Storage, etc).
The frontend calls these endpoints on the backend:
GET /api/me— check if logged inGET /api/guilds— list guildsGET /api/guilds/{guild_id}/rules— list rules for a guildPOST /api/guilds/{guild_id}/rules— create ruleGET /login— OAuth redirectPOST /logout— clear session
All endpoints require authentication except /login.