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.
128 lines
2.9 KiB
Markdown
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
|