Skip to content
Back to projectsContact

Case study / Full-stack product

Distrito Gourmet

A restaurant application connecting menu, orders, and reservations with its own operations dashboard.

My role

I designed the product and built the React frontend, Laravel API, MySQL model, customer and admin flows, deployment, and documentation.

Open productView code
Distrito Gourmet public interface

01 / Problem and context

Menu, reservations, and operations too often live in isolated services.

The project explores how to bring the public experience and internal management together while retaining control over data, order states, and availability.

02 / Goals

  • Unify menu, cart, orders, and reservations.
  • Separate the public experience from internal operations.
  • Model the restaurant domain in a maintainable database.

03 / Process

01

Analysis

I defined requirements, use cases, and boundaries for customers and administrators.

02

Data

I designed relationships for users, dishes, orders, reservations, and their states.

03

Implementation

I built a React SPA connected through a REST API to Laravel and MySQL.

04

Delivery

I prepared the demo, containers, and documentation for reproducible review.

04 / Decisions

Technical

  • Frontend and backend decoupled through JSON contracts.
  • Shared client state concentrated in Zustand.
  • Relational model to avoid duplicating operational data.

UX and product

  • Menu-to-cart flow without removing users from context.
  • Distinct states for front-of-house, kitchen, and administration.
  • Responsive hierarchy keeping primary actions visible.

05 / Architecture

Decoupled React SPA and Laravel API backed by MySQL.

React 19ViteTailwind CSSLaravel 12PHP 8.2MySQLZustandReact RouterGSAPDocker

06 / Challenge

Keeping cart, order, reservation, and admin flows coherent as each changes shared data.

07 / Solution

I separated responsibilities by domain, centralized cross-cutting state, and defined explicit transitions for operational flows.

08 / Result

Public demo with working menu, cart, reservations, and administration dashboard.

Learnings

  • Operational states need unambiguous names and transitions.
  • Separating API and interface improves reviewability but requires clear contracts.
  • A credible demo should show both the public journey and internal management.
View codeOpen product