Synaplan
기업을 위한 오픈소스 AI 플랫폼
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Internal management system for Sushi ZEN restaurants (Dubai 5 branches, Manila 4 branches + Central Kitchen).
Covers shift scheduling, attendance, procurement, inventory, payroll, and P&L.
Live app: https://sushizen-shift-pwa.vercel.app
API backend: https://sushizen-shift-app-038d846023bc.herokuapp.com
Never read main.py or db.py in full. Use grep and read only the ±50 lines you need.
Prerequisites
• Node.js 20+
• Python 3.12+ (for backend only)
• Heroku CLI: brew install heroku/brew/heroku
• Git access to both reposREADME 전문 보기 ↗Internal management system for Sushi ZEN restaurants (Dubai 5 branches, Manila 4 branches + Central Kitchen).
Covers shift scheduling, attendance, procurement, inventory, payroll, and P&L.
Live app: https://sushizen-shift-pwa.vercel.app
API backend: https://sushizen-shift-app-038d846023bc.herokuapp.com
| Module | What it does |
|---|---|
| Shift scheduling | HQ drafts weekly shifts; staff view via /week |
| Attendance (DTR) | Time-in/out with GPS or WebAuthn passkey |
| Procurement | Store → CK → supplier order flow with approval chain |
| Daily Inventory | Kitchen daily count with par-level alerts and order generation |
| Payroll | Monthly salary computation with NSD/OT/deduction breakdown |
| P&L | Management P&L dashboard linking labor cost to target |
| NTE / Conduct | Notice-to-Explain issuance with legal schema (PH Labor Code / UAE Art.39/44) |
| CCTV integration | Tapo camera feed ingest (Jetson Orin Nano — in planning) |
sushizen-shift-pwa/ ← This repo (Next.js 15 App Router)
src/app/ ← Pages (all "use client")
src/components/ ← Shared components
src/lib/ ← Utilities, auth, UI tokens
sushizen_shift_app_clean/ ← Backend (Python FastAPI on Heroku) — separate repo
app/main.py ← All API routes (~31,500 lines)
app/db.py ← All DB functions (~45,700 lines)
Never read
main.pyordb.pyin full. Use grep and read only the ±50 lines you need.
brew install heroku/brew/herokugit clone [email protected]:freestyler2026/sushizen-shift-pwa.git
cd sushizen-shift-pwa
npm install
Create .env.local in the project root:
NEXT_PUBLIC_API_BASE_URL=https://sushizen-shift-app-038d846023bc.herokuapp.com
Start dev server:
npm run dev
# Open http://localhost:3000
Login with: Yukihiro Nishimura (role: HQ)
PIN is stored separately — ask the system owner or check 1Password.
heroku git:remote -a sushizen-shift-app # add Heroku remote to existing clone
The backend DATABASE_URL and all service account keys are set as Heroku config vars.
For local development, copy them from: heroku config -a sushizen-shift-app
pip install -r requirements.txt
DATABASE_URL=<from heroku config> uvicorn app.main:app --reload
cd sushizen-shift-pwa
git add -A && git commit -m "description"
git push origin HEAD:main
# Vercel auto-deploys within ~1 minute
cd sushizen_shift_app_clean
git add -A && git commit -m "description"
git push heroku HEAD:master --force
# Heroku deploy takes ~2-3 minutes
heroku logs -a sushizen-shift-app -n 200 --tail
Vercel Dashboard → Deployments → find the last working deploy → "Promote to Production"
(Do NOT use git reset — Vercel is the source of truth for production.)
git log --oneline -10 # find the commit hash
git push heroku <hash>:master --force
heroku logs -a sushizen-shift-app -n 200 --tail
heroku dyno:restart -a sushizen-shift-app # restarts all dynos
The DB is Heroku Postgres Essential (~25 connection limit).
If you see too many connections, restart the dyno — it drops all open connections.
heroku pg:psql -a sushizen-shift-app # connect to DB directly
heroku pg:backups -a sushizen-shift-app # list backups
heroku pg:backups:capture -a sushizen-shift-app # take a manual backup
Check Vercel Dashboard → Deployments → click the failed deploy → "Build Logs".
Common causes: TypeScript error, missing env var, import cycle.
| Page | File | Risk |
|---|---|---|
/week | src/app/week/page.tsx | Staff shift viewer — breaking this affects all staff daily |
/admin/draft | src/app/admin/draft/page.tsx | 2,500-line schedule editor — extremely fragile |
Any change to these files must be tested end-to-end before push.
src/lib/ui-tokens.ts — do not write raw Tailwind class strings in pages.apiFetch() in src/lib/api.ts — never pass ${API_BASE} in the path (it prepends automatically).localStorage["sushizen_shift_auth"] — see src/lib/auth.ts.cur.fetchone()[0] — use row.get("column_name") (RealDictCursor returns dicts, not tuples).get_conn() / conn.close()) to avoid transaction abort propagation.| Role | Name |
|---|---|
| System owner / developer | Yukihiro Nishimura ([email protected]) |
For full credentials and access handover, see the 1Password note: Sushi ZEN — System Handover