Selected work

Toplo — UX Case Study

A UX audit and redesign of the reservations screen of Toplo, a fictional web app for managing meeting rooms and coworking spaces.

Role
UX/UI Designer (solo)
Project
Concept · fictional product
Timeline
July 2026
Platform
Web · desktop, tablet, mobile

Skills · UX audit · Interaction design · Component design · Responsive design · Figma

16usability issues found in the audit
3step booking drawer, instead of a modal
Part 1

UX audit

For every issue: what's wrong, why it hurts, and what it should be.

The original Toplo reservations screen, annotated in red pen with 11 numbered usability issues; each number matches an item in the list below
The starting point · the original reservations screen, desktop (1440px)
Feedback & errors
  • 12Booking conflicts shown in a toast that disappears→ Show free slots up front; busy times can’t be picked
  • 13Format errors in a toast, not at the field→ Inline validation under the field
  • 14Delete with no confirm or undo→ Confirmation, or soft-delete with “Undo”
  • 1Export disabled, reason only on hover→ Always-visible helper text
Controls & signifiers
  • 2“Pick one” label on checkboxes→ Segmented control or radio
  • 3Required date range typed by hand→ Date range picker
  • 4Icon-only actions, no text labels→ Labelled “Edit” and “Delete” buttons
  • 5Action icons only 24×24px→ At least 44×44px touch targets
  • 6A “Save” button with no clear purpose→ Clarify it, or remove it
Navigation & orientation
  • 7Breadcrumb doesn’t match the side menu→ Same labels, clickable
  • 8Load-more and pagination on one screen→ Pick one: pagination
  • 9“Total 118 records”, but which ones?→ “Showing 1–6 of 118”
Data & layout
  • 15New booking modal hides the table→ Side drawer; the table stays visible
  • 10Export needs a selection, but rows can’t be selected→ Row checkboxes + “select all”
  • 11No status field: active, cancelled or past?→ A “Status” column with coloured badges
  • 16No tablet or mobile design for a 118-row table→ Responsive card layout
Part 2

Redesign

Reservations tableBooking drawerComponent decisions
After: redesigned reservations table with segmented filter, date picker, row checkboxes, status badges and labelled actions
Before: the original reservations table
BeforeAfter
Drag the handle to compare. Before on the left, after on the right.
Component decisions

Every control says what it does

Segmented controlRoom type is one choice out of four, so the control now says so.
Date range pickerNo more typing GG.AA.YYYY: no format errors, no invalid ranges.
Export, always enabledNothing selected = export the filtered list. Rows selected = export those.
Row checkboxesBulk export needs a selection model; the header box selects all.
Labelled actions“Edit” and “Delete” instead of a pencil and a bin: fewer mis-taps.
Status badgesActive, past, cancelled: colour and text together.
Merged columnsRoom + type, date + time, owner + team: 10 columns down to 8.
Names, not IDs“Last updated by” shows an avatar and a name, not admin_02.
Sortable dateThe oldest of 118 records is one click away, not 12 pages.
Pagination only“1–6 of 118” plus rows per page. Load-more stays for mobile.
“Save” removedNothing to save in a list. One primary action: + New reservation.
Delete = modalAn irreversible action deserves a pause; edit opens a drawer.
New reservation

A drawer, not a modal

The table stays visible while you book, and the form is long enough to need the height. Three steps: room, date & time, attendees.

Step 1: choose a room — searchable list with room type chips and availability badges
Step 1 · Room · search, filter by type, see availability
Step 2: date and time — calendar, start and end time, quick duration chips and an availability message
Step 2 · Date & time · availability confirmed before you continue
Part 3

Responsive logic

The smaller the screen, the more the table gives way to priority: first columns collapse, then rows become cards.

ComponentDesktop · 1440Tablet · 768Mobile · 375
TableFull table: merged columns, selectable rows, sortable datePriority columns; the rest in an expandable rowCards; details in a bottom sheet
FiltersSegmented control, date range picker, export with helper textGrouped under one Filters buttonGrouped under one Filters button
Side menuIcons added next to labelsNarrow, icons onlyHamburger menu
New reservation3-step side drawer3-step side drawer3-step bottom sheet
Tablet: narrow icon menu, filters grouped under one button, an expanded row showing ID, department, last updated and created date
Tablet · 768px · lower-priority details open in an expandable row
TabletFewer columns, nothing lostID, department, last updated and created date move into an expandable row.
MobileScan down, not acrossEach reservation is a card. Details and booking open in a bottom sheet.
Mobile reservations list as cards with date, owner, attendees, edit and delete buttons
Cards instead of a table
Mobile bottom sheet with reservation details: ID, last updated by, created date and an edit button
Details in a bottom sheet
Mobile new reservation bottom sheet, step 2 of 3: date and time with a calendar
Booking as a 3-step bottom sheet
Next projectResearching the Foundations of an E-Commerce Design System