The Team Finder is a website that helps Game Jam participants find people to work with!
The Team Finder application contains three primary components:
The Team Finder also has two local tools which are used in development:
This repo is designed to quickly and easily run within Docker. We highly recommend installing Docker on your development machine (if you haven't used Docker before, something like Docker Desktop would be suitable. The Team Finder is a non-commercial open source project, so you do not need to pay for a licence).
.env.example
to a new file called .env
DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET, DISCORD_BOT_TOKEN
valuesnpm --prefix ui ci
to install 3rd party UI librariesdocker compose up -d
This will run all Team Finder components, and start the website in http://localhost:3000.
The UI will still use the Vite hot-reload functionality within Docker, so we recommend running all the images in Docker for simplicity unless you're confident working with Docker.
If you prefer to run the UI outside of Docker, you can run all the other tools with docker compose up -d api db db-seed db-viewer
You'll need to be in the root directory of the app to run Docker commands.
# Runs all apps and logs all output to the terminal - very noisy!
# If you run the `up` command without `-d`, you'll turn off the app when you close the log output
docker compose up
# Run all apps in a 'detached' mode - the apps run in the background, and don't take over your terminal
docker compose up -d
# Run only some of the apps - the options are: [api, db, db-seed, db-viewer, ui]
docker compose up -d app1 app2 app3
# Forcibly rebuild the image
# You'll likely only need to do this when the API changes drastically
# or when you want to re-run the db-seed (to reset the database)
docker compose up --build -d api db-seed
If you prefer to run the apps natively, you'll need to run the UI, API and DB on your machine.
.env.example
to a new file called .env
DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET, DISCORD_BOT_TOKEN
values./ui
npm ci
to install 3rd party UI librariesnpm run dev
to run the UI in development mode
./api
gradle build
to download 3rd party libraries and build the app
gradlew.bat build
./gradlew build
DATABASE_URL="..." ADMIN_DISCORD_IDS="..." DISCORD_CLIENT_ID="..." DISCORD_CLIENT_SECRET="..." DISCORD_BOT_TOKEN="..." API_URL="..." UI_URL="..." ./gradlew run
$env:DISCORD_CLIENT_ID = "..."; $env:DISCORD_CLIENT_SECRET = "..."; $env:DISCORD_BOT_TOKEN = "..."; $env:DATABASE_URL="..."; $env:API_URL = "..."; $env:UI_URL = "..."; $env:ADMIN_DISCORD_IDS="..." ./gradlew.bat run
If you're using the remote database (or a local DB with authentication), you'll likely need to import the certificate locally. See https://docs.oracle.com/javase/tutorial/security/toolfilex/rstep1.html (or something newer) to import the certificate into your keytool.
Download and run MongoDB locally - see the official docs here for more.
Follow the steps on the Mongo Express github page.
The DB Seed runs a mongoimport
command to populate the PostItem data, and a MongoJS script to set up some table
indexes etc. to setup the database. See the entrypoint shell script for more.