|
1 | 1 | # internal-bot
|
2 |
| -This is a repository for the internal bot used on the EPS server |
| 2 | + |
| 3 | +This repository is home to the internal bot we use on the EPS server. |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +The bot's main goal is to make life easier for the conference teams by streamlining workflows and integrating with other services. |
| 8 | + |
| 9 | + |
| 10 | +## Design Decisions |
| 11 | + |
| 12 | +* **One Codebase, Multiple Entry Points** |
| 13 | + * **HTTP Endpoint**: Handles webhooks. |
| 14 | + * **Discord Bot**: Lets us communicate back and forth with Discord. |
| 15 | + * It can post scheduled messages and respond to messages, commands, and events on the server. |
| 16 | + * **Background Worker**: Mainly processes HTTP requests but can also be used within the bot itself. |
| 17 | + |
| 18 | +* **Small-Scale Setup** |
| 19 | + * Built to be easily extendable with new features, but designed for low-traffic environments like the EPS Organizers server. |
| 20 | + |
| 21 | +## Tech Stack and Implementation Choices |
| 22 | + |
| 23 | +* **Django** |
| 24 | + * Handles the HTTP layer, database, and general framework duties. |
| 25 | + * Why Django? |
| 26 | + * It's popular and easy to work with. |
| 27 | + * Comes with great built-in tools like ORM, migrations, and Django admin for quick access to data. |
| 28 | + * We're already using it for other EPS projects. |
| 29 | + |
| 30 | +* **PostgreSQL** |
| 31 | + * Both development and production setups can run using Docker Compose. |
| 32 | + |
| 33 | +* **discord.py** |
| 34 | + * Handles the Discord integration. |
| 35 | + * Runs in the same environment as Django, so we can reuse code, models, and the database. |
| 36 | + * The bot runs as a Django management command. |
| 37 | + |
| 38 | +* **django-tasks** |
| 39 | + * Keeps background task management simple by storing tasks in the database—no need for extra tools like Redis or RabbitMQ. |
| 40 | + |
| 41 | +* **Deployment** |
| 42 | + * Deployed on a dedicated VPS just for the bot. |
| 43 | + * Packaged as a single Docker image with multiple entry points. |
| 44 | + * Deployed using Ansible to match the deployment setup we use for other EPS projects. |
| 45 | + * We use separate playbooks for setting up a VPS and deploying the app. |
| 46 | + * Uses Docker Compose for simplicity. |
| 47 | + * Separate playbooks for Nginx (for the HTTP endpoint) and the app. |
| 48 | + |
| 49 | +* **Dependency Management** |
| 50 | + * Managed with `uv`. All Makefiles, Docker images, and related configs are set up to use `uv`. |
| 51 | + |
| 52 | +* **CI/CD** |
| 53 | + * Built with GitHub Actions. |
| 54 | + |
| 55 | +## Local Development |
| 56 | + |
| 57 | +... |
| 58 | + |
| 59 | +## Contributing |
| 60 | + |
| 61 | +... |
| 62 | + |
| 63 | +## Operations |
| 64 | + |
| 65 | +... |
| 66 | + |
| 67 | +## Deployment |
| 68 | + |
| 69 | +... |
| 70 | + |
0 commit comments