Skip to content
theqiyas.cc
Problem Solver
cc · project · Products

Obadan (LaFood)

Natural products from the villages of Azerbaijan, delivered to your door in Baku in a box on your schedule. A customer app, a courier app and the backend behind them. Once called LaFood, an old dream of mine.

Django Django REST Framework Flutter PostgreSQL Python

LaFood was an old dream of mine: real food from the villages of Azerbaijan, delivered to the door in Baku. Honey from the mountain it was made on, cheese from the village that makes it, eggs from an actual farm. Obadan is that dream, finally built.

You pick products and they come in a box on your schedule: every week, every two weeks, every month, on fixed days of the month or on dates you choose. Every product says where it comes from, down to the village: Zaqatala honey from Car, motal cheese from Qusar, pomegranates from Göyçay. Right now there are 13 regions and 18 products. Delivery in Baku is free, between 10:00 and 18:00, and you can change the box until three days before it arrives.

The project is two apps and a backend.

Obadan, the customer app

An Android app built with Flutter, plus a website at obadan.ubermensch.cc.

  • Boxes. Build a box from the catalogue, set how often it comes and where, and edit it until it locks three days before delivery. When the day comes the order is created and paid from the wallet automatically. If the balance is short, it waits and pays itself the moment you top up.
  • Tracking. Every step is a notification: being prepared, on the way, almost there, delivered. While the courier is driving you see them on a map.
  • Reviews. Only for products you actually received, and only once.
  • Recipes and a calorie calculator. 68 recipes made from what is in the box, and nutrition values for every product.

Obadan Courier, the courier app

A separate Flutter app for the people who drive. Couriers pick products up from suppliers in the regions and in the city, then deliver them. The app is their whole day:

  • Map. Today’s customers and suppliers on one map, each pin numbered by its place in the route.
  • Today’s route. Pickups first, then deliveries, in order. A supplier opens a checklist of what to collect there; you tap each item as you pick it up.
  • Delivery screen. Customer, phone, address and note, one tap to open Google Maps, the time window, whether it is paid, and the next status. “Delivered” asks for confirmation.
  • On duty. While a courier is on shift, their position goes to the live map in the admin panel and to the customer waiting for that order.

Behind it

The backend is Django with a REST API and an admin panel. From the admin you run everything: products, regions, couriers, a live map of every courier and today’s deliveries, delivery fees and hours, app versions and forced updates, and maintenance mode.

I took security seriously, because the app holds money. Every login creates a session tied to that device, with a key that stays in Android Keystore. Every request is signed with that key, so a stolen token alone is useless, and old or repeated requests are rejected. The apps trust only the certificates the server actually uses. Registration and password resets go through SMS codes, and wrong passwords lead to a temporary block.

Built with Django, Django REST Framework, PostgreSQL and Flutter. The source code is private.