Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Staff shift viewer + change requests
Translation pending
BusinessTypeScript · JavaScriptGitHub @freestyler2026OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
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 reposRead the full 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
| 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