A full-stack app that helps wedding dress rental businesses in Tunisia manage online pre-reservations and lets store managers see which dates are available. It features a public dress gallery, real-time availability calendars, a customer pre-reservation flow with client- and server-side validation, and a protected admin dashboard.
# RobeRent 👰
A full-stack app that helps wedding dress rental businesses in Tunisia manage
online pre-reservations and lets store managers see which dates are available.
It features a public dress gallery, real-time availability calendars, a customer
pre-reservation flow with client- and server-side validation, and a protected
admin dashboard.
## Tech stack
| Layer | Tech |
| ---------- | ----------------------------------------------------------- |
| Frontend | React + Vite, Tailwind CSS, React Router, Zustand, Axios |
| Backend | Node.js + Express |
| Database | MongoDB + Mongoose |
| Validation | Zod + libphonenumber-js (server), inline validators (client)|
| Auth | JWT + bcrypt-hashed admin accounts in MongoDB |
| Security | helmet, express-rate-limit |
| Logging | winston + morgan |
| Tests | Jest + Supertest |
| Tooling | ESLint (flat config) + Prettier, Docker |
## Features
- Public gallery with search, category, price, and date-availability filters.
- Per-dress availability calendar with a configurable cleaning buffer between
rentals and boutique block-out dates.
- Customer pre-reservation flow with real-time field validation and a
review-and-confirm step.
- Protected admin dashboard: reservations, status lifecycle with an audit
trail, calendar, statistics/history, client history, and dress management
(with image upload).
## Project structure
```
Robe-Rent/
├── client/ # React + Vite frontend
│ └── src/
│ ├── api/ # axios instance + service functions
│ ├── components/ # Navbar, DressCard, ReservationForm, AdminTable, …
│ ├── pages/ # Home, Gallery, DressDetail, Admin* …
│ …