88 lines
1.8 KiB
Markdown
88 lines
1.8 KiB
Markdown
# GD FEDL
|
|
|
|
A lightweight Geometry Dash FEDL-style website with a built-in Node.js server and browser-based list manager.
|
|
|
|
It includes:
|
|
|
|
- a home page
|
|
- a list page for ranked level videos
|
|
- a manage page for editing the list in the browser
|
|
- a players page
|
|
- a rules page
|
|
- a Node.js server with a JSON API
|
|
|
|
## Project Files
|
|
|
|
- `index.html` - home page
|
|
- `lists.html` - main list view
|
|
- `manage.html` - browser UI for adding, editing, and deleting list entries
|
|
- `players.html` - player manager
|
|
- `rules.html` - submission rules and mod guidelines
|
|
- `app.js` - client-side logic for the list and players pages
|
|
- `styles.css` - site styling
|
|
- `server.js` - Node.js server and API
|
|
- `data.json` - primary list storage generated by the server
|
|
- `data.txt` - compatibility export rewritten by the server
|
|
- `package.json` - start script for the Node server
|
|
|
|
## How The List Data Works
|
|
|
|
The site now serves list data through `GET /api/levels`.
|
|
|
|
The server stores entries in `data.json` and also keeps `data.txt` updated automatically for compatibility.
|
|
|
|
Legacy `data.txt` lines still use this format:
|
|
|
|
```txt
|
|
category|position|title|url
|
|
```
|
|
|
|
Example:
|
|
|
|
```txt
|
|
new|1|Flamewall|https://youtu.be/x4Io4zkWVRw
|
|
```
|
|
|
|
## Running The Site
|
|
|
|
Start the Node server:
|
|
|
|
```bash
|
|
npm start
|
|
```
|
|
|
|
Then open:
|
|
|
|
```txt
|
|
http://localhost:8000
|
|
```
|
|
|
|
## Editing The List
|
|
|
|
Open:
|
|
|
|
```txt
|
|
http://localhost:8000/manage.html
|
|
```
|
|
|
|
From there you can:
|
|
|
|
- add entries
|
|
- edit existing entries
|
|
- delete entries
|
|
- search the current list
|
|
|
|
The server also exposes these API routes:
|
|
|
|
- `GET /api/levels`
|
|
- `POST /api/levels`
|
|
- `PUT /api/levels/:id`
|
|
- `DELETE /api/levels/:id`
|
|
|
|
## Notes
|
|
|
|
- On first run, the server will migrate the current `data.txt` into `data.json`
|
|
- Player data is stored in the browser with `localStorage`
|
|
- The players list is local to each browser/device
|
|
- No external npm packages are required
|