Skip to content

ErisA0/Restaurant-POS-LabCourse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Restaurant POS — Lab Course

A full-stack Restaurant Point-of-Sale system built as a university lab course project. Features a dark Wolt-style UI, real-time kitchen display, order management, reservations, and an admin analytics dashboard.

Tech Stack

Layer Technology
Frontend React 18, Vite, Tailwind CSS
Backend ASP.NET Core 8 Web API
Database SQL Server + Entity Framework Core
Real-time SignalR
Auth JWT + Refresh Tokens, Role-based (Admin / User)

Features

  • Menu & Cart — Browse products by category, add to cart, place orders
  • Kitchen Display — Real-time order queue for kitchen staff via SignalR
  • Cashier View — Manage and update order statuses
  • Reservations — Table booking system with status tracking
  • Admin Panel — Full CRUD for products, categories, tables, users
  • Analytics — Sales and order statistics dashboard
  • Dark Theme — Wolt-inspired dark UI with responsive layout
  • PDF Invoices — Downloadable invoice per order

Project Structure

Restaurant-POS-LabCourse/
├── RestaurantAPI/          # ASP.NET Core backend
│   ├── Controllers/        # Auth, Orders, Products, Categories, Tables, Reservations, Analytics
│   ├── Models/             # EF Core entities
│   ├── DTOs/               # Request/response contracts
│   ├── Hubs/               # SignalR OrderHub
│   ├── Middleware/         # Global exception handling
│   └── Migrations/         # EF Core database migrations
└── restaurant-frontend/    # React + Vite frontend
    └── src/
        ├── pages/          # All route pages
        ├── components/     # Navbar, Sidebar, Modals
        ├── context/        # Auth, Cart, Theme, Toast
        ├── hooks/          # useSignalR
        └── services/       # API client, auth storage

Getting Started

Prerequisites

  • .NET 8 SDK
  • SQL Server (local or Docker)
  • Node.js 18+

Backend

cd RestaurantAPI
# Set your connection string in appsettings.Development.json
dotnet restore
dotnet ef database update
dotnet run

Swagger UI: https://localhost:7226/swagger

Frontend

cd restaurant-frontend
cp .env.example .env   # set VITE_API_URL to your backend URL
npm install
npm run dev

Authentication

  1. Register: POST /api/Auth/register
  2. Login: POST /api/Auth/login — returns accessToken + refreshToken
  3. Use Authorization: Bearer <accessToken> on protected routes
  4. Refresh: POST /api/Auth/refresh-token
  5. Bootstrap first admin: POST /api/Auth/bootstrap-admin (only works when no Admin exists)

API Endpoints

Resource Methods
Auth register, login, logout, refresh-token, bootstrap-admin
Categories GET, GET/:id, POST, PUT, DELETE (Admin)
Products GET, GET/:id, POST, PUT, DELETE (Admin)
Orders POST, GET my-orders, GET all-orders (Admin), PUT status (Admin)
Tables GET, POST, PUT, DELETE (Admin)
Reservations POST, GET, PUT status (Admin)
Analytics GET sales stats (Admin)

Notes

  • Validation enforced via DataAnnotations in DTOs
  • Global error handling via custom middleware
  • SignalR hub (/hubs/order) pushes order updates to Kitchen Display in real time
  • Initial seed data created for roles, categories, and products

Releases

No releases published

Packages

 
 
 

Contributors