The problem
A restaurant that takes reservations on paper cannot tell you at 6pm whether the 8pm table is free. This turns the floor plan into data the staff can actually query.
What I built
A table is not booked for an instant, it is booked for a duration, so availability is a question about overlapping intervals rather than a lookup on a time slot.
Restaurants configure their own turn times, because a cafe and a dinner service are not the same problem.
Architecture
Django and PostgreSQL, with reservations stored as intervals per table.
Problems worth writing down
Turn time assumptions
A fixed 90 minute slot did not fit every venue. Making the duration a per restaurant setting removed the complaints.
No show handling
Tables sat empty while marked booked. A staff side release action was the simple answer, not an algorithm.