// case study

Tuniloc

01 — The problem

Why it exists.

In Tunisia, rentals (summer stays, student housing, long-term) are mostly found through Facebook groups, word of mouth and phone calls.

For Renters (families, students, visitors) and property owners.

  • Listings are scattered across social media, with no structured search by city, price or dates.
  • Availability is unreliable: renters call only to learn the place is already taken.
  • Owners handle every request by phone and messages, by hand.
  • There is little trust: information, photos and prices are inconsistent.

02 — What I built

What it does.

  • Search & discovery

    Filter properties by location, price and type, with geolocation on a map.

  • Reservation requests

    Renters send a request for specific dates; owners accept or decline.

  • Availability workflow

    Booked dates are blocked automatically, so there are no double bookings.

  • Owner dashboard

    Manage listings, incoming requests and the calendar in one place.

  • Renter dashboard

    Follow the status of every request.

03 — Screens

A closer look.

04 — The stack & why

Tools, and why.

  • React

    The product is a search-heavy interface (filters, map, listing cards) that has to update instantly without page reloads. React's component model and ecosystem (maps, date pickers) fit that perfectly.

  • Laravel

    The fastest way to build a secure REST API, with authentication, validation and clean data relations (users ↔ properties ↔ reservations) built in. That leaves the time for business rules.

  • MySQL

    Reservations are relational data where integrity matters. Transactions and constraints make sure two bookings can never overlap.

  • Docker

    PHP, MySQL and Node run in identical containers on every machine, so the project starts with one command and behaves the same in development and deployment.

  • REST API

    Front end and back end are decoupled, so the same API can later power a mobile app.

05 — Challenges & learnings

What was hard.

Challenges

  • Preventing double bookings

    Availability checks and reservation creation must be atomic, so two renters can't book the same dates at the same moment.

  • Two products in one

    Owners and renters need different dashboards and permissions on top of the same data.

Learnings

  • Model the data first: a clean reservation model made every feature simpler.
  • Design the API contract before the screens, so front end and back end can move in parallel.