Work · 11 個專案

全部都是自己從需求、設計、開發到部署維運完成的專案。點「細節」看做了哪些事。

飲料 POS 點餐畫面
POS · 硬體

夜市飲料餐車 POS 上線中iPad 點餐、樹莓派出單,3 家攤商使用中

提供夜市飲料攤販使用的離線優先點餐系統。樹莓派自己發 WiFi 熱點,iPad 開瀏覽器就能點餐,出單機與貼紙機直接出票;有網路時自動把訂單同步到雲端。

  • Go
  • SQLite
  • MySQL
  • Raspberry Pi
  • ESC/POS
  • TSPL
  • Go 單一執行檔交叉編譯到 ARM,樹莓派零依賴部署;前端純 HTML/JS 內嵌進 binary
  • 直接寫 USB printer class 驅動 80mm 出單機(ESC/POS)與芯燁貼紙機(TSPL),免 CUPS
  • SQLite WAL 模式確保斷電不掉單;雲端報表依「地點 × 日期」檢視,支援多分店
  • 線上更新菜單、即時看帳、OTA 更新;Tailscale 免公網 IP 遠端維運
  • 雲端跑在 GCP VM 上的容器,只綁 loopback、設記憶體上限,經 nginx 與 Cloudflare 對外

角色:前端、後端、硬體串接、部署維運全包 · 互動式架構圖 →

羽球輪換系統排場畫面
SaaS · 多租戶

羽球輪換系統 上線中iPad 拖曳排場,5 個球隊每週在用

給羽球團主用的輪換排場網頁:把球員拖到場地或等待順位,按「下場」整組自動補上。多裝置即時同步,一個 LINE bot 服務所有球隊的報名。

  • Go
  • SQLite
  • SSE
  • Pointer Events
  • LINE Bot
  • Threads API
  • 多租戶:每個球隊獨立帳密與月費制,試用 / 付費 / 停權由管理後台控制
  • 拖曳用 Pointer Events 自己寫,另備「點一下選取、再點目標」給觸控失靈時用;復原 10 步
  • SSE 讓多台裝置同步畫面;大螢幕投影頁與掃 QR 免登入觀戰頁
  • 後台:登入失敗鎖定、IP 黑名單、異動紀錄、資料保留期自動清除
  • Threads 自動排程發文推廣、貼文洞察、新回覆推 Telegram,token 自動續期

角色:產品設計、前後端、後台、上線與營運 · 互動式架構圖 →

拾光 App
App · AI

拾光 ShiGuang 運行中台灣智慧失物招領 App

整合民間與官方資源的失物招領 App,用 AI 圖像辨識與特徵比對,自動媒合遺失物與拾獲物。iOS / Android 雙平台,含管理後台。

  • Go
  • Flutter
  • PostgreSQL
  • PostGIS
  • pgvector
  • Python
  • React
  • 後端 Handler → Service → Repository 分層;OTP / Google / Apple 登入、JWT、限流
  • Python AI 微服務做圖像特徵向量,pgvector 相似度比對、PostGIS 地理範圍查詢
  • MinIO 物件儲存、Redis、Firebase 推播;Docker Compose 部署到 GCP VM
  • 走過 App Store / Google Play 上架與審查流程(測試帳號、封閉測試、簽章指紋)

角色:後端、Flutter App、管理後台、上架流程 · 互動式架構圖 →

款款欸手機版:首頁與行李清單勾選畫面
清單 · PWA

款款欸 行李小助手 上線中旅行行李清單,不登入就能用

出門前總是漏帶東西,帶什麼永遠靠回想。做成手機優先的網站:選國內或國外就給一份公版清單,逐項勾選、加自己的東西,完成後下載 PDF 帶著走。不登入也能用,LINE 或 Google 登入後清單跟著人走。

  • Go
  • SQLite
  • 原生 JS
  • PWA
  • LINE / Google 登入
  • Threads API
  • 訪客的清單先存在這台裝置,登入時才匯入帳號;待同步的修改要伺服器確認過身分才送,被退回的不丟掉並在卡片上標示只存在這台裝置
  • 自訂物品與公版同名時合併成一列,額度以「種」計算、跨清單取聯集;付費專區由伺服器把關,未擁有者在 API 就拿不到內容
  • 後台統計改成增量彙總:撈事件、寫統計表、推進游標在同一個交易,總覽走行程內快取與啟動預熱
  • 跨瀏覽器登入交接:在另一個瀏覽器完成授權時,用四位配對碼把登入狀態交回原本那台
  • Threads 排程發文、抓成效與留言,AI 只擬稿不自動送出;發文前先查同一帳號有沒有同樣正文

