🌟 Inspiration
Campus life at NUS is vibrant, but it's buried under a mountain of noise. 🔊 With hundreds of Telegram channels for different clubs, faculties, and interest groups, students face "Information Overload"—missing out on amazing opportunities because their notifications are permanently muted. 🔕 We wanted to create a "central heartbeat" for campus; a way to filter the noise and bring the right events directly to the students who care about them. ❤️🔥
🚀 What it does
UniPulse is an intelligent Telegram-based event aggregator that bridges the gap between organizers and students:
- For Students: A personalized experience. 👤 After a secure NUS email verification, students subscribe to specific interest hashtags (e.g.,
#hackathons,#sports,#dating). They receive a curated feed and daily digests, ensuring they only see what matters to them. 📅 - For Admins: A zero-friction toolkit. 🛠️ Club leads simply post in their own channels using the
#unipulsetag. Our bot automatically scrapes the metadata, images, and event details to populate the central database. 📥 - Smart Features: Integrated "Add to Calendar" functionality and automated reminders to ensure high event turnout. 🔔
🏗️ How we built it
We designed UniPulse with a focus on scalability and resilience. The architecture follows a "Node-based" approach where the bot acts as a listener and a distributor. We used a webhook-based system to ensure real-time responsiveness while maintaining high security. 🛡️
🛠️ Technologies used
- Languages: Python 🐍 (FastAPI / python-telegram-bot)
- Database: Supabase ⚡ (PostgreSQL) with Row Level Security (RLS)
- Authentication: Supabase Auth with custom SMTP for NUS email verification 📧
- Hosting: Render ☁️ (Web Service)
- Monitoring: BetterStack 📈 (Uptime & Heartbeat monitoring)
- Design: Figma 🎨
🚧 Challenges we ran into
- Security & Webhooks: Moving away from simple polling to a secure webhook architecture required implementing secret path obfuscation and token verification to prevent spoofing. 🕵️♂️
- Database Synchronization: Managing the "Delete" flow between Supabase Auth and our public
accountstable required setting up complex PostgreSQL foreign key constraints withON DELETE CASCADE. ⛓️ - Hosting Constraints: Navigating the "spin-down" behavior of free-tier hosting meant we had to implement a custom heartbeat system to keep the bot responsive 24/7. 💓
🏅 Accomplishments that we're proud of
- Seamless Integration: Building a bot that requires zero change in behavior for club admins—they just use a hashtag, and we do the rest. ✨
- Robust Schema: Creating a relational database that handles many-to-many relationships for event categorization efficiently. 📊
- Verification Flow: Successfully implementing a secure NUS-only verification system to ensure a safe community environment. 🎓
📚 What we learned
We gained deep insights into the Telegram Bot API and the importance of a "security-first" mindset when dealing with webhooks. 🔐 We also learned how to leverage Supabase’s relational power to handle complex user subscriptions and how to optimize a Python backend for high-concurrency event listening. 🏎️
🔮 What's next for UniPulse
We plan to expand UniPulse by implementing a Telegram Mini App (TMA) to provide a rich, visual dashboard for students to browse historical events. 📱 We also aim to introduce AI-driven event recommendations based on user engagement patterns.
Log in or sign up for Devpost to join the conversation.