3b65631d5c21a68062d31f66d03db92dc51e4b91
GD FEDL
GD FEDL is a Geometry Dash list site built as a multi-page static frontend with a lightweight Node.js backend. It supports live list data, run submissions, admin moderation, account login, synced user state, community posts, bug reports, and direct messages.
What It Includes
index.htmllanding pagelists.htmlranked list browser with search, filters, and video playbackrun.htmlrun submission pageadmelist.htmladmin page for list editing and run moderationplayers.htmlplayer progress trackerguess.htmlrank guessing gameroulette.htmldemon roulette pickerrules.htmlrules pagesignup.htmlandlogin.htmlaccount pagespost.htmlandmessages.htmlcommunity featurescontact.htmlbug report / contact pageerrors.htmlplus standalone HTTP-style error pages
Tech Stack
- Plain HTML, CSS, and JavaScript
- No build step for the main site
- Node.js
httpserver - Server-Sent Events for live updates
- Browser
localStorage/sessionStorage - JSON and text files for simple local persistence
Project Structure
app.jsshared frontend logicstyles.cssshared site stylingdata.txtstatic fallback list datalevel-ids.txtoptional local level ID lookup data for rouletteserver/server.jsbackend for list data, auth, posts, messages, bug reports, and run submissionsserver/README.mdbackend API detailsserver/LINUX_SERVICE_SETUP.txtexamplesystemdsetupstart-server.commandmacOS launcher for the Node server
Data Files
The main list format is one entry per line:
category|position|title|url
Example:
new|1|Flamewall|https://youtu.be/x4Io4zkWVRw
The server also stores runtime data in server/:
data.txtlive list sourceruns.jsonsubmitted runsusers.jsonregistered accountssessions.jsonlogin sessionsuserdata.jsonsynced user stateposts.jsoncommunity postsbugreports.jsonbug reportsmessages.jsonprivate messages
Most JSON files are created automatically when first needed. server/data.txt is the one file you should create yourself before first run.
Main Backend Features
GET /api/listandPUT /api/listfor live list dataGET /api/runs,POST /api/runs,PUT /api/runs/:id,DELETE /api/runs/:idPOST /api/runs/bulk-approvefor admin moderationPOST /api/auth/signup,POST /api/auth/login,POST /api/auth/logout,GET /api/auth/meGET /api/user/state,PUT /api/user/statefor synced client stateGET /api/posts,POST /api/posts, like/comment routes, and post deletionGET /api/bugreports,POST /api/bugreports, admin update/delete routesGET /api/messages,POST /api/messages, conversation lookup, and user searchGET /eventsfor SSE updates- Pointercrate and AREDL import routes for admins
See server/README.md for the fuller API reference.
Local Setup
- Make sure Node.js is installed.
- Create the live list data file if it does not exist yet:
printf "new|1|Example Level|https://youtu.be/example\n" > server/data.txt
- Start the server:
node server/server.js
- Open the site at:
http://127.0.0.1:8090/fedl/
To expose it on your local network:
HOST=0.0.0.0 PORT=8090 node server/server.js
On macOS you can also run:
./start-server.command
Environment Variables
HOSTserver bind host, default127.0.0.1PORTserver port, default8090ADMIN_PASSWORDadmin password for protected write routesAREDL_ACCESS_TOKENbearer token for AREDL importsAREDL_API_KEYAPI key for AREDL imports
Example:
ADMIN_PASSWORD=changeme HOST=0.0.0.0 PORT=8090 node server/server.js
Frontend Live Server Note
app.js uses a hardcoded live server base:
https://raspberrypi-1.tail46eacb.ts.net/fedl
That means:
- the frontend will try the remote live server first
- if the live server probe fails, the app redirects to
offlineindex.html - if you want local development against your own server, update
TESTING_MODEorliveServerBaseinapp.js
Notes
players.htmlstores local player progress in the browser, with optional server sync when signed in- admin-protected routes use HTTP Basic auth
- account auth uses bearer tokens from the backend
roulette.htmlcan uselevel-ids.txtbefore falling back to external lookups- the backend serves the repo root as static files under the
/fedlbase path
Linux Service
For systemd setup notes, see server/LINUX_SERVICE_SETUP.txt.
License
See LICENSE.
Languages
HTML
47.3%
JavaScript
36.8%
CSS
15.9%