角色:產品設計、前後端、後台、上線與營運 · 互動式架構圖 → · 前往網站 →

MLB 賽事 Dashboard
Dashboard · LINE

多聯盟盤口與賽事系統 上線中NBA / MLB / KBO,盤口異動推播與 AI 分析

定時掃描各聯盟盤口,異動時推播 LINE;Web Dashboard 提供賽程、比分、逐局、投注紀錄,並用 AI 做賽前分析、賽後復盤與週報。

  • Go
  • PostgreSQL
  • Redis
  • React
  • LINE Bot
  • Claude
  • 從單一 NBA 擴充到三個聯盟,各自的資料源、市場類型(獨贏 / 讓分 / 前五局)統一在同一套資料模型
  • 排程掃描外部 API,Redis 去重避免重複推播;台灣時區與美國賽日的日期偏移處理
  • AI 分析走自建的共用 AI 服務,容器內不裝 CLI,記憶體上限壓在 256MB
  • AI 推薦改為模型只輸出機率、由程式依後台門檻決策;建立賽前情境特徵表與回測評估工具
  • React 前端本機建置後上傳,VM 不跑 node

角色:後端、前端、排程、部署 · 互動式架構圖 →

台指期自動交易系統示意圖
交易 · 即時

台指期自動交易系統 模擬運行中策略引擎、風控、回測與券商下單

小台(MXF)自動交易:Go 負責策略引擎、風控與 LINE 通知,Python 負責回測與券商 API 下單,React 前端用 WebSocket 看即時報價與部位。

  • Go
  • Python
  • FastAPI
  • React
  • WebSocket
  • 富邦 Neo SDK
  • 日盤 / 夜盤時段排程、停損停利與出場路徑是回歸測試的重點,改策略必驗
  • 下單拆成獨立 Python 微服務隔離券商 SDK,主服務不因 SDK 連線時序問題掛掉
  • backtesting.py 回測模組驗證策略;週報依「週日到週六」自動彙整
  • 目前以模擬模式在 VM 上運行,不送實單

角色:架構、策略引擎、前後端、部署 · 互動式架構圖 →

Excel 訂單整理示意圖
工具 · 效能

Excel 訂單整理工具 上線中手寫解析器,十萬列檔案秒級處理

上傳訂單 Excel,自動做品名正規化與數量彙總後輸出分頁。為了大檔效能,xlsx 與偽裝成 .xls 的 HTML 都是自己寫 byte scanner 解析。

  • Go
  • xlsx
  • Claude
  • 靜態 HTML
  • 手寫 zip + XML byte scanner 取代標準 encoding/xml,並保留舊實作當基準做逐格等價測試
  • 品名正規化有規則路徑與 AI 路徑可選;新 bug 一律先寫測試重現再修
  • 改動解析邏輯必做「改前 / 改後」逐格比對,避免單元測試綠但輸出變了

角色:後端、解析器、效能基準

LINE 生活助理對話示意圖
Bot · 排程

LINE 生活助理 Bot 上線中ChatGPT 意圖判斷、行事曆、每日推播

用自然語言新增或查詢 Google Calendar 行程,早上推天氣、行程、股票摘要,行程前 30 分鐘提醒;關鍵字先攔截再交給 ChatGPT 判斷意圖。

  • Go
  • Gin
  • PostgreSQL
  • Redis
  • OpenAI
  • Google Calendar
  • Webhook 驗簽 → 事件分流 → 關鍵字攔截 → ChatGPT 意圖分類(新增 / 查詢 / 閒聊)
  • cron 排程:每分鐘掃行程提醒,Redis 防重複推送;每週日推下週摘要
  • Flex Message 卡片統一 builder;Google OAuth 授權流程

角色:後端、排程、部署

共用 AI 服務架構示意圖
內部服務 · AI

共用 AI 服務 上線中LLM 閘道、跨服務追蹤與 MCP 工具箱

