Installation

To try it on your machine

git clone https://github.com/ssergy/syncapos.git
cd syncapos
docker compose up

Open http://localhost:8080 and sign up: the first account owns the installation — there is no separate administrator to configure first.

There is no file to edit first: the passwords nobody chooses are generated by the server on its first start and kept in a volume. To set your own, copy deploy/quickstart/.env.example to .env and change them.

Four services come up:

service what it is
db PostgreSQL
api the server: the console, the ingestion API, the schema, the venues’ database roles
ai-bundle prepares what the assistant may answer for
ai the assistant itself

The first build takes a while, most of it the assistant’s image.

To serve a real venue

The production stack adds TLS at the front, secrets as files, an allowlist for outbound model calls and resource limits:

deploy/production/init-secrets.sh        # generates the passwords, once
$EDITOR deploy/production/.env           # the site's hostname
docker compose --env-file deploy/production/.env \
  -f docker-compose.yml -f deploy/production/compose.yaml up -d

The two databases

Database What it holds If you lose it
syncapos accounts, venues, tills, tickets, sales, invoices, closes gone — this is the one to back up
syncapos_sync each POS database’s mirror, one schema per venue the agent re-reads the POS and sends it again

Operations

Script What it does
deploy/production/backup.sh a full backup: both databases, the .env and the secrets
deploy/production/restore.sh restores that backup onto an empty installation
deploy/production/upgrade.sh upgrades in the right order, backing up first
deploy/production/rollback.sh back to the previous images; it never migrates down
deploy/production/rotate-ai-db-key.sh rotates the password the assistant reads with
deploy/production/package-release.sh builds a release that installs with no internet