Project case study · 2026

NYC / BUILD.

Bringing event dates, application deadlines, and registration details into one view for people looking for their next project or competition.

Format
Interactive web application
Implementation
Next.js · React · TypeScript
Dataset
36 opportunities · Fall 2026

The problem

An event date is only part of the decision. Applications may close earlier, registration may require approval, and some opportunities have recurring sessions or dates that are still unconfirmed.

The application brings those details together while keeping the organizer’s source available for checking.

What the project includes

The implementation covers the event data model, filtering and date logic, calendar and list views, event detail dialogs, and responsive layouts.

  • One set of records, two views. The calendar and chronological list share the same filters and event data.
  • Separate deadlines and events. Application deadlines appear alongside event dates without being treated as the same thing.
  • Explicit unknowns. Undated opportunities and unverified registration details remain visible with appropriate labels.
  • Keyboard interactions. Date navigation supports arrow keys; event details use a native dialog with a close control.

Technical decisions

Typed records represent single-day events, date ranges, recurring sessions, and separate deadlines. Pure filtering and date helpers keep those rules separate from the interface and allow them to be tested directly.

React manages the selected date, filters, and view. The Next.js page provides a direct link to the application within the wider personal site. Shared design tokens support light and dark themes.

Validation & limits

Automated tests cover filtering, multi-day and recurring events, deadline handling, and input validation. The interface also includes empty states for combinations with no matching opportunities.

The dataset is a fixed snapshot of 36 opportunities, not a live registration feed. Dates and availability can change; visitors should check the linked organizer pages before applying.

Next questions

A next iteration could record when each listing was last checked and provide a review process for updates. The design question is how to make freshness visible without suggesting that an unverified listing is current.