JoinLah: Telegram Event Management System
Inspiration
In Singapore’s vibrant community scene, organizing events often involves a messy trail of Google Forms, Excel sheets, and scattered WhatsApp groups. JoinLah was built to centralize this ecosystem within Telegram, the platform where communities already interact. Our goal was to make event management as simple as sending a text message.
What it does
For Participants
- Instant Registration: Sign up for events immediately using deep links (
/start ev_<eventId>) or QR codes. - One-Tap Profiles: Set up your profile (Name, Phone) once; our PostgreSQL backend remembers you for all future events.
- Comprehensive Details: View essential info like Date, Time, Location, and Capacity in beautifully formatted Event Cards.
- On-Behalf Registration: Register friends or family members who may not be on Telegram to ensure inclusivity.
For Organisers
- Interactive Dashboard: Manage all events from a central menu using an "app-like" interface with Inline Keyboards.
- Wizard-Style Creation: A step-by-step guide (Name → Date → Time → Location → Photo) that replaces messy traditional forms.
- Broadcasting & Publishing: Publish premium event listings directly to channels and send reminders to all registered participants.
- Data Management: View real-time attendee statistics and export participant lists to Excel (.xlsx) for offline management.
How we built it
We utilized a modern, modular stack designed for scalability:
- Runtime: Node.js for handling fast, asynchronous bot interactions.
- Framework: Telegraf.js, using Scenes for multi-step state management and "Wizard" workflows.
- Database: Supabase (PostgreSQL) for robust relational data handling and user profile persistence.
- Tools: ExcelJS for data exports and a modular codebase divided into business logic (
ops/), database queries (db/), and formatting (utils/).
Challenges we ran into
- Reliable Hosting: Since Telegram bots often run via polling, they don't naturally bind to a port. We overcame this by building a lightweight HTTP health-check server alongside the bot to ensure 100% uptime on Render.
- Date Handling: We had to develop custom parsing logic to ensure "Singapore-style" date and time inputs were correctly translated into standardized database formats.
Accomplishments that we're proud of
- Seamless UX: Moving away from text commands to a fully interactive, button-driven dashboard.
- Deep Linking: Successfully implementing instant-access links that take users directly to specific event sign-up flows.
- Persistence: Creating a system where users never have to type their contact details more than once.
What we learned
We gained deep insights into state management within conversational UIs and the importance of modular architecture when building complex bot logic. We also learned how to bridge the gap between "chat-based" interaction and traditional relational database structures.
What's next for JoinLah
- Automated Updates: Implementing a built-in broadcast system for real-time event updates.
- Payment Integration: Handling ticket fees securely via Stripe or PayNow APIs.
- AI Recommendations: Using machine learning to suggest events to users based on their past interests and registration history.
Built With
- dotenv
- exceljs
- http
- jest
- node-postgres
- node.js
- npm
- postgresql
- render
- supabase
- telegraf.js
- telegram
Log in or sign up for Devpost to join the conversation.