跳至主要內容
Mark Ku's Blog
v1.0 開發中 · MIT 開源

open-pos

地端優先的餐飲 POS。點餐、結帳、出單、班別日結,全部跑在店裡那台電腦上 —— 網路斷了照樣做生意,資料永遠在你自己手上。

看安裝方式GitHub 原始碼
★ 完全免費 · MIT▢ Windows / macOS / Linux · 7 個安裝檔 · 離線可用 · 零月租
open-pos · 點餐畫面
點餐畫面。左菜單右購物車,收銀員的動線一路往右不用回頭。加點的規格(加蛋 +10)直接掛在品項下面,而合計旁邊永遠同時顯示未稅與稅額 —— 那兩個數字必須跟發票對得起來。
NordVPN
贊助

公共 Wi-Fi、出國連線,交給 NordVPN

一鍵加密全部流量,137 國節點隨你切換。1 帳號 10 台裝置,30 天退款保證。

含聯盟推廣連結

它幫你解決什麼

每一項都是台灣中小餐飲真的在付的代價,不是功能表上的字。

💸

月租與綁約

商用 POS 常常綁約三年、月租照收,想換系統時資料還拿不回來。open-pos 不收錢,資料是你硬碟上的一個 SQLite 檔,隨時可以帶走。

📴

網路一斷就收不了錢

雲端 POS 斷線等於停業。這套的主機就在店裡,網路只是拿來連平板與手機的,不是拿來收錢的。

🖨

出單機被驅動綁死

廠商 SDK 常常只有 Windows DLL,Linux 根本沒驅動。這套直接開 TCP 9100 送 ESC/POS 位元組,任何作業系統都一樣,也不用裝驅動程式。

🧮

金額差一元

金額一律用整數元,稅額依營業稅法施行細則的官方算法先算再倒扣銷售額,所以「銷售額 + 稅額 = 總額」永遠成立 —— 那是財政部的硬檢核。

🔍

月底對不上帳

每一筆動到錢的操作都寫進永不覆寫的稽核紀錄與流水帳。「誰在幾點把哪一單改成什麼」查得出來,結完帳再作廢也留得下痕跡。

💾

資料不見

用 SQLite 的線上一致快照做備份(不是複製檔案,那會拿到壞掉的檔),可以直接還原。備份太久沒跑,健康檢查會亮燈提醒。

已經能用的部分

v1.0 的目標不是功能多,是「一台電腦一台出單機就能開店」而且不會掉資料。

👆

觸控點餐

左菜單、右購物車,收銀員的動線一路往右不用回頭。品項磚刻意做大 —— 尖峰時間是站著用食指戳的。

💵

結帳與找零

現金給快捷鈔票鍵,找零算出來之後停在畫面上讓人照著數。金額只由後端算一次,螢幕與資料庫不會出現兩個數字。

🧾

商品維護

分類、品項、規格都在 App 裡改,不必碰資料庫。改價會留下稽核紀錄,訂單明細則存當時的品名與單價快照。

📶

區網多終端

同一支程式內建區網服務。之後的 KDS 與掃碼點餐走同一個後端,而收銀介面刻意不從區網提供 —— 連上店裡 Wi-Fi 的人載不到它。

💳

金流:分得清「失敗」與「不知道」

刷卡失敗不可怕,收銀員當場看得到。可怕的是網路在送出之後、回應之前斷掉 —— 錢扣了,POS 卻不知道。所以送出前先寫一筆待確認並 commit,逾時記成「不知道」而不是「失敗」,它會進對帳清單而不是被當成沒發生。

🍽

吃到飽、單點、飲料店都做得了

吃到飽的收費是「一個人多少錢」,所以方案本身就是一個商品,人頭費就是那個商品點 N 份。點下去那一桌就生效、不必先切換模式 —— 那正是「忘了切模式、飲料全照原價收」的來源。設計前查了 25 套市售產品,連被推翻的兩個設計都寫在文件裡。

長什麼樣子

介面是深色的:餐飲店的燈通常很亮,而收銀螢幕整天都亮著。

