Files
gd-list/README.md
T
miles 90310fd671 Add run submission & admin moderation
Add a live run submission workflow and admin moderation UI.

- Add run.html: new page to submit runs (video, raw footage, notes) and show recent submissions.
- Update admelist.html: admin overview plus run queue table for reviewing/approving/rejecting/deleting submissions.
- Update app.js: client-side support for runs (load/refresh/caching, SSE "runs-update", admin review actions, run submission handling, and graceful fallback when no server is available).
- Server changes: add server/runs.json, implement /api/runs (GET, POST) and /api/runs/:id (PUT, DELETE) in server/server.js, ensure runs file, emit runs-update events, broaden CORS, set BASE path (/fedl) and default port 8090.
- Add styles for admin overview, run submission UI and submission cards in styles.css.
- Update README with run/admin pages and example URLs, adjust start-server.command to use PORT=8090, and minor note in LINUX_SERVICE_SETUP.txt.

Notes: live submission/review features require running the Node server; client falls back to static behavior when served from file:// or when server is unavailable.
2026-03-31 21:24:50 -05:00

128 lines
2.9 KiB
Markdown

# GD FEDL
A Geometry Dash FEDL-style website with a live server-backed main list.
It includes:
- a home page
- a main list page
- a run submission page
- a players page
- a rules page
- an admin panel for the list and submitted runs
## Project Files
- `index.html` - home page
- `lists.html` - main live list view
- `run.html` - live run submission page
- `players.html` - player manager
- `rules.html` - submission rules and mod guidelines
- `admelist.html` - admin panel for list edits and run review
- `app.js` - client-side logic
- `styles.css` - site styling
- `data.txt` - static fallback list data
- `server/data.txt` - live server list data
- `server/runs.json` - live run submission queue
- `server/server.js` - Node.js server for the live list
- `start-server.command` - one-click launcher for macOS
- `server/LINUX_SERVICE_SETUP.txt` - Linux `systemd` setup notes
## Data Format
Both `data.txt` and `server/data.txt` use the same format:
```txt
category|position|title|url
```
Example:
```txt
new|1|Flamewall|https://youtu.be/x4Io4zkWVRw
```
## Pages
- `lists.html` is the main live list page.
- `roulette.html` uses the same live server-backed list.
- `run.html` submits runs into the live moderation queue.
- `admelist.html` lets you edit the list and review submissions.
## Fallback Order
The live list tries these in order:
1. `/api/list`
2. `server/data.txt`
3. `data.txt`
That means `lists.html` can still show data even if the live API is down.
## Running The Static Site
If you only want the static pages, you can run a simple file server:
```bash
python3 -m http.server 8000
```
Then open:
```txt
http://localhost:8000
```
## Running The Live Server
The live list uses the Node server:
```bash
node server/server.js
```
Or to allow other devices on your network to connect:
```bash
HOST=0.0.0.0 PORT=8090 node server/server.js
```
Then open:
```txt
http://localhost:8090/fedl/lists.html
http://localhost:8090/fedl/run.html
http://localhost:8090/fedl/admelist.html
```
On macOS you can also use:
```txt
start-server.command
```
## Hosting On Another Device
If you want one device to host the live list for other devices:
1. Run the server with `HOST=0.0.0.0`.
2. Open or forward port `8090`.
3. Visit `http://YOUR-IP:8090/fedl/lists.html`, `http://YOUR-IP:8090/fedl/run.html`, or `http://YOUR-IP:8090/fedl/admelist.html`.
If you already have router port forwarding set up, point it to the machine running `server/server.js`.
## Linux Service
For running the Node server automatically on boot on Linux, see:
`server/LINUX_SERVICE_SETUP.txt`
## Notes
- Player data is stored in the browser with `localStorage`
- The players list is local to each browser/device
- The live list data is stored in `server/data.txt`
- The live run queue is stored in `server/runs.json`
- The static fallback list data is stored in `data.txt`
- The project does not need a build step