Skip to content

Repository files navigation

GDPSnode

Watch the trailer Node.js

A fully rewritten version of the Geometry Dash backend in Node.js, with account storage, levels, custom songs, rewards, and an admin dashboard.

Quick start

Requirements: Node.js 22+ and npm.

npm install
cp .env.example .env
npm start

The server runs on port 10000 by default. Change the port value at the top of config.js to pick another port.

Dashboard

Open http://localhost:10000/dashboard/ after starting the server.

Configure these values in .env:

DASHBOARD_PATH=/dashboard
DASHBOARD_USER=moderator
DASHBOARD_PASSWORD=use-a-long-random-password
DASHBOARD_ACCOUNT_ID=123
DASHBOARD_SECURE_COOKIES=0
TRUST_PROXY_HOPS=0

The account must already exist and have modLevel=2 (moderator). Change the default dashboard path and password before exposing the server to the internet. Set DASHBOARD_SECURE_COOKIES=1 when using HTTPS.

Project Features:

  • Geometry Dash-compatible account, level, list, score, comment, message, social, rating, reward, and moderation endpoints
  • Custom song hosting at /songs/<filename>
  • GDPS Switcher support at /switcher/getInfo.php
  • SQLite database created automatically as gd_server.db
  • Dashboard tools for users, levels, ratings, songs, collections, rewards, quests, and server scheduling

API routes are loaded automatically from endpoints/. All game requests use POST form data, matching the Geometry Dash client protocol.

The server starts at / by default. You don't need to append /database to your links, simply use the hostname, the port (if necessary) and the endpoint.

Configuration

See .env.example for all available settings, including daily chest wait times and reward ranges.

The application allows 100 requests per minute per client. Dashboard login is limited to 10 attempts per 15 minutes.

Development

npm test

To measure SQLite on your hardware with a temporary database:

npm run benchmark:sqlite -- --rows=1000000 --writers=4 --rounds=5000

The benchmark reports seed speed, mixed indexed read/write throughput, and 95th-percentile operation latency. Increase rows until it matches your expected population, then increase writers and rounds to model traffic. Move to a server database when measured write latency or throughput no longer meets your requirements!

To add an endpoint, create a module in endpoints/ that exports method, path, and handler. It will be registered automatically when the server restarts.

Note

This project's versioning system is close to RobTop's. Versions are incremented usually +0.1 for each patch or major version. For example, if you see a jump from 1.9R to 2.0R, this doesn't mean it's a major version, it could simply be a minor patch, or even just a version bump.

Keep that in mind when updating your server, only update if you deem it necessary, and always check commit names first, versions don't tell the whole story!

License

Open-source as all things should be, MIT Licensed

Not affiliated with, endorsed or approved by RobTop Games AB. Purchase the game on stores such as Steam, Google Play Store or the Apple App Store.

About

A port of the Geometry Dash backend rewritten entirely in Node.js.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Contributors

Languages