尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Admin dashboard for a Group Order (GO) business purchasing Aikatsu products
from Mercari Japan, per the product's PRD. Covers order recap (Box → Batch →
Item → Customer), batch payment management, tax bill management (Tagihan
Pajak EMS), and Price Estimator configuration.
• React 19 + TypeScript, built with Vite
• React Router (hash routing)
• Zustand (+ persist) for state — currently the only data layer
• Tailwind CSS v4查看完整 README ↗Admin dashboard for a Group Order (GO) business purchasing Aikatsu products from Mercari Japan, per the product's PRD. Covers order recap (Box → Batch → Item → Customer), batch payment management, tax bill management (Tagihan Pajak EMS), and Price Estimator configuration.
persist) for state — currently the only data layernpm install
npm run dev
The app runs entirely on the Zustand store in src/store/useStore.ts,
persisted to localStorage. There is no backend yet — item photos and
bukti transfer uploads are stored as base64 data URLs in the browser. This
is fine for demoing the workflows, but doesn't scale past a single device
or survive a cleared browser.
supabase/migrations/0001_init.sql has a Postgres schema mirroring
src/types.ts (batches, items, batch_bills, tax_bills, estimator_config,
notifications), with Row Level Security policies so customers only ever
see their own rows and Admin GO has full access. src/lib/supabaseClient.ts
is a client stub — nothing in the app calls it yet.
To connect a real project:
supabase db push or paste it into the SQL editor).batch-photos and bukti-transfer storage buckets (see the
comment at the bottom of the migration file) and add matching storage
policies..env.example to .env and fill in your project URL/anon key.useStore.ts actions to call Supabase instead of
mutating local state — not done yet, since it touches every page.The two dashboards use two separate, unrelated sign-in methods — there is no shared login screen and no SSO between them.
Admin GO signs in with a normal website account: Supabase Auth's built-in
email/password provider. This is an internal tool, not a public signup —
admin accounts are provisioned out-of-band (Supabase dashboard invite, or
a seed script) with role = 'admin' and no line_user_id. No public
"sign up as admin" flow exists or should exist.
Customers sign in with LINE Login and nothing else — no email/
password option on that dashboard. LINE Login (v2.1) is OpenID Connect–
compliant — it issues a signed id_token carrying the user's stable LINE
id (sub), display name, and profile picture. Supabase Auth accepts that
directly via supabase.auth.signInWithIdToken() once LINE is registered
as a custom OIDC provider on the project (LINE Developers Console → a
"LINE Login" channel, Callback URL pointed at the Supabase Auth callback,
Channel ID/Secret entered into Supabase's Auth provider settings).
profiles.line_user_id stores the sub claim and is how a returning
customer is matched back to their row; full_name / avatar_url are
seeded from the LINE profile on first login and editable after.role = 'customer' and always has
line_user_id set — the schema's line_user_id_iff_customer check
constraint enforces that a row is either a LINE customer or an admin
website account, never both.