Projects

Collaborative web application / Production preview

Hangout Planner

Hangout Planner is for casual group planning where the easiest path is usually a shared link, not another account. The app has to let someone create an event, invite people, collect availability or answers, and compare the results without making the group sign up first.

I built a React and Node planning flow with event creation, availability selection, optional questions, participant notes, share-link completion states, and group-facing result views backed by PostgreSQL.

Hangout Planner group results calendar with best dates and availability counts
Group results view showing best dates and availability spread for a synthetic event.
Role
Sole developer
Focus
Product and full-stack workflow
Maturity
Production preview
Access
Public; no-login participation
Technologies
  • React
  • TypeScript
  • Vite
  • Node.js
  • PostgreSQL
Last reviewed
Aug 2026

The problem

What the project had to handle

The nontrivial constraint is continuity. Participants still need a way to return, update, and avoid duplicating responses even though the product deliberately avoids formal user accounts.

The project uses share links, organiser continuity tokens, participant tokens, and browser storage so people can return to the same planning flow without creating accounts.

Key decisions

The shape of the build

Share-link continuity

Organiser and participant paths rely on shareable event links plus local continuity tokens instead of account creation.

That keeps the participation barrier low while still giving returning visitors a consistent planning path.

Transactional vote replacement

Availability and response updates replace the participant token’s prior vote set as one coherent change.

The result view can represent the latest known intent instead of accumulating stale duplicate responses.

Group-results-first views

Calendar results, best-date summaries, notes, and question answers are shaped around what the organiser needs to decide.

The application moves past collection into comparison, which is where the planning value actually appears.

How it works

End-to-end flow

An organiser creates an event and receives a share link. Participants open the link, submit availability and question responses, and can return through browser-stored continuity. Results group those responses into calendar availability, best dates, notes, and follow-up answers.

Planning flow

Event link
Availability
Polls

Hangout Planner

Shared event links, participant responses, and group-facing results.

What I implemented

The working surface

Event creation

  • Built event details, date-range, response-type, and question configuration flows.
  • Added required-field validation and completion states around the share link.
  • Supported availability-only, questions-only, and combined planning flows.

Participant workflow

  • Implemented no-login response paths through shared links.
  • Supported drag-to-select calendar availability and optional notes.
  • Stored participant continuity without presenting it as formal authentication.

Results and decisions

  • Built group-facing calendar results and best-date summaries.
  • Grouped written and option-based answers for organiser review.
  • Improved saved/unsaved cues so participants can see whether their response was saved.

Frontend and persistence

  • Integrated the React and Vite frontend with a Node API and PostgreSQL persistence.
  • Kept public participation separate from organiser controls.
  • Kept operational claims qualified to the production-preview scope.

Validation

Checks and evidence

Public application observed

The public application and health routes were reachable during the latest review.

Creation, participation, and results

Event creation, participant response, and group results workflows are implemented.

Persistence and continuity checked

PostgreSQL persistence, organiser continuity tokens, participant tokens, and browser-stored return state are part of the implemented flow.

make check passed

`make check` passed for the project surface.

Current state

Production-preview public app with no-login participation.

Continuity uses links and tokens for return visits.

Backup proof and hardened deployment operations remain open, so the deployment stays labelled as a production preview.