Inspiration
Football fans on Discord suffer from fragmented information. Admins struggle to keep match updates live, while members are lost in chaotic chat logs. I wanted to build a centralized, reliable, and intelligent hub that serves both the community and the admin.
What it does
- Admin Dashboard: A custom React-based control panel to manage matches and scores in real-time.
- Discord Integration: A bot that pushes live match updates to specific channels chosen (defined via webhook) by the admin.
- AI-Powered Assistant: Users can query the bot using /ai_ask. The AI acts as a sports analyst, summarizing match states based on live data, and can be configured with custom "personalities" via the dashboard.
- Reliability First: Includes a /scores command for an instant, clear view of match results, ensuring the community stays informed even if the AI is not needed.
How I built it
- Frontend: NextJS, TanStack Query + TypeScript (for the Admin Panel).
- Backend & DB: Supabase (for persistent match data and server settings).
- Bot: Discord.js for real-time interactions and message handling.
- AI: Gemini API with a RAG-inspired approach, feeding live match context into the model based on the chosen personality.
- Deployment: Vercel (for the web panel) and Railway (for the bot logic).
Challenges I ran into
The biggest challenge was ensuring data consistency between the admin dashboard and Discord. Solving this required a robust synchronization layer in the database. Another hurdle was creating a seamless "personality-switching" mechanism for the AI without causing latency in responses.
Accomplishments I am proud of
- Built a fully functional MVP with an end-to-end data flow in under 48 hours.
- Implemented a flexible architecture where the core features (scores/updates) remain operational regardless of external AI service availability.
- Created a truly intuitive admin-to-bot workflow that removes manual channel configuration overhead.
What I learned
I learned the importance of prioritizing core features over "hero" design during time-constrained events. Keeping the stack focused on reliable technologies (NextJS + Supabase) allowed me to deliver a robust tool rather than a flashy but empty prototype.
What's next for FootMatches
- Multi-sport support: Expanding the database schema to handle basketball, tennis, and more.
- Advanced AI analytics: Training or fine-tuning the model for deeper game predictions.
- Community Widgets: Browser-based widgets that display live match scores outside of Discord.
Built With
- express.js
- nextjs
- postgresql
- supabase
- transtack
- typescript
Log in or sign up for Devpost to join the conversation.