App screensNative Android app · local delivery marketplace

Chlef Delivery

A four-role delivery marketplace for the wilaya of Chlef: customers, shops, drivers and an admin.

Customer homeShopsShop menu

Overview

Chlef Delivery connects local shops with customers and delivery drivers across the communes of Chlef. Customers browse shops by category and distance, build a cart and track their order; shop owners manage their menu and accept orders; drivers claim ready orders and move them through pickup and delivery; an administrator verifies shops and drivers. It is written natively in Kotlin with Jetpack Compose and works in French, English and Arabic.

Objectives

  • Bring small local shops online without a website of their own
  • Give each role its own focused workflow
  • Keep working offline once an account has signed in

Features

  • Customer, shop, driver and admin roles, each with its own navigation
  • Shops by category, distance and opening hours, favourites and search
  • Cart with notes, checkout with saved addresses, cash on delivery
  • Order life cycle: confirmed → preparing → ready → driver assigned → picked up → delivered
  • Order timeline, distance and delivery fee, in-app notifications
  • Map view (OpenStreetMap) and navigation hand-off
  • Arabic right-to-left, French and English; light and dark themes
  • Optional account sync across phones (Supabase)

Screens

Highlights

Design

  • Translucent "water glass" surfaces over a soft photographic background
  • Role-specific bottom bars with badges for cart and notifications
  • Full mirroring in Arabic, including icons and chips

Engineering

  • Single-activity Compose app with a repository over Room, enforcing allowed order transitions per role
  • Passwords stored as salted hashes
  • Screens on this page are rendered from the real Compose code by a Robolectric + Roborazzi test with invented demo data

Studio audit

5.5Initial
7.5Final

Broad, well-structured app with real security and theming problems. Fixed what could be fixed in the app; one back-end issue remains.

Found

  • Administrator e-mail and password were hard-coded in the source
  • The Supabase key check compared the URL against the key itself
  • With the in-app dark theme chosen, the glass background stayed light and text turned unreadable
  • Synced accounts store password hashes in a table readable with the public key

Fixed

  • The first admin now comes from local.properties and is never in the code
  • Corrected the configuration check
  • Dark mode follows the app theme; screen content colour set explicitly
  • Added a screenshot test that renders 12 screens for every role

Still to do

  • Account sync should move to Supabase Auth with row-level security before public release

Scored out of 10 on functionality, interface, visual consistency, performance, responsiveness, navigation, architecture, accessibility, error handling and professional readiness.

Demonstration

App screens

A native Android app cannot run in a browser. These screens were rendered from the app's real Compose code (Robolectric + Roborazzi) with invented shops, products and orders; the APK was built and verified separately.

View app screens
Start a project

Want something like this?

Tell us what you are building. We will reply with honest questions, a clear approach and the next step.