Atbara Trade
Where offers and wishes land on the same board.
Most marketplaces only let people sell. Atbara Trade lets both sides post — sellers list what they have, buyers publish what they're hunting for — so an offer and a wish finally land on the same board.
Listings carry a live status (available, reserved, sold) so nobody chases a ghost. A single click on "Buy This" starts a trade, and every profile carries a display name and direct contact details, so deals finish between two people — not in a dead-end form.
The storefront is sky-blue and glass-clean, with real search and boards that refresh as items move. It looks like a proper shop, built for a small town with a big appetite.
Under the Hood
Backend: a Django 5.2 REST API with token authentication via Simple JWT, running on MySQL — the same code locally and on PythonAnywhere. Every credential is read from the environment with python-decouple, so no password ever lives in the source code.
The interesting part happened mid-build. I gave listings a status field that moves from available to reserved to sold, then designed a whole PurchaseRequest model so buyers could post what they wanted. Because new users get a profile created automatically by a Django signal, I wrote a one-line backfill so older accounts were migrated too — no lost data, no broken pages.
The API serves paginated, filterable product feeds wired to a debounced search box, plus a custom initiate-trade action on each listing.
Frontend: hand-written HTML, CSS, and JavaScript — no framework. The glassy cards use backdrop-filter with a fallback for older browsers, the animated sky is pure CSS gradients, and the whole design runs on CSS custom properties, media queries, and prefers-reduced-motion.
UI and API ship from the same Django app, so the site is one origin — fast, simple, and versioned in Git from first commit to live release.