No description
Find a file
DecDuck a199393e29
Fix: Sign out functionality #95 (#99)
* fix: signout button on user widget

* fix: add comment explaining
2025-06-07 17:26:09 +10:00
.github/workflows i18n Support and Task improvements (#80) 2025-06-05 09:53:30 +10:00
.vscode i18n Support and Task improvements (#80) 2025-06-05 09:53:30 +10:00
assets chore: prettier pass 2025-04-15 21:46:34 -04:00
build feat: better docker builds 2025-05-10 23:49:58 -04:00
components Fix: Sign out functionality #95 (#99) 2025-06-07 17:26:09 +10:00
composables fix: remove jank prisma script, and move to generated prisma client 2025-05-08 16:17:23 +10:00
deploy-template fix: compose not following node best practices 2025-05-29 14:18:57 -04:00
dev-tools chore: prettier pass 2025-04-15 21:46:34 -04:00
drop-base@a14d1b7081 fix: notification rendering 2025-05-07 09:54:02 +10:00
i18n Fix: Broken footer links #96 (#98) 2025-06-07 17:21:07 +10:00
layouts Better metadata editing division #79 (#82) 2025-06-05 14:53:19 +10:00
middleware fix: last eslint errors 2025-04-15 21:43:27 -04:00
pages Task groups & viewer in admin panel #52 (#91) 2025-06-07 15:39:01 +10:00
plugins i18n Support and Task improvements (#80) 2025-06-05 09:53:30 +10:00
prisma Task groups & viewer in admin panel #52 (#91) 2025-06-07 15:39:01 +10:00
public completed game importing; partial work on version importing 2024-10-11 00:37:08 +11:00
server Fix unauthenticated /api/v1/client/chunk route 2025-06-07 16:27:43 +10:00
.dockerignore feat: better docker builds 2025-05-10 23:49:58 -04:00
.editorconfig move to yarn v2 2024-11-04 22:55:29 +11:00
.env.example object storage + full permission system + testing 2024-10-09 14:43:06 +11:00
.gitattributes fix issue in igdb where company isn't found 2025-03-12 19:06:34 -04:00
.gitignore chore: move more admin over to arktype validators 2025-05-30 13:17:21 +10:00
.gitlab-ci.yml fix: add aarch64 tag to runner 2025-03-11 09:06:41 +11:00
.gitmodules fix(drop-base): add drop-base as git submodule 2024-12-27 16:36:37 +11:00
.prettierignore chore: prettier pass 2025-04-15 21:46:34 -04:00
app.vue fix: misc fixes 2025-04-20 21:33:19 +10:00
changelog.md chore: prettier pass 2025-04-15 21:46:34 -04:00
CONTRIBUTING.md i18n Support and Task improvements (#80) 2025-06-05 09:53:30 +10:00
Dockerfile fix: allow specifying git ref 2025-05-29 15:22:12 -04:00
error.vue i18n Support and Task improvements (#80) 2025-06-05 09:53:30 +10:00
eslint.config.mjs i18n Support and Task improvements (#80) 2025-06-05 09:53:30 +10:00
LICENSE Add LICENSE 2024-10-22 22:40:13 +00:00
nuxt.config.ts Fix: Broken footer links #96 (#98) 2025-06-07 17:21:07 +10:00
package.json Better metadata editing division #79 (#82) 2025-06-05 14:53:19 +10:00
README.md Update README.md 2025-05-12 17:11:19 +10:00
SECURITY.md chore: prettier pass 2025-04-15 21:46:34 -04:00
tailwind.config.js feat: migrate to tailwind v4 and fix user token API 2025-02-14 20:01:18 +11:00
tsconfig.json fix: remove jank prisma script, and move to generated prisma client 2025-05-08 16:17:23 +10:00
yarn.lock Better metadata editing division #79 (#82) 2025-06-05 14:53:19 +10:00


Drop

Website Static Badge GitHub License Discord Open Collective

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

  1. Drop is flexible. While abstractions and interfaces can make the codebase more complicated, the flexibility is worth it.
  2. 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.
  3. 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.

  1. Generate a GiantBomb API Key
  2. Navigate to the deploy-template directory in your terminal (cd deploy-template)
  3. Edit the compose.yml file (nano compose.yml) and copy your GiamtBomb API Key into the GIANT_BOMB_API_KEY environment variable
  4. 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:

  1. Ensure that the current user owns the library folder with sudo chown -R $(id -u $(whoami)) library
  2. cd library
  3. mkdir <GAME_NAME> with the name of the game which you would like to register
  4. cd <GAME_NAME>
  5. mkdir <VERSION_NAME> Upload files for the specific game version to this folder
  6. Navigate to http://your.drop.server.ip:3000/
  7. Import game metadata (uses GiantBomb API Key) by selecting the game and specifying which entry to import
  8. Navigate to http://your.drop.server.ip:3000/admin/library
  9. 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.
  10. 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:

  1. Run git submodule update --init --recursive to setup submodules
  2. Copy the .env.example to .env and add your GiantBomb metadata key (more metadata providers coming)
  3. Create the .data directory with mkdir .data
  4. Ensure that your user owns the .data directory with sudo chown -R $(id -u $(whoami))
  5. Open up a terminal and navigate to dev-tools, and run docker compose up
  6. Open up another terminal in the root directory of the project and run yarn and then yarn dev to 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