Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
用 seats.aero Partner API 查詢國泰、法航、加航、長榮、華航等航空公司的里程票座位,並附上航空聯盟與里程計畫規則庫。README 전문 보기 ↗
用 seats.aero Partner API 查詢國泰、法航、加航、長榮、華航等航空公司的里程票座位,並附上航空聯盟與里程計畫規則庫。
data/points.json 的 calc.sources。data/points.json 的 transfers/cobrand),以及里程票與現金票的基本觀念。資料在 data/*.json,直接編輯即可更新。頁尾會顯示版本號、最後更新日期、更新紀錄,以及目前部署的程式版本(Vercel 提供的 commit)。改完東西要上線前,先跑:
node scripts/bump-version.js patch "這次改了什麼" # 小修正:1.9.0 → 1.9.1
node scripts/bump-version.js minor "新增 XX 功能" # 新功能:1.9.0 → 1.10.0
它會更新 data/version.json 的版本號、日期(台北時間)與更新紀錄,再一起 commit 即可。
需要 Node.js 20 以上。唯一的相依套件是一句話搜尋用 Claude 時的 @anthropic-ai/sdk(版本鎖在 package-lock.json;用 ChatGPT 不需要套件),第一次先執行 npm ci。
npm ci
cp .env.example .env # 填入 SEATS_AERO_API_KEY
export $(grep -v '^#' .env | xargs)
npm start # http://localhost:3000
npm test
沒有設定 SEATS_AERO_API_KEY 時會以示範資料模式運作,畫面上方會有提示。
/api/*,由伺服器轉發至 seats.aero。CACHE_TTL_SECONDS),節省每日 1,000 次的 Pro 額度。公開的查詢(里程搜尋、區域探索、出發前小提醒、匯率、今日好康、資料檔)另外交給 Vercel 的 CDN 快取(s-maxage),換一台伺服器也不會重查;要通關密碼的查詢(現金票、飯店現金價、提醒、追蹤)不走 CDN,改用 Upstash Redis 共用快取 30–60 分鐘,同樣的查詢、連點兩下都只扣一次額度。asiamiles,官方文件未列出),但沒有長榮、華航自家里程計畫;這兩家以可換到其座位的夥伴計畫(見 data/airlines.json 的 bookableVia)呈現。沒有亞洲萬里通資料的寰宇一家航線,前端會依 data/asiamiles.json 的距離哩數表估算。public/airports.min.json,約 3,200 個有定期航班的機場)由 scripts/build-airports.js 產生:機場資料來自 OurAirports(公有領域),城市別名來自 airportsdata(MIT,© Mike Borsetti),常用機場中文名與多機場城市(東京、倫敦等)在 data/airport-names-zh.json 手動維護。改了中文名之後重新執行該腳本即可。在 Vercel 選「Add New → Project」,匯入這個 GitHub repo,Framework 選 Other。
在 Environment Variables 新增 SEATS_AERO_API_KEY,值填你的 seats.aero 金鑰。
按 Deploy。之後每次推送到 main 都會自動重新部署。
(選用)查現金票通關密碼:在 Environment Variables 新增 CASH_PASSCODE(任意字串)後重新部署,之後只有輸入過密碼的裝置才能用 SerpApi 即時查價(里程票查詢不受影響)。沒設定就不鎖。
(選用)現金票即時價格:到 serpapi.com 註冊取得金鑰,在 Environment Variables 新增 SERPAPI_KEY 後重新部署。免費方案每月 250 次查詢;每次搜尋、「看回程」或「查預訂選項」各用 1 次,同樣條件 30 分鐘內重查不會再扣。沒設定時「查現金票」分頁只提供 Google 航班與 Skyscanner 連結。
(選用)機位提醒:在 Vercel 專案的 Storage 分頁,透過 Marketplace 建立一個 Upstash Redis(免費方案),連線設定會自動加入;再到 resend.com 註冊、建立 API 金鑰,新增環境變數 RESEND_API_KEY(沒驗證網域時,只能寄到你註冊 Resend 的信箱)。請設定 CRON_SECRET(任意長字串):Vercel 的排程會帶著它呼叫,沒有它、也沒有通關密碼時,排程端點一律拒絕。可另設 ALERT_FROM 自訂寄件人。重新部署後,vercel.json 裡的 cron 每天 00:10 UTC(台灣 08:10,seats.aero 每日額度剛重置)呼叫 /api/alerts/run,依序更新今日好康、降價追蹤、機位提醒;01:10 UTC 再跑一次 /api/cron/daily 補做前一次沒做完的部分(已做過的會跳過,不會重扣額度或重複寄信)。Hobby 方案的排程可能在該小時內任何時間觸發。也可以在網站的「機位提醒」面板按「立即檢查全部」。設定了 CASH_PASSCODE 的話,管理提醒也要輸入同一組密碼。
(選用)「誰飛直航」用同一把 RAPIDAPI_KEY 的 AeroDataBox(每月約 400 單位,每個出發機場 6 單位,存兩週)。台灣各機場與香港、東京、大阪、首爾、曼谷、新加坡任何人都能查;其他出發機場要通關密碼。每月剩 40 單位時自動停止查新機場;如果你的方案額度不同,可設 DIRECTS_MONTHLY_UNITS。
(選用)Telegram 通知:在 Telegram 找 @BotFather,傳 /newbot 建立自己的機器人,複製它給的金鑰,在 Vercel 新增環境變數 TELEGRAM_BOT_TOKEN 後重新部署(需要已設定 CASH_PASSCODE 和 Upstash Redis)。接著在 Telegram 打開你的機器人按「開始」(傳送 /start),再回網站按「連結 Telegram」;收到「機票搜索雷達已連結」就完成了。之後新機位提醒和降價通知除了 Email 也會傳到 Telegram。
(選用)帳號同步:有 Upstash Redis 就能用 Email+密碼註冊,在不同裝置同步點數、收藏、最近搜尋、行程等個人設定(不登入也一切照舊)。驗證信和重設密碼信透過同一個 RESEND_API_KEY 寄出;沒設定寄信時帳號直接啟用、無法用「忘記密碼」。登入後輸入過一次通關密碼,同一個帳號在其他裝置也算已解鎖(只存加鹽雜湊,改了 CASH_PASSCODE 就要重新輸入)。
(選用)一句話搜尋:ChatGPT 或 Claude 擇一。用 ChatGPT:到 platform.openai.com 儲值並建立 API 金鑰,在 Vercel 新增 OPENAI_API_KEY(模型 GPT-6 Luna);用 Claude:到 platform.claude.com 建立 API 金鑰,在 Vercel 新增 ANTHROPIC_API_KEY(模型 Claude Haiku 5.5)。兩個都設時用 ChatGPT,想改用 Claude 就加 NL_PROVIDER=claude。建議在各自的後台設每月花費上限,設好後重新部署。航線查詢上方會多一個輸入框,只有輸入過通關密碼(或已解鎖帳號)的裝置看得到;模型把一句中文變成表單條件,兩家價格相同,每次約 US$0.0004,不花 seats.aero 額度(按「搜尋機位」才會查)。每天最多 100 次(NL_DAILY_LIMIT 可改),同一句話一天內重打不重複計費。沒設定金鑰時輸入框不會出現。同一把金鑰也用在「請 AI 助理查官網」卡片(國泰、華航、長榮、星宇)的「📷 貼上截圖」:你自己截官網的哩程日曆,模型把圖讀成日曆,每張約 US$0.001(估算),圖不會保存;每天最多 30 張(NL_IMAGE_DAILY_LIMIT 可改),讀失敗不算次數。
前端放在 public/,/api/* 由 api/index.js 這支 serverless function 處理,金鑰不會出現在瀏覽器端。