* fix: release workflow * feat: move mostly to internal tasks system * feat: migrate object clean to new task system * fix: release not getting good base version * chore: set version v0.3.0 * chore: style * feat: basic task concurrency * feat: temp pages to fill in page links * feat: inital i18n support * feat: localize store page * chore: style * fix: weblate doesn't like multifile thing * fix: update nuxt * feat: improved error logging * fix: using old task api * feat: basic translation docs * feat: add i18n eslint plugin * feat: translate store and auth pages * feat: more translation progress * feat: admin dash i18n progress * feat: enable update check by default in prod * fix: using wrong i18n keys * fix: crash in library sources page * feat: finish i18n work * fix: missing i18n translations * feat: use twemoji for emojis * feat: sanatize object ids * fix: EmojiText's alt text * fix: UserWidget not using links * feat: cache and auth for emoji api * fix: add more missing translations
Drop
Drop is an open-source game distribution platform, like GameVault or Steam. It's designed to distribute and shared DRM-free game quickly, all while being incredibly flexible, beautiful and fast.
Philosophy
- Drop is flexible. While abstractions and interfaces can make the codebase more complicated, the flexibility is worth it.
- Drop is secure. The nature of Drop means an instance can never be accessible without authentication. In line with #1, Drop also supports a huge variety of authentication mechanisms, from a username/password to SSO.
- Drop is user-friendly. The interface is designed to be clean and simple to use, with complexity available to the users who want it.
Deployment
To just deploy Drop, we've set up a simple docker compose file in deploy-template.
- Generate a GiantBomb API Key
- Navigate to the deploy-template directory in your terminal (
cd deploy-template) - Edit the compose.yml file (
nano compose.yml) and copy your GiamtBomb API Key into the GIANT_BOMB_API_KEY environment variable - Run
docker compose up -d
Your drop server should now be running. To register the admin user, navigate to http://your.drop.server.ip:3000/register?id=admin and fill in the required forms
Adding a game
To add a game to the drop library, do as follows:
- Ensure that the current user owns the library folder with
sudo chown -R $(id -u $(whoami)) library cd librarymkdir <GAME_NAME>with the name of the game which you would like to registercd <GAME_NAME>mkdir <VERSION_NAME>Upload files for the specific game version to this folder- Navigate to http://your.drop.server.ip:3000/
- Import game metadata (uses GiantBomb API Key) by selecting the game and specifying which entry to import
- Navigate to http://your.drop.server.ip:3000/admin/library
- You should see the game which you have just imported listed in this menu. There should be a notification that "Drop has detected you have new verions of this game to import". Select import here.
- Select the game version to import and thus fill in fields as required.
Tech Stack
This repo uses the Nuxt 3 + TailwindCSS stack, with the yarn package manager.
For the database, Drop uses Prisma connected to PostgreSQL.
Development
To get started with development, you need yarn --optional and docker compose installed (or know how to set up a PostgreSQL database).
Note: --optional flag is REQUIRED
Drop uses a utility package called droplet that's written in Rust. It has builts for Linux (GNU) and Windows, and they are set up as optional packages. npm installs these by default, but yarn needs the --optional flag.
Steps:
- Run
git submodule update --init --recursiveto setup submodules - Copy the
.env.exampleto.envand add your GiantBomb metadata key (more metadata providers coming) - Create the
.datadirectory withmkdir .data - Ensure that your user owns the
.datadirectory withsudo chown -R $(id -u $(whoami)) - Open up a terminal and navigate to
dev-tools, and rundocker compose up - Open up another terminal in the root directory of the project and run
yarnand thenyarn devto start the dev server
As part of the first-time bootstrap, Drop creates an invitation with the fixed id of 'admin'. So, to create an admin account, go to:
http://localhost:3000/auth/register?id=admin
Contributing
Please see the in-depth contributing guide