Python Discord Forms API
API for Python Discord Forms that handles Discord OAuth2 integration and form submission.
Setup
Prerequisites
To start working on forms-backend, you'll need few things: 1. Discord OAuth2 Application (from the Discord Developers Portal) 2. Poetry 3. Docker and docker-compose (optional) 4. Running MongoDB instance (when not using Docker) 5. Running Snekbox instance (when not using Docker, optional)
Running with Docker
The easiest way to run forms-backend is using Docker (and docker-compose).
Environment variables
Create a .env
file in the root with the following values inside it (each variable should be a line like VARIABLE=value
):
- OAUTH2_CLIENT_ID
: Client ID of Discord OAuth2 Application (see prerequisites).
- OAUTH2_CLIENT_SECRET
: Client Secret of Discord OAuth2 Application (see prerequisites).
- ALLOWED_URL
: Allowed origin for CORS middleware.
- PRODUCTION
: Set to False if running on localhost. Defaults to true.
Running
To start using the application, simply run docker-compose up
in the repository root. You'll be able to access the application by visiting http://localhost:8000/
Running on the host
You can also run forms-backend manually on the host.
Environment variables
Create a .env
file with the same contents as the Docker section above and the following new variables:
- FRONTEND_URL
: Forms frontend URL.
- DATABASE_URL
: MongoDB instance URI, in format mongodb://(username):(password)@(database IP or domain):(port)
.
- MONGO_DB
: MongoDB database name, defaults to pydis_forms
.
- SNEKBOX_URL
: Snekbox evaluation endpoint.
Running
Simply run: $ uvicorn --reload --host 0.0.0.0 --debug backend:app
.
Once this is running the API is accessible via http://localhost:8000/ and will reload on any changes to code.