blob: 59bdf17adf72d4ae94567ae1adb268004b595f58 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# Python Discord Forms API
API for [Python Discord Forms](https://forms.pythondiscord.com) 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](https://discord.com/developers/applications))
2. Poetry
3. Docker and docker-compose (optional)
4. Running MongoDB instance (when not using Docker)
5. Running [Snekbox](https://git.pydis.com/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.
|