Skip to content

Repository files navigation

FloCafe

Free, open-source, offline-first point of sale for cafés, restaurants, and small kitchens.

Website · Download · Report a bug · Community

Latest release Total release downloads MIT License Windows, macOS, and Linux CI status
GitHub stars GitHub forks Open issues Open pull requests Reddit community

FloCafe POS screen showing product selection and an active dine-in order

FloCafe runs on the business's own computer. Orders, customers, receipts, and backups stay in a local SQLite database, so the counter keeps working when the internet does not. Google Drive backup, WhatsApp bill delivery, and cloud-connected reporting are optional.

If FloCafe helps your cafe, restaurant, cloud kitchen, bakery, or food truck, please star the repository. GitHub stars help more operators find a free open-source POS instead of assuming every restaurant system must be a paid cloud subscription.

Best-fit searches: open-source POS, free restaurant POS, cafe POS, kitchen display system, KDS, self-hosted restaurant POS, offline-first POS, thermal printer POS.

Get FloCafe

Download the latest installer from GitHub Releases, or use the app store for macOS and Windows.

Download on the Mac App Store Download from Microsoft Store

Releases include Windows installers, macOS DMGs, and Linux AppImage, .deb, .rpm, and Snap packages. On Linux:

# AppImage
chmod +x flocafe-*.AppImage
./flocafe-*.AppImage

# Debian or Ubuntu
sudo apt install ./flocafe-*.deb

# Snap
sudo snap install flocafe

If the Snap build cannot see a USB receipt printer:

sudo snap connect flocafe:raw-usb

On first launch, create the owner account, then add products, tables, staff, and printers in Settings.

For Linux package choices, updates, FUSE, printing, and tray support, see Linux installation and support.

System requirements

Requirement Minimum
Operating system Windows 10+, macOS 12+, or a current supported Linux distribution
Memory 4 GB RAM
Storage 500 MB free space, plus room for local backups

Node.js is only required to develop FloCafe, not to run a packaged release.

Uninstall a direct-download build

App Store and Microsoft Store installs should be removed through the relevant store or operating system.

# macOS
curl -fsSL https://github.com/FreeOpenSourcePOS/FloCafe/releases/latest/download/uninstall-macos.sh -o uninstall-macos.sh
chmod +x uninstall-macos.sh
./uninstall-macos.sh
# Windows PowerShell
irm https://github.com/FreeOpenSourcePOS/FloCafe/releases/latest/download/uninstall-windows.ps1 -OutFile uninstall-windows.ps1
powershell -ExecutionPolicy Bypass -File .\uninstall-windows.ps1

Both scripts ask whether to keep application data. Do not choose their data-purge options unless you intend to remove the local database and backups.

Why FloCafe

FloCafe combines counter service and table service in one desktop app. A kitchen display can receive live orders while receipt printers and kitchen tickets use the same local setup. There is no hosted account required for the core POS.

It is free software. FloCafe has no tiers or paywalled features, and the code is available under the MIT License.

What it handles

  • Counter, dine-in, takeaway, and delivery orders
  • Tables, held orders, modifiers, add-ons, discounts, and loyalty points
  • ESC/POS receipt printing over USB, network, and Bluetooth
  • Kitchen display, kitchen stations, and kitchen order tickets
  • Product images, barcode lookup, and CSV menu import/export
  • Customer records, staff roles, sales reporting, and receipt history
  • Configurable tax packs and local overrides
  • English, Spanish, and Brazilian Portuguese

Backups and restores are built in. Optional Google Drive backup stores backup copies in the owner’s Drive. WhatsApp bill delivery can be enabled for businesses that use a paired phone.

Direction

FloCafe will remain local-first and free. Current work focuses on making the desktop POS easier to operate, expanding tax and country support, improving inventory and loyalty workflows, and allowing companion devices to work with the existing local install. Public discussions and planned work live in GitHub Issues.

Data, updates, and recovery

The database and backups live in the operating system's user-data directory, separate from the installed application. Updating or reinstalling through the same distribution channel does not remove them.

Before a pending migration runs, FloCafe creates a timestamped local backup. Migrations are additive and tracked with SQLite's user_version pragma. Use Settings → Database Tools → Backup before moving to another computer or switching distribution channels.

For printer problems, check the cable or network address, then use Settings → Printers → Test Print. If the app cannot start, do not delete the database first. Restore the latest backup from Settings → Database Tools, then open an issue with the app version, operating system, and logs.

Development

Development requires Node.js 22 or later.

git clone https://github.com/FreeOpenSourcePOS/FloCafe.git
cd FloCafe
npm install
npm run dev

npm run dev builds the frontend and backend, then starts Electron. For backend-only work:

node dev-server.js
npm run lint             # backend and frontend lint
npm run build            # compile main/ to dist/
npm run build:frontend   # export the Next.js frontend
npm test                 # complete test suite

Architecture

Electron main process
├── Express API and WebSocket server       :3001
├── Standalone kitchen-display server      :3002
└── SQLite database, migrations, and printing
                 ↕ HTTP and WebSocket
Next.js renderer
└── React UI and Zustand client state
Layer Technology
Desktop runtime Electron
Backend Express and TypeScript
Frontend Next.js, React, Tailwind CSS, and shadcn/ui
Database SQLite via better-sqlite3 in WAL mode
Realtime WebSocket
Printing ESC/POS via node-thermal-printer
main/          Electron process, Express servers, SQLite, printing, and services
frontend/src/  Next.js pages, components, client state, and translations
tests/         Backend, integration, and release checks
docs/          API, release, and integration notes

Both servers use the same local SQLite database. The renderer is a statically exported Next.js application using React and Zustand.

Tax packs

Country tax rules ship as signed, versioned data files, not code. A generic engine, English/Spanish/Portuguese tax labels, and official packs for India and Thailand are bundled with every installer; more countries can be added as pack data without an app release. Owners install and activate packs from Settings → Tax Configuration, with rollback and an audit trail.

Adding tax support for a new country is usually a pack contribution, not a code change. See Tax packs: developer guide for the pack schema, how to author and test one, and how signing and publishing work.

Contribute

Start with open issues. For substantial work, open an issue first so the change can be discussed before implementation.

Database migrations must be non-destructive. Add a migration for existing installations instead of replacing or dropping schema. Before opening a pull request, run:

npm run lint
npm run build
npm test

Project activity is also available through Releases, Issues, and Pulse.