多個專案都要用 AI,但配額只有一份。做一個內部服務把 Claude CLI 包成 HTTP API,管併發、排隊、每個呼叫端的每日 token 上限與成本,記錄每次呼叫;5 個服務共用,一個 trace_id 就能從呼叫端追到 AI 那一段。

  • Go
  • SQLite
  • OpenTelemetry
  • MCP
  • 併發控制
  • 併發上限與記憶體上限綁在一起算:單次峰值 × 併發數要留在容器 mem_limit 內
  • 滿載時新請求先排隊 60 秒再回 429,呼叫端的 timeout 必須把這段含進去
  • 後台可看配額剩餘與完整呼叫紀錄;跨 compose 專案走共用 external network
  • 支援 CLI 與 Messages API 兩種 provider;每個呼叫端每日 token 上限、依單價表估成本、後台每日成本圖
  • 抽出共用 OpenTelemetry 套件(Go module 發版號給呼叫端升級),呼叫端帶 traceparent,span 寫成 logfmt 進既有 Loki,不另架 Tempo
  • MCP 工具箱:把各服務的唯讀查詢包成 11 個 MCP 工具,給 Claude Code 與聊天助理使用;Cloudflare Access 加 bearer 雙重認證

角色:設計、後端、後台、容量規劃、可觀測性

總控台服務狀態示意圖
監控 · Log

總控台與集中式 Log 上線中一頁看完所有服務的健康狀態與今日錯誤

十幾個服務跑在同一台 VM,需要一眼看出誰出事。Loki + Alloy + Grafana 集中收 log,再做一個總控台探測各服務健康、列出今日錯誤與事件時間軸;出事時由 AI 故障分診先查事實、給建議,人按確認才動手。

  • Go
  • Loki
  • Grafana
  • LogQL
  • SQLite
  • AI agent
  • 探測一律打容器內部位址,連續失敗達門檻才算異常,避免單次逾時造成假警報
  • Loki 查詢加 5 分鐘快取;level 標籤大小寫混雜要不分大小寫比對
  • 自己收 log 的 collector 唯讀掛 docker.sock,收哪些容器寫死在程式裡,不接受外部輸入
  • 與 Loki 並行收集比對筆數一週,一致才切換,切換過程不能有 log 空窗
  • AI 故障分診:服務變紅或錯誤暴增時自動觸發,蒐集者用唯讀工具查事實(tool calling 迴圈)、診斷者給建議;每次有 token 預算、事件去重、逐步紀錄
  • 建議重啟時只走白名單,Telegram 或網頁按「做」才執行;模型會在 JSON 後自己編工具結果,解析只取第一個物件並有測試

角色:監控架構、後端、AI agent、維運

旅遊行程同步網頁每日行程畫面
同步 · Notion

Notion 旅遊行程同步網頁 上線中在 Notion 排行程,網頁與 Notion 雙向即時同步

旅遊行程習慣寫在 Notion,但要給家人看或出門查很不方便。做成網頁:在後台貼上 Notion 頁面就產生唯讀與編輯連結,網頁改時間、排序、勾待辦與行李會寫回 Notion,Notion 改了網頁也會跟著更新。

  • Go
  • Notion API
  • SQLite
  • SSE
  • Pointer Events
  • 快照 stale-while-revalidate:開頁立即回應,背景向 Notion 同步,有變更以 SSE 推給所有開著的人
  • Notion API 每秒 3 次限流:client 端 token bucket、429 與暫時性錯誤退避重試,行程內文點開才抓並依 last_edited_time 快取
  • Notion 圖片網址一小時過期:串流存到磁碟快取,容器記憶體 64MB 內不解碼不縮圖,host 白名單防 SSRF
  • 唯讀 / 編輯連結即權限,寫入限流、CSP、nginx 只放行 Cloudflare 來源並取真實 IP
  • 手機優先:拖曳排序、bottom sheet 編輯、地圖先顯示預覽圖再背景載入,首屏 LCP 從 4.7 秒降到 1.7 秒

角色:需求、前後端、Notion 資料模型、部署維運 · 互動式架構圖 →

Architecture

所有服務都走同一條路:邊緣防護、閘道、服務、資料。每一層只做自己的事,出問題時也知道該看哪一層。各服務的實際架構見架構圖總覽。

Edge
CloudflareDNS、TLS 終結、Bot 防護、快取
↓
Gateway
nginx依網域分流Let's Encrypt 憑證WebSocket / SSE 轉發
↓
Service
Go 服務(Docker)只綁 loopback記憶體上限內部網路互相呼叫健康探測 + 集中 log
↓
Data
PostgreSQL / MySQL / SQLiteRedis 快取與佇列MinIO 物件儲存每個服務各自一套,不共用

Skills

主力是 Go 後端與資料庫,但產品要上線需要的其他部分也都自己來。

後端
  • Go
  • Gin
  • gRPC / Protobuf
  • GORM
  • RESTful API
  • WebSocket / SSE
  • cron 排程
  • 微服務分層
  • Health Check / K8s Probe
