Point the client to a configurable live server (live API, events and data file) and accept both JSON and plain-text list formats. Update app.js to parse JSON or text responses, use live EventSource and PUT endpoints, and fall back to the live data file when needed. On the server side, add BASE_PATH support (trim trailing slash) and normalize request paths so the app can be mounted under a subpath. Add setCorsHeaders and enable CORS (including handling OPTIONS preflight) for API, events and file responses, return proper headers on errors, and log the base path at startup. These changes enable cross-origin access and deployment under a base path while improving robustness of list parsing.
GD FEDL
A Geometry Dash FEDL-style website with both a static list and a live editable server list.
It includes:
- a home page
- a static list page
- a live server-backed list page
- an admin editor page for the live list
- a players page
- a rules page
Project Files
index.html- home pagelists.html- static list viewserverlist.html- live server-backed list viewadmelist.html- admin UI for editing the live listplayers.html- player managerrules.html- submission rules and mod guidelinesapp.js- client-side logicstyles.css- site stylingdata.txt- static fallback list dataserver/data.txt- live server list dataserver/server.js- Node.js server for the live liststart-server.command- one-click launcher for macOSserver/LINUX_SERVICE_SETUP.txt- Linuxsystemdsetup notes
Data Format
Both data.txt and server/data.txt use the same format:
category|position|title|url
Example:
new|1|Flamewall|https://youtu.be/x4Io4zkWVRw
Pages
lists.htmlreads the static list.serverlist.htmlreads the live server list.admelist.htmllets you edit the live server list with a UI.
Fallback Order
The live list tries these in order:
/api/listserver/data.txtdata.txt
That means serverlist.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:
python3 -m http.server 8000
Then open:
http://localhost:8000
Running The Live Server
The live editor and live list use the Node server:
node server/server.js
Or to allow other devices on your network to connect:
HOST=0.0.0.0 PORT=3000 node server/server.js
Then open:
http://localhost:3000/serverlist.html
http://localhost:3000/admelist.html
On macOS you can also use:
start-server.command
Editing The Live List
Open admelist.html through the Node server.
Features:
- add a new row at the top as a draft
- give it a number when you want to place it
- automatic shifting of other rows when a number is reused
- delete rows only with the Delete button
- live refresh on connected list pages after saving
Draft rows must be assigned a number before saving.
Hosting On Another Device
If you want one device to host the live list for other devices:
- Run the server with
HOST=0.0.0.0. - Open or forward port
3000. - Visit
http://YOUR-IP:3000/serverlist.htmlorhttp://YOUR-IP:3000/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 static fallback list data is stored in
data.txt - The project does not need a build step