Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
Oriental Lounge 店内人数ダッシュボード(Flask + Google Sheets)
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗このリポジトリは、MEGRIBI の混雑可視化を支える Flask API と Next.js 16(App Router)のフロントエンドを含むモノレポです。
運用・制約・設計の正本は plan/README.md(ナビ)と plan/*.md にあります。
plan/ の目次・Cursor/AI はここから)/api/current の位置づけ・補足)Backend(Flask)
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
# .env に必要な環境変数を設定(plan/ENV.md 参照)
python app.py
Frontend(Next.js)
cd frontend
npm install
# frontend/.env.local に必要な環境変数を設定(plan/ENV.md 参照)
npm run dev
API 契約の正本は
CLAUDE.md§3「絶対不変リスト」。同じ内容を複数の文書に書くと必ず食い違うため、 ここには要点だけを置き、詳細は CLAUDE.md を見ること(食い違いを見つけたらコードが正)。
/api/range の必須引数は store + limit。任意で from / to(YYYY-MM-DD・日付粒度のみ)を受ける。
時刻粒度のサーバー側フィルタは禁止(夜窓の判定はフロントの責務)。useStorePreviewData.ts)で行う。LINE 下書きは insightFromRange.ts(Next サーバー)で、取得済み /api/range に対して窓計算(Flask 側は日付粒度までしか絞らない)。logs。Google Sheet / GAS はレガシー fallback。NEXT_PUBLIC_* に秘密を入れない)。[] を含むパスは -LiteralPath を使う(例: frontend/src/app/insights/weekly/[store]/page.tsx)。Get-Content -Raw が使えない環境では Get-Content ... | Out-String を使用。/api/range に時刻粒度のクエリ追加・サーバ側の夜窓フィルタ追加。
(from/to の日付粒度は実装済みの正式な契約。詳細は CLAUDE.md §3)詳細は plan/DECISIONS.md を参照してください。