Free, open-source, offline-first point of sale for cafés, restaurants, and small kitchens.
Website · Download · Report a bug · Community
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.
Download the latest installer from GitHub Releases, or use the app store for macOS and Windows.
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 flocafeIf the Snap build cannot see a USB receipt printer:
sudo snap connect flocafe:raw-usbOn 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.
| 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.ps1Both scripts ask whether to keep application data. Do not choose their data-purge options unless you intend to remove the local database and backups.
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.
- 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.
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.
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 requires Node.js 22 or later.
git clone https://github.com/FreeOpenSourcePOS/FloCafe.git
cd FloCafe
npm install
npm run devnpm run dev builds the frontend and backend, then starts Electron. For backend-only work:
node dev-server.jsnpm 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 suiteElectron 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.
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.
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 testProject activity is also available through Releases, Issues, and Pulse.
