Restaurant point of sale with menu photos, stock tracking, table service, kitchen tickets, payments, reservations and reporting.
Live demo · User guide · Deployment · Testing
- 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.
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.
| 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.
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 .envThe environment example contains development defaults. Configure the secret, database credentials and allowed hosts/origins for your installation. Never commit .env or production credentials.
bash start.shOn 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.
cd frontend
npm ci
cd ..
bash scripts/preview.shThis 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.
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 buildThe 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.
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.