Inspiration
Planning hangouts with friends sounds simple, but in reality it’s messy. Everyone has different schedules, preferences, and overlapping commitments spread across chats, calendars, and memory. Group chats get flooded with “I’m free maybe” messages, activities never get decided, and plans fall through. Especially when the chat gets flooded, some people stop replying or miss key messages entirely, so decisions get made late (or not at all) and the plan dies. We wanted to build something that removes the back-and-forth and turns planning into a clear, collaborative process.
What it does
Schedulah is a Singapore based social calendar that helps groups:
- Find a time that works for everyone
- Decide on activities or experiences together
- Lock in hangouts with confidence Users can create groups, propose hangouts, vote on availability and preferences, and finalise plans in one place. Instead of endless discussions, Schedulah turns planning into structured decisions with a clear outcome.
How we built it
Schedulah is built as a full-stack web application with a clear separation between frontend, backend, and database.
- A modern React frontend handles user flows like group management, voting overlays, and calendar views.
- An Express backend manages business logic such as proposals, voting, locking outcomes, and final events.
- Supabase provides authentication, PostgreSQL storage, and server-side data integrity with constraints and triggers. The system supports recurring events, voting states, proposal locking, and finalised outcomes. The architecture was designed to scale from simple hangouts to more complex group planning.
Challenges we ran into
- Handling recurring events correctly across date ranges without duplicating data
- Designing a flexible voting system that supports time-only, time-activity, and experience-based voting
- Preventing duplicate or conflicting data while keeping the UI responsive
- Synchronising state between frontend interactions and backend constraints
- Balancing UX simplicity with complex logic behind the scenes
Accomplishments that we're proud of
- A working end-to-end flow from proposal → voting → lock → final event
- A reusable and extensible recommendation system for activities and experiences
- Clean database constraints that enforce valid states automatically
- A clear, intuitive UI that hides complex logic from the user
- A scalable foundation that can grow beyond MVP features
What we learned
What we learned is that designing for collaboration goes far beyond creating a polished interface — it requires clear and well-defined state transitions so everyone always understands what stage a plan is in. We also learned that strong database constraints are incredibly powerful for preventing bugs early and enforcing valid states automatically. Handling recurring events turned out to be more complex than expected and required careful logic and testing to get right. Most importantly, effective planning tools succeed by reducing friction and decision fatigue, not just by adding more features. Throughout the project, we learned the importance of iterating quickly while still keeping the underlying architecture clean and scalable.
What's next for Schedulah
- Smarter recommendations based on group preferences
- Activity swipe based voting for faster decisions
- Calendar sync with external calendars
- Notifications and reminders for locked events
- Mobile-first optimisations and polish
- Analytics on group planning habits
Built With
- express.js
- github
- materialui
- react
- supabase
Log in or sign up for Devpost to join the conversation.