Restaurant Equis is a self-hosted, internal tool designed for deployment on a private LAN or a dedicated VPS where the frontend and backend share the same server. The current version (1.1.0) does not implement token-based authentication — everyDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/teofilobetancourt/Restaurant-Equis/llms.txt
Use this file to discover all available pages before exploring further.
/api/ endpoint is publicly accessible to any client that can reach the server. This is intentional: the system is built for a trusted internal network where a kitchen display, a cashier terminal, and a manager’s laptop are all on the same local network, not the open internet.
No Auth Required
All endpoints accept requests without anyAuthorization header. You do not need an API key, JWT, or session cookie. A bare curl call is sufficient:
The absence of authentication is a deliberate design choice for v1.1. The security boundary is the network (Nginx + firewall rules), not the API layer. See the Production Security Recommendations section below for how to harden this correctly.
CORS Configuration
Although the API does not use tokens, the browser’s same-origin policy enforces a first layer of protection for web clients. FastAPI’sCORSMiddleware is added in backend/main.py.
The exact middleware block from source is:
- Development
- Production
During local development no
CORS_ORIGINS value needs to be set. The middleware permits requests from any browser origin (allow_origins=["*"]), including http://localhost:3000 and http://localhost:5173 (Vite’s default dev-server port).Production Security Recommendations
Even without token-based authentication, a well-configured deployment is secure for an internal restaurant environment. Follow these steps:Deploy behind Nginx — never expose port 5000 publicly
Uvicorn listens on
127.0.0.1:5000 (loopback only). Nginx is the only process that should bind to port 80/443 and forward /api/ requests internally. This means the FastAPI process is unreachable from outside the server.Fix CORS origin wiring before restricting origins
The current Then set
allow_origins=["*"] is hardcoded. To lock down which browser origins can make cross-origin requests, replace that literal with the computed origins list and redeploy:CORS_ORIGINS in your .env or systemd unit to the exact frontend URL:Keep PostgreSQL port 5432 closed to the internet
PostgreSQL should only accept connections from
localhost. Never open port 5432 to external IPs. Confirm with your firewall:Use a strong DB_PASSWORD
Set a long, random password in the backend
.env file. Avoid default or short passwords for the database user, even on a private network:Network Boundary
The intended production topology is a single Linux VPS (or LAN server) where the React frontend build artifacts and the FastAPI backend run side by side. Nginx is the only publicly reachable process:Authentication is a planned enhancement for future versions of Restaurant Equis. Version 1.1 targets a closed, trusted LAN deployment where all users are physical staff inside the restaurant. A future release could introduce role-based JWT authentication — for example, restricting the
DELETE endpoints to manager-level tokens and the reporting endpoints to supervisors — without breaking the existing endpoint structure.