Inspiration
Big friend groups are fun, but planning anything turns into chaos: 30-message group chats, “I’m free maybe,” and no one wants to be the organizer every time. We wanted a tool that makes availability + decision-making visible and lightweight, so hangouts happen more often and groups don’t split into smaller cliques just because scheduling is hard.
What it does
Plannit is a group hangout planner that combines:
A When2meet-style shared availability calendar (everyone imports or inputs availability)
A proposed events feed, where anyone can suggest a hangout (bowling, dinner, trip planning)
Reactions/voting (Going / Maybe / Can’t) so decisions aren’t buried in chat
A simple flow to lock an event time once enough people can attend Stretch ideas: notifications, in-app messaging, auto-generated hangout ideas, and a shared gallery/todos for trips.
How we built it
Frontend: Next.js + Tailwind CSS for responsive UI
State/Data: Firebase (Auth + Firestore) to store users, groups, events, and reactions
Date handling: Day.js to normalize times, time ranges, and rendering
Async caching: TanStack Query to fetch/update event reactions fast (optimistic updates work great here)
Future add-on: Gemini-powered “hangout idea generator” based on group preferences + time + group size
Challenges we ran into
Time complexity of scheduling UX: turning messy human availability into something simple and readable.
Data modeling: structuring events + reactions so updates are fast and real-time-friendly (especially “who reacted what”).
Timezones & date boundaries: avoiding off-by-one-day bugs and making calendar logic consistent.
State synchronization: ensuring reactions update instantly without UI flicker or stale counts.
Accomplishments that we're proud of
Built a clean MVP that supports the core loop: see availability → propose → react → confirm.
Designed a workflow that reduces “one-person-does-all-the-work” planning.
Made a scalable foundation for stretch features (notifications, messaging, ideas, trip planning).
What we learned
Scheduling is not just a backend problem—it’s a product + UX problem.
Firestore data structure decisions matter a lot for real-time apps (especially reactions/votes).
Time handling requires discipline: consistent formats, careful conversions, and predictable rendering.
TanStack Query makes a collaborative-feeling UI much smoother when lots of small updates happen.
What’s next for Plannit
Notifications (when you’re invited, when an event is confirmed, reminders)
Group messaging attached to each event (so planning stays in one place)
AI event ideas based on free time, group size, weather/location, and past hangouts
Trip mode: multiple date options + voting + shared todos + cost splitting
Customization: group themes, pinned traditions, and a shared “friendship gallery.”
Log in or sign up for Devpost to join the conversation.