- 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.4 KiB
Architecture Decisions
ADR-001: Discord.js over Discord.py
Status: Accepted
Context: Node.js and Python both viable. Team has stronger Node.js experience.
Decision: Use Discord.js for the bot runtime.
Consequences: Faster development velocity; ecosystem rich with community plugins (command handling, modals, components).
ADR-002: PostgreSQL over MongoDB
Status: Accepted
Context: Mileage data is relational (user → role → event → score). MongoDB adds flexibility but sacrifices query power.
Decision: Use PostgreSQL with JSONB columns for extensible user metadata.
Consequences: Schema migrations needed for new features; joins straightforward.
ADR-003: Polling over Webhooks for Content Sources
Status: Accepted
Context: YouTube, Instagram, TikTok do not provide push webhooks to arbitrary third parties without approval.
Decision: Poll public APIs on a CRON schedule (15-min interval).
Consequences: ~5 min delay between publish and Discord post; API quota management required.
ADR-004: Modular Monolith over Microservices
Status: Accepted
Context: Single-developer or small team; deployment complexity of microservices not justified.
Decision: Single process with internal module boundaries (commands, events, mileage, syndication).
Consequences: Simpler deploy, debug, and develop; can extract services later if needed.