點餐畫面。左菜單右購物車,收銀員的動線一路往右不用回頭。加點的規格(加蛋 +10)直接掛在品項下面,而合計旁邊永遠同時顯示未稅與稅額 —— 那兩個數字必須跟發票對得起來。
點餐畫面。左菜單右購物車,收銀員的動線一路往右不用回頭。加點的規格(加蛋 +10)直接掛在品項下面,而合計旁邊永遠同時顯示未稅與稅額 —— 那兩個數字必須跟發票對得起來。
結帳。客人給 500、應收 330,找零 170 算出來之後停在畫面上讓人照著數。金額只由後端算一次,螢幕跟資料庫不會出現兩個數字。上面那排是分帳模式:整單 / 平分 / 指定金額 / 分項,對應櫃檯真的會聽到的那幾句話。
結帳。客人給 500、應收 330,找零 170 算出來之後停在畫面上讓人照著數。金額只由後端算一次,螢幕跟資料庫不會出現兩個數字。上面那排是分帳模式:整單 / 平分 / 指定金額 / 分項,對應櫃檯真的會聽到的那幾句話。
桌位圖。每張卡片只回答三個問題:空不空、多少錢、坐多久了。顏色只表達最後一個 —— 九十分鐘轉琥珀、兩小時轉紅。不是催客人,是「這一桌可能已經吃完但還沒結帳」。
桌位圖。每張卡片只回答三個問題:空不空、多少錢、坐多久了。顏色只表達最後一個 —— 九十分鐘轉琥珀、兩小時轉紅。不是催客人,是「這一桌可能已經吃完但還沒結帳」。
金流設定。憑證只回末四碼,永遠不回明文;沒填完的欄位會擋住「啟用」並直接說出還缺哪幾個。最上面那句「憑證沒有加密、備份出去的 .db 等於你的收款權限」是刻意放在第一眼的位置 —— 假裝它被加密了比誠實地說出來更危險。
金流設定。憑證只回末四碼,永遠不回明文;沒填完的欄位會擋住「啟用」並直接說出還缺哪幾個。最上面那句「憑證沒有加密、備份出去的 .db 等於你的收款權限」是刻意放在第一眼的位置 —— 假裝它被加密了比誠實地說出來更危險。
吃到飽方案。人頭費就是「方案商品點 N 份」—— 所以大人小孩不同價只要加規格,稅額、分帳、報表全部自動適用,定價引擎一行都沒改。時限只會提醒不會自動加價,那句話直接寫在設定畫面上。
吃到飽方案。人頭費就是「方案商品點 N 份」—— 所以大人小孩不同價只要加規格,稅額、分帳、報表全部自動適用,定價引擎一行都沒改。時限只會提醒不會自動加價,那句話直接寫在設定畫面上。

開始之前要知道的四件事

先把限制講清楚,比事後解釋誠實。

  1. 1

    現在還沒有安裝檔

    v1.0 還在開發中,目前要自己從原始碼建置。安裝檔會在 v1.0 發行時放上 GitHub Release,這一頁也會同步更新。

  2. 2

    單機架構,第二台是冷備

    一台主機、一份 SQLite、單一寫入者(台灣市佔最大的商用 POS 也是同構做法)。第二台電腦裝同一份程式平常不開,主機故障時插備份、按還原、接手,大約十分鐘。不做多主同步。

  3. 3

    資料不能放網路磁碟或雲端同步資料夾

    SQLite 的 WAL 在 SMB 網路磁碟上會靜默損毀,而 OneDrive/Dropbox 會各自複製資料庫的三個檔案。程式偵測到這兩種路徑會直接拒絕啟動,並告訴你該放哪裡。

  4. 4

    電子發票還沒做

    排在 v1.4,會先做財政部免費的自建 Turnkey。在那之前這套系統不開立電子發票。

技術選擇

全部是純 Rust 相依,不引入任何 C 函式庫 —— clone 下來就能跑測試,這是開源專案的第一印象。

桌面殼Tauri 2
後端Rust 2021 + sqlx
資料庫SQLite(WAL · 雙連線池)
前端React 18 + Vite 5 + Tailwind 3
出單機ESC/POS over TCP 9100
授權MIT

安裝:一份程式碼,七個安裝檔

