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.