-
Notifications
You must be signed in to change notification settings - Fork 0
Home
SDAC is a Discord media submission, guessing-game, moderation, and web dashboard system. It lets Discord users submit screenshots, images, audio, and video through guided slash commands, while server staff manage categories, approvals, games, leaderboards, releases, backups, users, and server settings from Discord or the Flask dashboard.
This wiki documents the public and operational parts of the project. It intentionally does not include secrets, live tokens, private credentials, database contents, or private user data.
- Overview - what SDAC is, how the parts fit together, and where to start.
- Roles and Permissions - user, trusted, moderator, admin, server owner, and bot owner behavior.
- Bot - Discord commands, submissions, games, polls, setup, backups, and bot-owner controls.
- Dashboard - public pages, admin pages, sidebar/theme/layout controls, OAuth, and APIs.
- Server - production path, services, environment variables, Nginx, health, and deployment.
- Maintenance and Backups - backups, restores, storage cleanup, migrations, and doctor checks.
- Releases and Updates - official and experimental channels, version rules, update notifications, and scope labels.
- App - SDACCompanion, Android builds, signing, backend API expectations, and SDK app direction.
- Data and Privacy - what data exists, how it is scoped, and what to avoid publishing.
- Troubleshooting - common failures and first checks.
SDAC is built around one shared backend/source of truth:
-
bot.pyruns the Discord bot and slash commands. -
dashboard.pyruns the Flask dashboard and lightweight API endpoints. -
database_migrations.pymanages SQLite schema evolution. -
database_backend.pyprovides the database abstraction and experimental PostgreSQL mode. -
config.jsonstores non-secret server/guild configuration. -
.envor the production env file stores secrets and deployment-specific values. -
sdac.dbstores submissions, users, games, votes, audit history, and runtime data. -
media/stores uploaded or generated media that should not be committed. -
server/mirrors files intended for deployment packaging. -
apps/sdac-official-app/contains the current SDACCompanion app scaffold.
The Flask dashboard and Discord bot both rely on the same database and configuration. The app should also treat the Flask dashboard/backend as the source of truth. Do not duplicate role rules, server selection rules, or submission state in the app without an API-backed sync path.
Never put real secrets in the wiki. Document names and locations only:
- Good:
DISCORD_TOKENbelongs in the server.env. - Bad: pasting the token value.
This applies to Discord tokens, OAuth client secrets, database dumps, private rclone configs, keystores, signing passwords, admin passwords, user emails beyond examples, and production private keys.
When a feature changes, update the matching wiki page in the same work:
- Bot command or Discord behavior: Bot
- Dashboard route, page, theme, layout, or API: Dashboard
- Deployment, service, env, backup, or doctor behavior: Server or Maintenance and Backups
- Versioning or release channel behavior: Releases and Updates
- Companion app behavior: App
Future app updates should remove the web-wrapper app approach and move to the SDK app approach.