← Back to all workDriver-Safety App · 0→1 Product

Perceev

A road-safety companion for the one operator who can’t look twice — the driver. Speed, upcoming signs, forward-collision and lane-keeping, each pared to what reads in the half-second a moving driver can spare.

Role
Sole Product Designer
Client
Freelance — France
Platform
iOS · Android (Flutter)
Duration
~1 month — concept → product
Year
2022
Onboarding — what it watches
Onboarding — what it watches
Main screen — speed, sign, and a forward-collision brake cue
Main screen — speed, sign, and a forward-collision brake cue
Lane-keeping — the teal “stay in lane” state
Lane-keeping — the teal “stay in lane” state
01
The setup

A glance too long is the hazard

Most apps compete for attention. A driving app has to do the opposite — it earns its place only if it costs the driver less attention than going without it. The operator’s eyes belong on the road; anything that pulls them off for a second is, in this context, the risk itself. That single constraint governed every decision in Perceev.

The brief was personal. The client, based in France, had been in a minor accident, traced it back to its cause, and wanted a tool that kept ordinary drivers inside the basics — current speed limit, the signs and signals coming up, a warning when the car runs over the limit, and an alert for what’s closing in ahead. A safety net for the parts of driving attention quietly drops.

So the working principle was set before a single screen: optimise for time-to-comprehension, not completeness. One message per moment, large enough to read without a second look — because the second look is the thing the product exists to prevent.

Sign recognition — limits and signals, read ahead
Sign recognition — limits and signals, read ahead
Forward objects — what’s closing in front of you
Forward objects — what’s closing in front of you
Lane position — drift and lane-keeping
Lane position — drift and lane-keeping
02
The blank canvas

An idea with no picture of itself

The client arrived with the what and none of the how. He could describe the behaviour — watch the road, warn the driver — but had no notion of what the product should look or feel like: how the car should be drawn, where the logo sat, what point of view the driver should be looking from. There was no reference app to point at and say “like that.”

That gap was the actual commission. Turning a one-sentence safety idea into a real digital product meant inventing its entire visual and interaction language from scratch — the perspective, the car, the colour semantics, the typographic hierarchy, and the handful of components everything else would be built from.

Identity — the indigo-to-violet brand, set against the road at dusk
Identity — the indigo-to-violet brand, set against the road at dusk
First run — find the device the app rides alongside
First run — find the device the app rides alongside
03
The decision

Put the driver inside the windshield

The choice that made the rest cohere: render the road from the driver’s own point of view — a chase-cam looking down the lane at the car ahead — so the screen mirrors what’s through the glass instead of asking the driver to translate a top-down map. The on-screen scene and the real scene line up, which is what lets a half-second glance land.

With the perspective fixed, colour carries the message so words don’t have to.Teal means clear and active — your speed, your lane, you’re fine. Red means act — brake, danger, close. The driver doesn’t read the screen so much as register its colour, which is the whole point.

Brake state — red owns the screen the instant the gap closes
Brake state — red owns the screen the instant the gap closes
Lane state — teal beam confirms you’re holding the lane
Lane state — teal beam confirms you’re holding the lane

Same screen, two states — and you can tell them apart from the passenger seat, which is the bar.

04
The hard part

One number does the heavy lifting

Glanceability is a hierarchy problem. Speed is the hero — the largest element on the screen, because it’s the one value a driver checks most and the one the law cares about. Everything else is peripheral: the upcoming sign, the time, the lane beam, the collision cue sit in support, sized so they’re available to a glance without competing for it.

Night was a design requirement, not a preference. A bright screen at night blinds the operator it’s meant to protect, so the driving default is the dark surface — speed and cues glowing off near-black, the cabin kept dark. The day and night surfaces aren’t a cosmetic theme; they’re a safety boundary the rest of the system had to honour.

Pedestrian / hazard ahead — the danger state escalates the same red language
Pedestrian / hazard ahead — the danger state escalates the same red language
Clear run — teal, calm, speed within the limit
Clear run — teal, calm, speed within the limit
Night — the same scene, tuned so it never blinds the driver
Night — the same scene, tuned so it never blinds the driver
05
The companion

Running before the driveway

Perceev rides alongside a device, so the connect flow had to be the least interesting part of the experience — find, pair, done. The goal is a driver who never thinks about setup: the safety layer is already live by the time the car leaves the driveway, because asking someone to fiddle with pairing once they’re moving would reintroduce the exact risk the app removes.

