Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/FloresJesus/SS_RESTAURANT/llms.txt

Use this file to discover all available pages before exploring further.

SS Restaurant is a full-stack restaurant management system designed to streamline every aspect of daily restaurant operations — from seating guests and taking orders to processing payments and generating end-of-day reports. Built as a Vue 3 single-page application communicating with an Express 5 REST API backed by MySQL, it gives your front-of-house and back-of-house staff a single, fast, role-aware interface that works entirely inside a browser.

Architecture Overview

SS Restaurant follows a clean two-tier architecture. The Frontend SPA (served by Vite during development or any static host in production) handles all user interaction, routing, and state management, then talks to the Backend REST API exclusively over HTTP. There is no server-side rendering — every page transition and data fetch happens client-side, keeping the frontend and backend fully decoupled and independently deployable.
┌─────────────────────────────┐        HTTP / JSON        ┌────────────────────────────┐
│   Vue 3 SPA (port 5173)     │  ◄──────────────────────► │  Express API (port 3000)   │
│   Pinia · Vue Router        │        /api/*              │  MySQL2 · JWT · ImageKit   │
│   Chart.js · Tailwind CSS   │                            │  PDFKit · multer           │
└─────────────────────────────┘                            └────────────┬───────────────┘

                                                             ┌──────────▼──────────┐
                                                             │  MySQL 8 Database   │
                                                             └─────────────────────┘
During local development the Vite dev server proxies all /api requests to http://localhost:3000, so the frontend never needs to know the backend’s absolute URL.

Key Capabilities

Order Management

Create, update, and track dine-in and reservation-linked orders in real time. Waitstaff and cashiers each see only the actions available to their role.

Tables & Reservations

Manage table availability and capacity. Accept walk-ins or pre-booked reservations and convert them to live orders in one click.

Menu Management

Organise menu items into categories, set prices, and attach photos via ImageKit. All changes are instantly visible to staff and to the public menu endpoint.

Billing & Invoicing

Process payments, generate PDF receipts with PDFKit, and issue formal invoices — all restricted to cashier and admin roles.

Reports & Audit

View sales summaries and trend charts (powered by Chart.js) and inspect the full audit log of every sensitive action performed in the system.

Role-Based Access

Four roles — admin, cajero (cashier), mesero (waiter), and cocina (kitchen) — each with a scoped set of permitted API operations.

Tech Stack

Frontend

PackageVersionPurpose
Vue 3^3.5Reactive component framework
Pinia^3.0Global state management
Vue Router^4.6Client-side routing & navigation guards
Chart.js + vue-chartjs^4.5 / ^5.3Dashboard charts and trend graphs
Tailwind CSS^4.2Utility-first styling
SweetAlert2^11.26Modal dialogs and confirmations

Backend

PackageVersionPurpose
Express^5.2HTTP server and routing
mysql2^3.20Promise-based MySQL driver with connection pooling
bcryptjs^3.0Password hashing
jsonwebtoken^9.0JWT generation and verification (8 h expiry)
multer^2.1Multipart file uploads
imagekit^6.0Cloud image storage and CDN delivery
PDFKit^0.19Server-side PDF generation for tickets and invoices
dotenv^17.4Environment variable loading

Public Endpoints

Two API routes intentionally bypass JWT authentication and are safe to call from any unauthenticated client — including your restaurant’s public website or a kiosk:
  • GET /api/public/menu — returns the full list of active menu items and categories.
  • POST /api/public/reservations — accepts a guest reservation request without requiring login.
All other /api/* routes require a valid Authorization: Bearer <token> header.

Build docs developers (and LLMs) love