77e43a6a38
- Created .gitignore to exclude unnecessary files - Added README.md with project description and core features - Introduced CONTRIBUTING.md for development guidelines - Established documentation files for architecture, quality requirements, and technical risks
1.9 KiB
1.9 KiB
Solution Strategy
Technology Decisions
| Decision | Choice | Rationale |
|---|---|---|
| Bot framework | Discord.js (Node.js) | Mature library, strong type support, rich event model |
| Database | PostgreSQL | Reliable, supports JSONB for flexible user state, well-suited for mileage/role tracking |
| Frontend (Admin) | React | Team familiarity, rich ecosystem for dashboards |
| Hosting | Coolify | Easy deployment for Node.js with Nixpacks. |
| Auth | Discord OAuth2 | No custom auth needed, seamless web/bot integration |
Top-Level Decomposition
The system follows a modular monolith pattern with clear separation:
- Core Bot — command handlers, event listeners, Discord Gateway logic
- Content Syndicator — polling adapters for YouTube/IG/TikTok, webhook dispatch
- Event Manager — FIFO queue for stage/speaker management
- Mileage Engine — scoring logic, persistence, state sync with web app
- Admin API — RESTful endpoints for bot config, content scheduling, analytics
Key Quality Goals
- Availability — Stateless bot instances scale horizontally behind load balancer
- Consistency — Write-ahead logging for mileage transactions; periodic state reconciliation with web app
- Extensibility — Adapter pattern for content sources: implement interface, register, deploy
Organizational Decisions
- One-person or small-team development per project scope
- CI/CD via Gitea Actions: lint → test → deploy
- Feature toggles for admin dashboard rollout