同一份原始碼由 GitHub Actions 一次建出七個安裝檔:Windows 的 exe 與 msi、macOS 的 Apple 晶片與 Intel 各一、Linux 的 deb / rpm / AppImage。換平台不必改設定,資料庫檔案也可以直接搬過去。

Windows 10 / 11

x64-setup.exe(NSIS)· x64_en-US.msi

主要目標平台 —— 台灣餐飲店的收銀機幾乎都是 Windows。兩種安裝檔擇一,照精靈按完即可。

macOS

aarch64.dmg(Apple 晶片)· x64.dmg(Intel)

兩種晶片各建一個,下載對應的那個。開發與試用都很順,實際門市較少見。

Linux

amd64.deb · x86_64.rpm · amd64.AppImage

deb / rpm 交給套件管理員;AppImage 則 chmod +x 直接執行、不用安裝。另有不含桌面介面的 open-posd,可以只跑區網服務 —— 那是 KDS 與掃碼點餐的後端。

正式安裝檔會隨 v1.0 發行放上 GitHub Releases。在那之前想先試,用下面的建置指令最快 —— 它在三個平台上是同一組指令;跑起來之後加上 --demo 會建一份示範菜單,不用自己先輸入商品。

從原始碼跑起來

  1. 1

    裝 Rust(stable)與 Node.js 20 以上。Windows 還需要 Microsoft C++ 建置工具。

  2. 2

    clone 專案,npm install 裝前端相依。

  3. 3

    npm run tauri dev 會同時起前端與 Rust 後端,開發模式的視窗就會跳出來。

  4. 4

    想先看看長什麼樣子:cargo run --bin open-posd -- --demo 會建一份 38 個品項的示範菜單,並在區網起一個服務。示範資料是冪等的,不會汙染你自己建的菜單。

第一次建置 Rust 相依要幾分鐘,之後就快了。

接下來做什麼

順序是照「哪一段的關鍵路徑握在自己手上」排的 —— 發票卡在每家店自己去申請,掃碼點餐卡在顧客的手機。

  • v1.0點餐 / 桌位 / 結帳分帳 / 出單 / 班別日結 / 金流設定 / 備份功能已齊
  • v1.1KDS 廚房顯示螢幕(含離線佇列)已完成
  • v1.2報表強化、稽核查詢、Excel 匯出已完成
  • v1.3顧客掃碼自助點餐規劃中
  • v1.4電子發票(自建 Turnkey)規劃中
  • v2.0PostgreSQL 支援規劃中

授權與界線

MIT 授權,完整開源,沒有社群版與商業版之分。也先說明目前的範圍,方便你評估合不合用:雲端多店與會員點數還沒有規劃;信用卡建議走店裡原本那台實體刷卡機,POS 只記授權碼、不經手卡號(LINE Pay 與藍新則已經可以設定);硬體相容性靠社群回報慢慢累積。專案目前由一個人維護,先把範圍說清楚,才能把已經做好的部分照顧好。

看授權條款

自己的店,自己的資料

如果你也覺得「開一家店不應該先簽三年約」,歡迎來看看程式碼、回報你的出單機型號,或直接開一個 issue。

贊助開源

這些工具都是免費且開源的

沒有付費牆、不用註冊帳號,程式碼全部公開在 GitHub。如果它幫你省下了時間,可以請我喝杯咖啡,讓後續的更新跟新工具繼續做下去。

請我喝杯咖啡

自訂金額·PayPal 安全結帳

NordVPN

站長優惠

寫程式的地方,網路常常不是你的

NordVPN 把你的連線整條加密:咖啡廳與飯店 Wi-Fi 不再是別人的監聽管道,出差時銀行 App、公司後台、台灣的影音服務照樣連得回去。開 App 按一顆鈕就好,NordLynx 協定跑起來日常上網幾乎無感,一個帳號可以同時保護 10 台裝置。30 天退款保證,不合用全額退。

  • 公共 Wi-Fi 全程加密,攔到也只是亂碼
  • 137 國節點,出國連得回台灣服務
  • 1 帳號 10 台裝置,30 天退款保證

含聯盟推廣連結