Docs / Installation

Installation

Get Spicy running on the server. This should take about 20 minutes.

Spicy runs as a server. You can run it on the computer at your counter, or on a cloud server. Run the steps below on that server. When the server is in the cloud, each till needs an internet connection.

What you need

RequirementNotes
A computerThis becomes your till. It stays on during trading.
Three thermal printersUse one printer for receipts, one for the kitchen, and one for the bar. The kitchen and bar printers are on the network.
PostgreSQLPostgreSQL holds all your data. Docker is the easiest way to run it.
Python 3.14+Python runs Spicy.
Node.js and npmNode.js builds the buttons and styling.
DockerDocker runs PostgreSQL and Redis for you. It is optional, but we recommend it.

Use a wired connection for the till. Where possible, connect the cashier's computer with an Ethernet cable. If the network drops mid-shift, the system stops accepting orders. A cable is safer than Wi-Fi for this reason.

Install

Step 1: Get the code

git clone https://github.com/sanusi-dev/spicy.git
cd spicy

Step 2: Start the database

This command does four things:

make init
  • It copies a sample settings file.
  • It starts PostgreSQL and Redis.
  • It creates your database tables.
  • It installs the front end files.

It may take a few minutes on the first run while everything downloads.

Step 3: Start Spicy

make dev

Leave this running. Spicy is available at localhost:8000.

Step 4: Create your administrator account

While Spicy is running, open a second terminal in the same folder and run:

make manage ARGS='createsuperuser'

Pick a username and password. This is the administrator account. Use it to sign in and create accounts for your staff.

Step 5: Load the standard accounts

Spicy needs a set of accounts before it can record a sale — things like Food Sales, Cash Account, and Cost of Goods Sold. This command sets those up, along with sample items and prices so you can try things out.

make manage ARGS='seed_pos_setup'

Delete the sample items before you trade. They are placeholders. Delete them and add your own in Setup.

Check the installation

Sign in at localhost:8000. An administrator sees the back office dashboard.

To check for problems, run:

make manage ARGS='check'

A healthy install reports System check identified no issues.

Before you take real orders

Do three things first.

Disable debug mode

Open the .env file and set:

DEBUG=False

Debug mode is for development. If you leave debug mode on, anyone signed in as an administrator can change your sales and stock figures directly. These changes bypass the safety checks. Do not trade with debug mode on.

Set your own secret key

Run this to generate one:

python -c "import secrets; print(secrets.token_urlsafe(64))"

Paste the result into the SECRET_KEY line in .env. This key protects your staff logins. If you skip it, anyone who reads the public source can sign in as your staff.

Set your time zone

Spicy uses the server's clock to decide which trading day a sale belongs to. If you close at 3am, that sale still counts for the previous day. Make sure the server's date, time, and time zone are accurate. Check the automatic time setting on the server.

Printing

Spicy prints through a small helper on the same computer. The helper connects to your receipt printer directly and to the kitchen and bar printers over the network.

Once the helper is running, add each printer in Setup under Production Units. For each printer, enter its IP address, its paper width, and whether it prints receipts or tickets. Also set whether it cuts the paper off after printing.

A printer problem will not stop you selling. If Spicy cannot reach a printer, the sale still completes and you get a warning. But the kitchen will not receive the food, so the kitchen will not cook the food. Fix the printer before you trade.

Running it every day

Every morning, do these steps:

  1. Start Docker and the database: make start-bg
  2. Start Spicy: make dev
  3. Open the POS and open your shift

You can leave make dev running in a terminal window. But if you close that window, or sign out of the server, Spicy stops. For a permanent installation, ask the person who installed Spicy to run Spicy as a service that starts automatically.

Backing up

From day one, take a backup every night:

make backup

This saves your sales data and your item photos to the backups folder. Set it to run automatically after closing time. Copy the files to another drive each week. A backup sitting on the same computer does not help if that computer is stolen.

Run it once manually now, before you have any real data. Then you know that it works, and you know where the files are.

Next

Spicy is running, but it does not have your restaurant data yet. Continue with Setup.