資料庫與快取
  • MySQL
  • PostgreSQL
  • PostGIS / pgvector
  • SQLite(WAL)
  • Redis(Lock / PubSub / Queue)
  • Elasticsearch
  • MongoDB
  • Scylla
  • Zero-downtime Migration
訊息與非同步
  • RabbitMQ
  • NSQ
  • Redis Queue
  • 事件驅動重構
  • 併發安全 / data race
  • 資源洩漏排查
基礎設施
  • Docker Compose
  • Kubernetes
  • GCP
  • nginx
  • Cloudflare
  • Let's Encrypt
  • GitLab CI
  • Loki / Alloy / Grafana
  • Prometheus
  • Tailscale
前端與 App
  • React
  • Vue 3
  • Flutter
  • 原生 HTML / CSS / JS
  • App Store / Google Play 上架
整合與硬體
  • LINE Messaging API
  • Telegram Bot
  • Google Calendar / OAuth
  • OpenAI / Claude
  • 金流 Webhook
  • 券商 API
  • ESC/POS · TSPL 印表機
  • Raspberry Pi
  • BigQuery / LookerStudio

Experience

五年 Go 後端,從技術客服一路走到獨立負責服務。完整版見履歷頁。

2026/6 — 現在

威智有限公司 · Golang 後端工程師

優化既有專案整體架構(移除 submodule 依賴、重規劃索引)與遊戲商串接,處理約 400 萬筆規模的資料;團隊約 10 人。

2025/5 — 2026/5

碼斯克科技探索有限公司 · Golang 工程師 · 台中

Go 微服務線上平台。獨立從零建立 P2P 媒合交易服務與平台管理後台服務,參與 17 個 repo;負責金流接入、代理提款、玩家活動、RabbitMQ 事件驅動重構、注單 MySQL → Elasticsearch 遷移。千萬筆資料的效能優化:關鍵查詢 3 秒 → 50 毫秒。

2025/3 — 2025/5

接案 · 後端工程師

外包獎勵中心系統(簽到、代理邀請獎勵),用 RabbitMQ 與 Redis queue 處理大量資料,不阻塞主流程。

2024/4 — 2025/1

杰思數位有限公司 · Golang 工程師 · 台中

聊天室彩票遊戲架構設計與開發:前台、後台、GameServer、下注與開獎結算、Redis PubSub + WebSocket 推播、排程、優惠與 VIP 返水模組、MySQL 查詢優化。

2023/6 — 2024/4

精誠資訊 · 後端工程師 · 台北

主機監控代理產品:部署在客戶端內網採集主機資訊與 SNMP、網路掃描結果,經 RabbitMQ 回送 Prometheus / OpenSearch。

2022/5 — 2023/6

艾爾加科技 · 軟體工程師 · 台中

第一份工程師工作。Go RESTful / gRPC / NSQ / WebSocket 與 Lua 遊戲;GCP 建置維運 MySQL 與 Scylla,Grafana / Prometheus 監控,BigQuery + LookerStudio 風控報表。

2019/5 — 2022/4

技術客服 · 兩家軟體公司 · 睿隆科技、微碧愛普科技

點餐 POS 系統客戶支援、log 判讀與問題排除、SOP 建立;Excel VBA 自動化月結,再自學 Python 把流程程式化,從這裡跨進工程師領域。

About

我習慣把一件事從頭做到尾:釐清需求、設計資料流、寫後端與前端、部署上線,然後看著它被真的使用者用,再依回饋修。飲料 POS 是幫夜市攤販做的,羽球輪換系統是球友每週在用的,這些回饋比任何單元測試都誠實。

工作上重視穩定性:改動前先寫測試重現問題、上線前把服務跑起來實際打一遍、部署後確認真的起來。並發安全、資源洩漏、靜默失敗這些不會立刻爆的問題,是我特別會盯的地方。

同時也做過技術客服與資料對帳,所以能從業務與資料兩個視角看系統,跟非工程背景的人溝通沒有障礙。

地點台中。可遠端配合,偶爾需要實體會議也可以
型態全職,或遠端專案合作
主力Go 後端、資料庫設計與優化、部署維運
也會React / Vue 3 / Flutter 前端、硬體串接、LINE Bot
語言中文、台語;英文可讀技術文件

有想做的東西嗎?聊聊看。

不論是要找後端工程師,或是有個產品想從零做到上線,都歡迎來信。

© 蔡宗霖 · relexes.comGo 單一 binary 內嵌靜態頁。