Layer 04 · Product

Ghaiari

A car-parts marketplace for Libya. Mobile app for buyers, web dashboard for sellers, all backed by Supabase.

What it does

Ghaiari connects auto parts buyers and sellers. Buyers find parts through a React Native app and pay from an in-app wallet; sellers manage listings and orders through an Astro web portal. Vehicle compatibility data shows whether a part fits the buyer's car.

Architecture

Two frontends, one backend:

  • Mobile app: React Native (Expo). Browse by vehicle, search parts, order, and receive push notifications.
  • Seller and admin web: server-rendered Astro for listings, orders and moderation.
  • Backend: Supabase handles auth, Postgres with Row Level Security, storage, cron jobs and push dispatch.

Key decisions

Vehicle compatibility in the database. A dedicated table links parts to vehicle models, and a Postgres function answers whether a part fits a given model.

Supabase RLS for multi-tenant data. Every row in the database has a seller_id, and Row Level Security policies enforce that sellers only see their own orders and inventory. Buyers see only public listing data. This means the mobile app queries Postgres directly: no custom API layer needed for reads.

Saying no to features was harder than building them.

The hard parts

Search. Catalog search runs ILIKE queries across Arabic, English and French titles, backed by trigram indexes so the wildcard matches stay usable.

Screenshots

Screenshots show an earlier build, from when the project was called Axto.

Ghaiari home screen
Browse listings by vehicle
Ghaiari search screen
Find parts by name or OEM number
Ghaiari product details
Compatibility info, price, seller
Empty cart
Empty state
Cart with products
Items ready for checkout
Checkout address form
Shipping address
Checkout payment
Payment step
Notifications
Notifications
Profile screen
Account and saved searches

What I learned

This was my first full-stack marketplace and the project where I learned to say no. The feature list kept growing, and every addition had to work across the app, the web portal and the database rules.