Skip to content
XxCPH4xXPublic

About

A modern full-stack restaurant POS system for managing orders, tables, inventory, billing, payments, customers, suppliers, expenses, and real-time restaurant operations.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

EzPOS

Restaurant point of sale with menu photos, stock tracking, table service, kitchen tickets, payments, reservations and reporting.

Live demo · User guide · Deployment · Testing

Features

  • Dine-in, takeaway and delivery orders, modifiers, drafts, receipts and refunds.
  • Table visits that retain paid invoices until staff explicitly close the table.
  • Stock receipts and adjustments, fractional stock units, serving counts and movement history.
  • Menu photos with crop controls; individual menu, category and inventory deletion.
  • Reservations, customers, suppliers, purchases, expenses, staff roles and shifts.
  • Store-specific dashboards, customizable menu highlights and confirmed section resets.
  • Offline order queue with explicit synchronization and duplicate-request protection.

Stack and structure

Next.js 14, React, TypeScript, Tailwind CSS and Zustand serve the interface. Django 5, Django REST Framework and Channels provide the API and live updates. PostgreSQL stores records; Redis supports caching, Channels and Celery in the full deployment.

Path Purpose
frontend/src/ Pages, components, stores and API clients
frontend/tests/frontend/ Jest and React Testing Library tests
backend/apps/ Business models, services, API views and migrations
backend/config/ Development, production, demo and test settings
tests/backend/ API and business-rule tests
backend/demo/ Bundled sample menu and photographs
docker/, render.yaml Container and hosted deployment configuration
scripts/ Local preview and data preparation tools
docs/ User, architecture, API, database and deployment guides

See architecture for transaction boundaries and data flow.

Demo access

Environment Admin email Password
Hosted demo `` ``
Local isolated preview `` ``
Legacy Docker quick start (start.sh / start.bat) `` ``

The hosted cashier account is , with password . These are deliberately shared testing credentials. Use fictional records in the demo. A new hosted database receives 75 photographed dishes with sample prices/stock and 10 tables. Restarts preserve changes and do not refill cleared sections.

For a real installation, use the production settings and create your own administrator with python manage.py createsuperuser. Production does not seed these demo accounts.

Local setup

Prerequisites: Git, Python 3.12 and Node.js 20+ with npm; Docker Compose v2 for the full PostgreSQL/Redis stack.

git clone https://github.com/XxCPH4xX/POS.git
cd POS
cp .env.example .env

The environment example contains development defaults. Configure the secret, database credentials and allowed hosts/origins for your installation. Never commit .env or production credentials.

Docker development

bash start.sh

On Windows, run start.bat. The scripts build services, apply migrations and create the legacy development administrator if it does not already exist. Open http://localhost:3000. For an administrator you choose yourself, start with docker compose up -d --build, then run docker compose exec backend python manage.py migrate and docker compose exec backend python manage.py createsuperuser.

Isolated local preview

cd frontend
npm ci
cd ..
bash scripts/preview.sh

This uses SQLite at backend/.preview/db.sqlite3 and preserves existing preview data. POS_PREVIEW_PYTHON and POS_PREVIEW_NODE can select executable paths. The backend binds to localhost. For a compiled preview, build inside frontend with npm run build, then run bash scripts/preview.sh --production from the repository root. Do not expose the test settings on the internet.

Checks

python -m pip install -r backend/requirements-test.txt
ruff check backend scripts tests
ruff format --check backend scripts tests
DJANGO_SETTINGS_MODULE=config.test_settings PYTHONPATH=backend pytest tests/backend

cd frontend
npm ci
npm run format:check
npm run lint
npm run typecheck
npm test -- --runInBand
npm run build

The SQLite command is for quick local verification. CI also runs the backend suite against PostgreSQL and Redis. See testing for service configuration and browser checks.

Deployment

See security notes for known dependency advisories and the demo deployment scope.

The testing site runs on Vercel, with its Django API and PostgreSQL database on Render. Vercel's project root is frontend; NEXT_PUBLIC_API_URL must point to the backend's /api/v1. Render must allow the exact frontend origin in CORS_ALLOWED_ORIGINS.

Deployment instructions cover the hosted demo, environment variables, persistent Docker installation, backups and verification. Free hosting has availability and retention limits; use a persistent installation for operational restaurant data.

About

A modern full-stack restaurant POS system for managing orders, tables, inventory, billing, payments, customers, suppliers, expenses, and real-time restaurant operations.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages