A sleek, premium, high-fidelity restaurant listing platform built with a modern, responsive user experience. It provides full CRUD operations, live matching filters, robust inline validations, and a clean dark theme using standard CSS design tokens.
The project consists of two main sections:
- Backend (
/backend): Built with Node.js, Express, and Sequelize ORM connecting to a PostgreSQL database. - Frontend (
/frontend): Built with React 19 + Vite, styling custom tokens in CSS, and Axios for communication.
- Frontend: React 19, Vite, Axios, HSL CSS variables, Google Fonts (
Inter&Outfit), CSS grid and animations. - Backend: Express (Node.js), Sequelize ORM, PostgreSQL driver (
pg). - Database: PostgreSQL (relational database).
- Navigate to the backend folder:
cd backend - Install dependencies:
npm install
- Create a
.envfile inside thebackendfolder and add your PostgreSQL credentials:PORT=5000 DB_HOST=localhost DB_PORT=5432 DB_NAME=restaurant_db DB_USER=postgres DB_PASSWORD=your_password
- Run migrations to create the database tables:
npx sequelize-cli db:migrate
- Start the backend server:
The server runs on
npm run dev
http://localhost:5000and connects to PostgreSQL.
- Navigate to the frontend folder:
cd ../frontend - Install dependencies:
npm install
- Start the React development server:
The application will open on
npm run dev
http://localhost:5173/.
- Live Search Filter: Search through the restaurant list on the fly by typing a restaurant name, location, phone number, or email.
- Responsive Cards Grid: Automatically snaps columns based on desktop, tablet, or phone screens.
- Add / Edit Modal: Smooth micro-animations with standard overlays, slide effects, validation error flags, and loading states.
- Delete Confirmation Overlay: Prevent accidental deletion using modular popups.
- Interactive Contacts: Clickable telephone links (
tel:) and email links (mailto:) for immediate communication.