Even the failure state pulls its weight. “No device found” is written as a safety message, not a dead error — it tells the driver plainly that the assist isn’t active yet and what to do about it, in the interface’s own voice, never apologising and never vague.

Searching — scanning for the paired hardware
Searching — scanning for the paired hardware
Paired — the assist is live; nothing else to do
Paired — the assist is live; nothing else to do
Empty state — a clear safety message, not a broken screen
Empty state — a clear safety message, not a broken screen
The design system

A language built to be read at speed

Because there was no precedent to borrow, the whole thing had to be invented as a system: a tight colour vocabulary with fixed meanings, a road-sign set drawn to one grid, a type ramp anchored by a single giant numeral, and a small family of components reused across every state. The screens above are assembled almost entirely from the primitives below — that economy is what lets a one-month build still feel like one product.

Colour is the message

Two semantics do the work: teal = clear / active andred = act / danger. Indigo and violet carry the brand; two neutral surfaces draw the line between day and night driving.

Indigo#4F46E5
Brand · splash · time pill
Violet#9B5DE5
Brand gradient partner
Teal#1FD9C4
Active · speed · lane — “you’re clear”
Teal deep#12B5A3
Lane-beam depth · pressed state
Brake red#F5333B
Forward-collision · danger
Sign red#E8252D
The road-sign system
Night#262A2E
Night surface — the driving default
Mist#F3F5F7
Day surface

The road-sign vocabulary

Recognition beats labelling, so the system leans on signs every driver already knows — redrawn to one geometry, one stroke weight, one red, so they read identically whether they sit in the HUD or surface as an upcoming-signal cue.

50
Speed limit
No entry
STOP
Stop
Crossing
Pedestrian
Caution

Type, anchored by one numeral

The ramp is deliberately top-heavy. The speed reading is enormous and tabular so the digits never shift; everything below it steps down hard, because in a glance interface a flat hierarchy is a failed one.

Speed · display
800 · tabular
65
Unit · caption
500 · mono
km / h
State label
700 · uppercase
USE BRAKE
Secondary label
700 · uppercase
STAY IN LANE
Meta · caption
500 · mono
Paired · assist active

The HUD components

A small family, each rebuilt here from the system — the same parts the screens are assembled from.

Speed readout
65km/h
Time pill
12:35
Sign indicator
Limit ahead
State cue · brake / lane
Use brakeStay in lane
Assist toggle · on / off
Status chip
Paired · assist active

The perspective primitive

The signature element: the driver’s-eye scene. The same primitive renders every state — only the colour of the road changes. Teal when you’re clear; red when the gap ahead demands the brake.

CLEAR
Lane · clear
BRAKE
Forward collision · act

Day & night, one component

Every surface was specified twice — a daylight skin and the near-black night skin that’s the driving default. Same hierarchy, retuned contrast. (The same discipline this portfolio now ships with its own light / dark switch.)

Night · default
12:35
65km/h
Stay in lane
Day
12:35
65km/h
Stay in lane

Foundations

Radii

Soft on the chrome, fully round on pills and the assist toggle.

Spacing · 8-pt

A flat 8-pt rhythm — enough scale for a glance grid, no more.

Motion

State changes snap (~140ms). A safety cue can’t wait for an animation to finish.

Main-Screen-Break-Indicator — every primitive above, assembled into the screen the driver actually sees
Main-Screen-Break-Indicator — every primitive above, assembled into the screen the driver actually sees
06
The outcome

A sentence, turned into a shipping app

Concept to product in about a month, as the sole designer — the visual language, the interaction model, and the component set all originated here. The work carried forward into engineering and was built in Flutter, shipping on bothiOS and Android.

Roughly four months on, the client got back on a call and demoed the working app — his idea, born out of a real accident, now running on a phone. The honest read is qualitative: there’s no controlled in-traffic study behind it, and that’s the next thing this project would earn. What it does show is a clean 0→1 — a vague brief taken to a coherent, buildable product, and a client who saw his own idea come back to him as something real.

07
The postmortem

What a v2 would have to earn

The whole product rests on a claim — that these states read at speed — and that claim was validated at a desk, not behind a wheel. The discipline I’d add next is in-context testing: legibility checked while actually in motion, at night, in glare, because a safety claim is only as good as the conditions it was tested under. The visual language has aged well; the proof is the part still owed.