几何舞面向的是线下街机音游俱乐部这一细分场景,服务 beatmania IIDX、maimai DX 等音游玩家,同时经营日式麻将桌台。这类门店的经营逻辑远比普通收银系统复杂:机台要按时计费、支持包场预约与机台并发调度、会员需扫码签到/离场联动门禁、电费成本要按电表分摊、玩家之间还有代打(谱面)、麻将对局与赛季排行等衍生需求。
传统收银或预约工具无法覆盖「按机台、按时段、含欠费惩罚与优惠档」的计费模型,也缺乏与智能硬件的整合——门禁设备、Home Assistant 实体、智能电表、智能开关需要统一在一个系统里联动控制。同时门店经营还涉及余额充值(支付宝)、工单客服、财务成本台账、商品与兑换码、公告通知等完整闭环。该项目正是把这一整套线下经营流程数字化:从玩家扫码入场、计费结算、充值支付、包场申请,到员工侧的营收看板、成本台账、门禁与电力管理,形成一套专为音游俱乐部打造的经营管理平台。
功能分用户侧与管理侧两套视角。
用户侧(/dashboard)覆盖玩家日常:QR 扫码签到/离场、按时计费会话与消费记录、余额充值(支付宝收款码/网关下单)、包场预约申请与场地邀请、麻将桌台/对局/排行/个人档案、工单(ticket)提交与在线聊天、谱面文件上传、maimai DX 谱面查看器(chartViewer,含 webgl)、机器信息与评分、首页公告与弹窗。
管理后台(/manage)面向员工:营收趋势与签到热力图、财务成本台账与交易批量导入、门禁设备与 Home Assistant 开门控制、电表设备分组与智能开关、包场的机器/定价/并发规则配置、用户与卡片管理、赠送余额与每日上限惩罚、公告/活动/商品/兑换码、麻将赛季与桌台、IIDX 实时直播联动、数据快照备份与 SQLite→Postgres 迁移等。
此外还有机器端 Kiosk 视图(/m/[machineId])、独立 WebSocket 聊天服务、NapCat(QQ)与 Resend(邮件)通知、以及面向外部门禁设备的 Bearer Token API。
geodance-web 采用 Next.js 16(App Router) + React 19 + Prisma 6 + PostgreSQL + Tailwind v4 + Heroui。架构上严格分 UI / API / Service / 数据 四层,依赖方向只能自上而下,由 eslint no-restricted-imports 规则和 tests/architecture/ 结构测试机械强制——这是参照 OpenAI 的「机器强制边界、人在边界内自由实现」思路。约 188 个 API 路由、130 个 lib/ 业务模块按文件名前缀分组(billing-、recharge-、mahjong-、private-booking- 等)。数据层以 lib/prisma.ts 为唯一入口,schema 约 1340 行、仅新增 migration;金额计算严禁浮点,统一整数分或 Prisma Decimal。另有边缘中间件鉴权、支付宝支付网关、MinIO 对象存储、WebSocket 聊天服务(端口 12340)与 IIDX 实时 WS 客户端。CI 并行跑 lint/typecheck/test。
geodance-app 是 Flutter 客户端,复用同一套 Next.js API,通过 GEODANCE_API_BASE_URL 指向后端;按 features/auth|dashboard|manage|mahjong 组织,加 core/ 网络、主题、路由层,支持 Web/Android/iOS/桌面。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论