Very simple app for serving static files.
Maintains a local db to correctly determine access for deleted maps, redirect keys to published versions and provide the user with a readable filename.
The db is fed with updates over AMQP and a message is placed on AMQP for every zip download to increment the counter without delaying the client waiting to talk across continents.
- IntelliJ IDEA (Community Edition is fine)
- Docker Desktop
- Run
docker-compose -d upto start the local database
If you're already running postgres for the main app you should be able to just create a new schema calledcdn - Open the project in IntelliJ IDEA
- Run the
rungradle task
ZIP_DIRDirectory zips will get served fromCOVER_DIRDirectory cover images will get served fromAUDIO_DIRDirectory preview audio will get served fromAVATAR_DIRDirectory avatars will get served from
Zips, covers and audio files must be placed in a subfolder that is named with their first character
e.g. cb9f1581ff6c09130c991db8823c5953c660688f.zip must be in $ZIP_DIR/c/cb9f1581ff6c09130c991db8823c5953c660688f.zip
This project uses ktlint which provides fairly basic style rules.
You can run the ktlinkFormat gradle task to automatically apply most of them or the ktlinkCheck task to get a list of linting errors.
Beatsaver serves between 3-4 TB of data every day to players all over the world. This requires hosting the library of maps on multiple continents and isn't cheap. If you can volunteer bandwidth feel free to DM me on discord Top_Cat#1961