A mobile-first, offline-capable classifieds PWA connecting buyers and sellers across The Gambia. Built with React 19, Express, and Supabase — featuring background sync, image compression for low-bandwidth, and WhatsApp-native contact.
=18" />
GMarkt — The Gambia's Marketplace
A mobile-first, offline-capable classifieds progressive web application connecting buyers and sellers across the Greater Banjul Area.
Built for low-bandwidth environments with background sync, image compression, and WhatsApp-native seller contact.
---
## Table of Contents
- Features
- Tech Stack
- Architecture Overview
- Prerequisites
- Getting Started
- 1. Clone the Repository
- 2. Set Up Environment Variables
- 3. Run the Database Schema
- 4. Install Dependencies
- 5. Start the Development Servers
- 6. Seed the Database (Optional)
- Environment Variables
- Available Scripts
- Client (Frontend)
- Server (Backend)
- API Documentation
- Public Endpoints
- Authenticated Endpoints
- Admin Endpoints
- Notifications
- Folder Structure
- Database Schema
- Contributing
- License
---
## Features
### For Buyers
- **Browse & Search** — Filter listings by category, area (zone/neighbourhood), price, and condition. Full-text search with autocomplete suggestions.
- **Listing Detail** — View seller information, rating stats, review history, and multiple images per listing.
- **Reviews & Ratings** — Leave 1–5 star reviews with comments after clicking the WhatsApp contact button (contact-event gating prevents review bombing).
- **WhatsApp Contact** — One-tap WhatsApp messaging for every listing.
- **Save Listings** — Bookmark listings to revisit later.
- **Report Listings** — Flag suspicious or inappropriate listings and users.
### For Sellers
- **Create & Manage Listings** — Post new listings with title, description, price, condition, location, and up to 5 images.
- **Image Upload** — Automatic compression via `browser-image-compression` (resized to 800px, ~300KB) before uploading to Supabase Storage.
- **Bump Listings** — Boost a listing to the top of the feed (24h cooldown per user).
- **Analytics** — View listing view counts and performance metrics on the seller dashboard.
- **Edit / Delete Listings** — Full CRUD on you …