52 lines
No EOL
1.7 KiB
Markdown
52 lines
No EOL
1.7 KiB
Markdown
# gdps-server
|
|
|
|
a [Geometry Dash](https://store.steampowered.com/app/322170/Geometry_Dash/) server reimplementation in [Rust](https://rust-lang.org)
|
|
|
|
this project is based off of (stolen from) the [crystal-gauntlet](https://git.oat.zone/oat/crystal-gauntlet) server
|
|
|
|
## why?
|
|
|
|
i'm trying to learn some rust, and this is a solid choice. most GDPS solutions out there are pretty garbage, to say the least.
|
|
|
|
### features
|
|
|
|
- [highly configurable](https://git.reidlab.online/reidlab/gdps-server/src/branch/main/config.example.toml)
|
|
- compiled, for extra speed
|
|
- [parses uploaded levels](https://git.reidlab.online/reidlab/gdps-server/src/branch/main/src/helpers/levels.rs) to patch RCEs and verify that everything is in place
|
|
- website frontend
|
|
|
|
## build
|
|
|
|
`cargo build --release`
|
|
|
|
## configuration
|
|
|
|
copy `.env.example` to `.env` and fill it out, same for `config.example.toml` to `config.toml`
|
|
|
|
## setup
|
|
|
|
make sure you have `sqlx-cli` by running `cargo install sqlx-cli`
|
|
|
|
run `sqlx database setup`
|
|
|
|
then finally run the server with `cargo run`
|
|
|
|
## todo
|
|
|
|
- user icons in account management pages
|
|
- account settings page
|
|
- better web design (make formatting more consistant)
|
|
- use chrono for dates in database
|
|
- 2.2's friends only unlisted
|
|
- dailies, weeklies, events(?)
|
|
- moderation utilities
|
|
- better song support
|
|
- cache authentication (redis or mem)
|
|
- make a proper rank system (reuploading, uploading music, rating, etc.)
|
|
- use serde to make the forms whateverCaseThisIs rather than breaking our lint convention
|
|
- add back `realip` header support
|
|
- add configurable form limits
|
|
- nix
|
|
- clean up difficulty/demon difficulties. It's fucking VILE.
|
|
- panic less, use results
|
|
- use anyhow for error handling |