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

Perceev

A road-safety companion for the one person who cannot look twice while driving. Speed, upcoming signs, forward-collision and lane-keeping, each cut down 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 to 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 long glance is the danger

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 driver's eyes belong on the road, and anything that pulls them off for a second is, in this case, the risk itself. That one constraint drove every decision in Perceev.

The brief was personal. The client, based in France, had been in a minor accident, worked out what caused it, and wanted a tool that kept ordinary drivers on top of the basics: the current speed limit, the signs and signals coming up, a warning when the car goes over the limit, and an alert for what is closing in ahead. A safety net for the parts of driving that attention quietly drops.

So the working principle was set before a single screen was drawn: design for how fast it can be understood, not how much it shows. 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 is closing in front of you
Forward objects: what is 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 design yet

The client arrived with the what and none of the how. He could describe the behaviour, watch the road and warn the driver, but had no idea 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 see from. There was no existing app to point at as a reference.

That gap was the actual job. Turning a one-sentence safety idea into a real product meant inventing its whole visual and interaction language from scratch: the perspective, the car, the colour meanings, the type 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 tied it together: 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 is through the glass instead of asking the driver to read a top-down map. The scene on screen 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 do not have to. Teal means clear and active: your speed, your lane, you are fine. Red means act: brake, danger, close. The driver does not so much read the screen as register its colour, which is the whole point.

Brake state: red takes the whole screen the instant the gap closes
Brake state: red takes the whole screen the instant the gap closes
Lane state: the teal beam confirms you are holding the lane
Lane state: the teal beam confirms you are holding the lane

Same screen, two states, and you can tell them apart from the passenger seat. That was the test.

04
The hard part

One number does the most work

Reading at a glance is a hierarchy problem. Speed is the hero: the largest element on the screen, because it is the one value a driver checks most and the one the law cares about. Everything else sits in support: the upcoming sign, the time, the lane beam and the collision cue are sized so they are there for a glance without competing for it.

Night was a design requirement, not a preference. A bright screen at night blinds the driver it is meant to protect, so the driving default is the dark surface, with speed and cues glowing off near-black and the cabin kept dark. The day and night surfaces are not a cosmetic theme, they are a safety boundary the rest of the system had to respect.

Pedestrian or hazard ahead: the danger state uses the same red language
Pedestrian or hazard ahead: the danger state uses 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

Live before you leave 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 are moving would bring back 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 is not 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 built as a system: a tight set of colours with fixed meanings, a road-sign set drawn to one grid, a type scale anchored by a single giant number, and a small family of components reused across every state. The screens above are put together almost entirely from the parts below, and that is what lets a one-month build still feel like one product.

Colour is the message

Two meanings do the work: teal = clear / active and red = act / danger. Indigo and violet carry the brand, and 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 · 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 shape, one stroke weight and one red, so they read the same whether they sit in the HUD or show up as an upcoming-signal cue.

50
Speed limit
No entry
STOP
Stop
Crossing
Pedestrian
Caution

Type, anchored by one number

The scale is deliberately top-heavy. The speed reading is huge and tabular, so the digits never shift, and everything below it steps down hard, because in a glance interface a flat hierarchy does not work.

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 put together 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 element

The signature element: the driver's-eye scene. The same element renders every state, and only the colour of the road changes. Teal when you are clear, red when the gap ahead needs the brake.

CLEAR
Lane · clear
BRAKE
Forward collision · act

Day and night, one component

Every surface was designed twice: a daylight version and the near-black night version that is the driving default. Same hierarchy, contrast retuned. This portfolio follows the same discipline, with its own light and dark switch.

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

Foundations

Radii

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

Spacing · 8-pt

A flat 8-point rhythm, enough for a glance grid and no more.

Motion

State changes snap (about 140ms). A safety cue cannot wait for an animation to finish.

Main-Screen-Break-Indicator: every part above, assembled into the screen the driver actually sees
Main-Screen-Break-Indicator: every part 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 started here. The work carried forward into engineering and was built in Flutter, shipping on both iOS 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 is no controlled in-traffic study behind it, and that is the next thing this project would earn. What it does show is a clean 0 to 1: a vague brief taken to a clear, 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 one claim, that these states read at speed, and that claim was checked at a desk, not behind a wheel. The thing I would add next is testing in context: legibility checked while actually moving, 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.