Transit Ticketing PWA

ATAC Roma

Self-initiated redesign concept for ATAC Roma's official ticketing platform. ATAC is Rome's public transit operator; its existing digital channel was fragmented across a low-rated app and physical points of sale (tobacco shops, kiosks, vending machines), leaving users — especially tourists — without a reliable digital purchase option. This project proposes a PWA as the unified official sales channel.

Type:

Concept Project

Role:

Product Designer

Duration:

3 weeks

View prototype

view design system

man using MacBook

What I've designed

Information architecture organized around four user profiles (tourist, resident, regional traveler, special fare) rather than ATAC's internal fare nomenclature, including a guided flow for discounted eligibility.

Navigation system with authenticated and unauthenticated states, dynamic badge on pass status, and flow-specific behavior (bar hidden during purchase)

Core user flows covering the full purchase journey: ticket selection, payment, QR delivery, validation state, and payment error recovery

Component library for the ticket card (collapsed/expanded states), navigation bar, badge system, and all four purchase flow screens

Visual system built on a single 8px grid, institutional color usage for QR rendering, and error messaging designed as action-oriented copy rather than technical codes.

Tools

What I've learned

Discovering that ATAC already had a guided ticket recommendation flow on their website — buried and disconnected from purchase — reframed the project: the design problem wasn't inventing the right logic, it was identifying where it already existed and rescuing it. In a next iteration I would involve technical teams earlier to validate which backend integrations are actually feasible before committing to flows that depend on them.

Keep reading…

Designing for three user types with partially conflicting needs — particularly around transparency vs. privacy — required resolving those conflicts at the architecture level before touching the interface. Decisions made in the data model directly constrained what was possible to design.

DESIGN ENGINEERING

DESIGN ENGINEERING

Connect to Content

Add layers or components to swipe between.

Let's talk and build a big project

I bridge the gap between design intent and engineering execution. Here’show systematic thinking applies to both sides.

Resume

LinkedIn

JD Albarran

© 2026, José David Albarrán V. Professional portfolio

I know what the tradeoffs are. Then I make the call.

My socials

JD Albarran

© 2026, José David Albarrán V.
Professional portfolio

Design that hols up
when the product grows.

My socials

JD Albarran

© 2026, José David Albarrán V. Professional portfolio

I know what the tradeoffs are. Then I make the call.

My socials