This is the working prototype, the same design the case study below explains. Click through the full citizen journey yourself.
Nadif Malti (Clean Malta) is a civic app for St Paul's Bay helping residents, tenants, businesses, and tourists navigate Malta's colour-coded waste collection system and report street problems. The project ran end-to-end, from discovery through production-ready UI, covering 2 distinct product surfaces: a citizen mobile app and a council operations dashboard.
My role covered every phase: translating a council discovery call into a structured brief, defining user journeys across 5 audience segments, building and iterating on wireframes for 26 screens, and designing a full design system built for multi-language use across Malta's Latin-Extended character set.
Malta's colour-coded bag scheme is tied to specific days and street zones. The rules aren't obvious, and for the 40% of St Paul's Bay residents who are non-Maltese, language adds another layer of friction. Wrong bags, missed collections, illegal dumping.
The council's problem ran parallel. Reports came through Facebook, WhatsApp, phone calls, no structure, no GPS, no photo evidence. Staff couldn't prioritise, residents felt ignored. Trust was broken on both sides.
The design challenge was to solve both sides simultaneously, resident clarity and council data quality.
5 distinct user segments shaped every design decision. Language access, task frequency, and trust level varied dramatically across segments, the design had to work for all of them simultaneously.
St Paul's Bay has one of Malta's highest concentrations of non-Maltese residents. Any UI that relies on reading, even in English, creates exclusion. This led to an icon-first principle applied across the entire product: category selection, schedule display, status tracking, and navigation all lead with visual language before text.
Residents don't report because nothing happens when they do. The council can't act because reports are unstructured. Designing the feedback loop, ticket status, progress timeline, and council notes visible to the resident, was as important as designing the reporting flow itself.
An account wall, a long form, or a confusing step causes abandonment. Anonymous reporting on by default, a 5-step flow with a progress indicator, and camera-first capture (no typing required) were decisions that came directly from this insight.
The dashboard wasn't an afterthought, it's the other half of the product. Without structured, geolocated, categorised reports, the council can't improve. The map-first layout and activity log on each report were designed specifically to make operational triage faster.
The report flow was designed for completion in 1 interaction, category auto-advances on tap, GPS fills the location, anonymous is on by default. The resident can complete a full report with nothing but a photo and a location confirm.
The 5-step reporting flow, from category selection to confirmation, designed for completion in under 60 seconds with no account required.
The home screen was designed to deliver value without requiring any action, the schedule widget shows the next collection on arrival, and the quick-report grid puts the most common issue types 2 taps from submission.
The visual direction is civic and approachable, warm Mediterranean colours (sea azure, limestone neutrals, terracotta accents), humanist typography with full Maltese character support, and a component library that scales from the citizen app to the council dashboard.
2 surfaces, 1 product. The council dashboard gives staff spatial and queue context simultaneously. The status timeline closes the feedback loop residents previously had no access to.
Split map-and-list layout, staff see spatial clustering before reading any text. Detail panel opens inline without losing map context.
Closing the feedback loop, residents track progress from submission to resolution. Council notes appear as a distinct update block.
Designed as a pilot for St Paul's Bay with architecture that supports multi-council rollout, address zones, schedules, and staff accounts are all council-scoped, so adding a second council means adding a dataset, not rebuilding the product.
Building in an account requirement, even optional, would have suppressed participation among short-stay users. Tying reports to device ID solves "track my report" without a login wall.
Council staff need map context (spatial) and queue management (linear) simultaneously. Keeping both visible with an inline detail panel reduced the cost of triaging a queue significantly.
Every category, status, and action leads with a recognisable icon before text. The UI works regardless of language, a constraint that improved the design for all users, not just non-Maltese speakers.