← Portfolio
Hangout
Case study · Internal product

Hangout

Finding the evening when we are all there, without thirty-two chat messages.

What it isPublic web app to organize an evening
RoleDesign, development, infrastructure
StackRust · Yew · Axum · PostgreSQL
StatusOnline, in free preview
The problem

The date is not decided in chat

Eight people, one group, one simple question: when are we seeing each other? The round of «I can't on Thursday» begins, someone responds two days later, the good proposal ends up buried and in the end nothing happens. The problem is not good will: it's that a chat doesn't keep track.

Hangout keeps track. The organizer proposes a window of days and hours, sends a link, and everyone colors the slots they are in. The grid heats up where there are more people: the right evening can be seen at a glance, without anyone having to do the math by hand.

The shared grid: each cell is a day for a time slot, and the hotter it is, the more people there are.
How it works

Three steps, no app to install

  1. Propose

    Title, day range (up to 31), time slot and slot duration. The preview grid starts all full — remove what doesn't work — or all empty, and you just check the possible ones.

  2. Share

    A link, and that's it: no email invitations, no address book to upload. Whoever receives it can enter with the mop.dev account or stay as a guest, without registering and without leaving an address.

  3. Decide

    The ranking orders the groups by how many people there are, the organizer chooses and everyone receives the confirmation with the file for the calendar.

The product decision

Three states, not two

The classic survey asks yes or no, and loses the information that really matters: that half-availability that unlocks the evening when there is no perfect date.

  • There areFull count in the leaderboard.
  • If neededI move if it's the only way for all of us to be there.
  • EmptyThere aren't any — and it goes without saying, just don't color.

Tiers are ordered first by «available», then by «if needed», then by date: the top three remain highlighted, and those who have not yet responded are in a separate list, so the organizer knows whom to nudge.

An evening organized with Hangout
The ranking answers only one question: which evening has the fewest people missing.
The friction

Those who receive the link do not need to sign up for anything

An invitation that asks for registration first loses half of the people. Here the guest writes their name and colors: they are recognized by a site-only cookie, without an account and without being asked for an email address.

Guest in two seconds

Name, and you're in. No password, no verification, no email collected.

If you register later, it's still you

Whoever enters as a guest and later logs in with mop.dev can claim their row: answers already given remain where they are.

The name is of the event

Name and photo apply within that hangout and never touch the account profile: you can be «Ale» with friends and remain something else elsewhere.

The link can be revoked

If an invitation ends up where it shouldn't, the organizer regenerates the code and the old link stops working.

Light theme: dinner at homeDark theme: a night of neon
The same guests around the same table: set in light theme, lit in neon in dark theme.
Visual identity

Two lights, not two preferences

Almost everywhere, the light and dark themes are the same interface with the light reversed. Not here: they are the two occasions for which the app exists. Light is dinner at home — warm paper, terracotta, soft shadows. Dark is an evening out — ink, magenta, cyan, glass, and glows.

It's not a rewrite: the entire app reads colors from the site tokens, so changing the two palettes re-illuminates every screen, grid included. And the theme is decided before the page is drawn, so those arriving with a device in dark mode never see a flash of white.

Under the hood

Built to be reused

Hangout is the first application of an engine that doesn't know what a hangout is. The hard part — proposals, participants, availability, ranking — lives in a library of its own, and whoever hosts it adds their own identity and name on top.

An engine, more customers

The engine knows no users, domains or cookies: it receives an opaque identity and keeps the events of each application separate. Tomorrow the same mechanism can reside inside a client's management software without copying a single line.

The same math on both sides

The tier and ranking rules are compiled both on the server and in the browser: the preview you see while creating is calculated by the same functions that the server will use to validate it.

Live updates

The grid does not reload manually: the server announces variations on an open stream and every updated card redraws itself when someone responds.

Server-side rendering

Every page arrives already written by the server and then «lights up» in the browser: it's read immediately even on a slow network, and the shared link shows the correct title in the preview.

Seven languages

The platform is built for seven languages: Italian is the original and the other six are extracted, translated and kept aligned by in-house tools, so a new screen doesn't fall behind.

No third-party services

No external calendars, no survey platforms, no ad tracking: code, databases, and images are on the same infrastructure as the rest of the shop.

In numbers

The limits, declared

31maximum days per window
100participants per hangout
30/60minutes, the duration of a time slot
5hangouts per month in preview
180days, then it deletes itself
0emails requested from guests
Privacy

Less data is a design choice

Whoever opens the link sees the title, the organizer, and how many people there are: the grid with names is visible only to those who have entered. The app pages do not end up on search engines, and six months after the last proposed day, the hangout deletes itself — names and photos included.

Whoever deletes their account takes with them everything they have created: it is the database that guarantees it, not a procedure to remember.

Preview

Free now, with an honest cap

During the preview, each account can create five hangouts per month; participating consumes nothing and is unlimited. The count resets on the first of the month and is written on the creation page, not hidden in an error message.

This is the place where, later on, paid plans will arrive for those who organize often.

Try it: you decide the next evening in an afternoon

Hangout is free, it is online, and asks nothing of whoever receives the invitation.