Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Built from the Software Requirements Specification (ROS-SRS-001 v1.0).
Frontend only: no backend, no database, no Python. The running restaurant —
orders, kitchen tickets, stock, the cash drawer — lives in the browser, so
the system can be used rather than only described.
Requires Node 18.18+ (Node 20+ recommended).查看完整 README ↗Built from the Software Requirements Specification (ROS-SRS-001 v1.0).
Frontend only: no backend, no database, no Python. The running restaurant — orders, kitchen tickets, stock, the cash drawer — lives in the browser, so the system can be used rather than only described.
npm install
npm run dev # http://localhost:3000
npm run build # production build
npm start # serve the production build
Requires Node 18.18+ (Node 20+ recommended).
/pos and declare an opening float. No shift, no sales
(FR-POS-090)./kds in a second tab. It is a second terminal: the ticket is
already there. Hold to bump; the pass releases the order when every
station is done./orders, /inventory/movements,
/finance/cash-sessions, /audit. The sale is in all of them.Two tabs on the same machine sync through localStorage, which is as close
as a frontend-only build can honestly get to the local-network routing in
NFR-REL-003. Reset terminal in the top bar clears the shift and starts
over; the menu, recipes and branches are untouched.
See PROGRESS.md for what is implemented, what is not, and why stock
depletes when a line is fired rather than when the bill is paid.
app/globals.css under @theme)app/layout.tsx:
Space Grotesk for Latin display, Inter for text, Cairo for Arabic on
every surface including headings, JetBrains Mono for requirement tags
and money columnscomponents/motion.tsx — scroll reveal, count-up,
marquee, scroll progress, cursor-tracked card glow. All of it is off
under prefers-reduced-motion, and the reveal falls back to visible
under @media (scripting: none).Terminals — full screen, no console chrome.
| Route | What it does |
|---|---|
/pos | Floor plan, menu, modifiers, courses, discounts, voids, split payment, receipt |
/kds | Station displays, live timers, hold-to-bump, recall, all-day counts, pass |
Console — behind /login.
| Route | What it does |
|---|---|
/dashboard | The eight figures an owner acts on, plus today's live take |
/orders | Every order with its line detail, costs and payments |
/operations/open-orders | What is on the floor now, oldest first |
/operations/tables | Table setup: label, section and seat capacity |
/operations/table-status | Live table occupancy — Available / Occupied / Conflict — from the backend |
/operations/kitchen | The queue, average ticket time, bottleneck station |
/inventory/levels | Live on-hand, what the shift moved, negatives shown |
/inventory/movements | The append-only ledger every balance derives from |
/inventory/waste | True waste separated from staff meals and tastings |
/finance/cash-sessions | Float, drawer operations, expected cash, variance |
/finance/payments | Net by tender, refunds against the same tender |
/audit | Hash-chained trail of every discount, void and refund |
/settings | Switches that change how the terminals behave |
Marketing — the public site.
| Route | What it does |
|---|---|
/ | The one-sale-nine-effects argument, the four numbers, the food-cost drift calculator, differentiators, the competitive landscape, unit economics, module and segment previews |
/modules | All seventeen module codes from SRS §1.5, in three groups |
/flows | Six use cases at step level — UC-POS-01, UC-KDS-01, UC-INV-01, UC-PRC-01, UC-CST-01, with UC-OFF-01 on /platform |
/architecture | Chapters 5, 7, 24, 25, 26: drivers, module rules, extraction path, event catalogue and envelope, domain model and value objects, the order state machine, movement types, patterns and rejected anti-patterns, schemas, partitioning, migrations, backup, API conventions, status codes, error model, endpoints |
/quality | Chapters 27, 28, 29: usability and accessibility, maintainability, observability, portability, test categories, the conformance corpus, quality gates, environments, the pipeline, deployment rules, SLOs, incident severity, cost management |
/segments | The four buyer segments with buying behaviour, and the five personas each hard requirement came from |
/platform | Offline, Arabic and country packs, audit, integrations, architecture and ADRs, performance, scale and availability, the three shipped country packs, security and compliance mapping, and the UC-OFF-01 outage timeline |
/pricing | Three tiers, the comparison matrix, add-ons, tenant lifecycle |
/spec | The reference key: document control, the requirement scheme and module codes, MoSCoW, assumptions, constraints, out-of-scope, glossary, actors, bounded contexts, the fifteen release-blocking scenarios, test pyramid, data volumes |
/contact | Demo request form (client-side only — see below) |
Arabic is the default locale and the layout is authored right-to-left, then mirrored to English — not the reverse. This mirrors FR-LOC-001..005.
content/en.ts defines the core copy and its shape (export type Copy)content/{flows,architecture,quality}/en.ts do the same for the three
long reference chapters; lib/i18n.tsx composes all four into one tar.ts is typed against its English counterpart, so a missing key
is a build error. 2,309 leaf strings, checked in both directions.lib/i18n.tsx holds the language, writes lang/dir onto <html>,
and remembers the choice in localStorageps-*, me-*, border-s,
start-*), so nothing needs flipping by handAdding a third language: create content/fr.ts typed as Copy, add it to
dictionaries in lib/i18n.tsx, and extend the toggle into a picker.
Numbers in the Arabic build render as Arabic-Indic via
Intl.NumberFormat("ar-EG") in components/DriftCalculator.tsx. Switch
the locale string to en-US there if you want Western numerals in Arabic.
app/contact/page.tsx validates locally and then fakes a submit — nothing
leaves the browser. To make it real, replace the window.setTimeout in
onSubmit with a fetch to your CRM, a Next.js route handler, or a form
service. The success and error states are already in place.
components/SaleCascade.tsx). It animates once on
scroll and can be replayed; it renders complete and static under
prefers-reduced-motion.FR-POS-001, NFR-USA-003).
Every claim on the site points at the requirement it came from, which is
also a useful sales artifact — nothing is promised that isn't specified.amber the brand
and money, emerald "this is working", azure platform and
architecture, violet quality and governance, rose loss and risk.-deep is the only weight
that clears 4.5:1 on paper; -wash is a section background and nothing
else.Section sets
data-accent, which defines --a, --a-deep and --a-wash. Everything
inside reads text-a, bg-a-wash, border-a, so one prop recolours a
whole band and no component knows which hue it is wearing.prefers-reduced-motion.rootMargin does the
"wait until it is properly on screen" job at any element height.