Skip to content
Syed Zubair
All work

Case study 07

From a volunteer's first click to a full shift plan.

Two web apps for a UK events company. One signs up talent and posts jobs. The other plans headcount and shift demand for the day of the event.

Company
WeTeck
Year
2023
Platform
Web
Stack
Next.js 13, React 18, Tailwind, Headless UI
Status
Live
The CrowdWRK headcount table and the CrowdTONIC job board kanban, above the line: Every shift, staffed and counted.
80+
pages across both apps
16
question types in the form builder

01 / The problem

An events staffing business had spreadsheets for talent, spreadsheets for shifts and spreadsheets for headcount. Nobody had one shared view of who was available, who was assigned, and how many people a shift still needed.

02 / What I built

  • Six steps for candidates

    A candidate signup flow, plus a separate onboarding flow for companies.

  • One board for every job

    A job board with multi select filters, a status view you can drag through, and a column picker.

  • A map of the day

    Project pages with team maps, route lines, calendars and task checklists.

  • Headcount that adds itself up

    Planning across event, department, function, role and position, with shift demand worked out automatically.

  • A form builder with real range

    16 question types, with nested yes or no follow ups.

  • A public wizard for everyone

    34 steps for volunteers, 14 for professionals.

03 / Key decisions

01

Tabs load only when you open them

Using next/dynamic, the first page load stays light even though a tab takes a moment to load once you click it.

02

Shared building blocks across both apps

Filter comboboxes, the toast and the confirm modal are shared components. It took more upfront design work, but kept both apps feeling the same.

03

Colors and type live as tokens

The type scale and color palette sit in the Tailwind config, so a style change updates both apps from one place.

04

One profile fetch feeds the whole app

The profile loads once through context, instead of every screen fetching it again, which cuts repeat requests.

05

The form builder reads a schema

One field component handles each question type. Adding a new question type means writing one component, not touching every form.

04 / Outcome

Both apps are live and run the day to day work of an events staffing business.

They sign people up, build the job board, and work out how many people a shift still needs.

Contact

Got an idea? Let's build it.

Start a project
Next case studyV2MOM 01 / 07