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.”

Built With

Share this project:

Updates