Architecture Overview
Obbie consists of three main componenets:
- Supabase [PostgresSQL & Authentication]
- Bot Client [discord.js]
- Web App [SvelteKit]
Most comunication related to the Dashboard happens through the bot client, which hosts a express.js api.
Bot API
Every server (that has had settings configured) has a main serverSettings record.
This record can only be accesed via the bot’s API.
Most routes on the bots API are protected and require a oauth API key. This key is obtaied when a user logs into the dashboard, this key is stored in a record associated with their account.
When a user requests something from a protected route, the bot client goes out to Discord and checks who owns this token, before than performing the requested action as the token owner.
Supabase
Supabase is a free and open source project that contains Obbie’s authentication and database.
All the data that persists in Obbie is contained withing Supabase’s PostgresSQL database.