返回作品集
FitRoom Experience — 健身房网站与会员平台

FitRoom Experience — 健身房网站与会员平台

FitRoom Experience 既需要一张对外的面孔,也需要支撑生意运转的软件,于是这个站点两者兼具。前台是一张双语单页——hero、十一项服务、实时周课表、关于区块与联系方式——外加一个会员页,承载着从经营者印刷价目表照搬来的二十种套餐与九项优惠。登录之后,会员无需自设密码即可注册,从可向前推进整整一个季度的课表中预订,课满时进入候补名单,设定一条会自我续期的固定每周预约,查看已付与欠款,并可导出或删除自己的数据。经营者拥有十七个后台界面:客户、套餐、课程类型、排程、停课、优惠、页面内容、会员卡、收款、欠款及其账龄、点名册、供门口平板使用的签到终端、带重发功能的邮件日志,以及统计——营收、上座率热力图、按课程族群的出勤、即将到期的会员卡与 CSV 导出。十九套双语邮件模板跑在内置的 PHPMailer 上,带重试退避。底层是纯 PHP 8.5 搭配 MySQL 的四十四张表,以希腊语为准语言:没有框架,没有 Composer,没有构建步骤。

技术栈

PHP 8.5 MySQL 9.5 Vanilla JS GSAP PHPMailer Stripe i18n (EL/EN) SEO

挑战

健身房课表不是日历。一节课有容量、有候补名单、有支付它的次数额度,还有可能取消它的停课安排,而经营者需要这一切都出现在她本就在用的那一块屏幕上。此外,旧网站上有 158 名会员,必须从第一天起就能登录。

解决方案

额度、预订与金钱是一个模型而非三个:取消一节课会连同它的账目一起带走,退款则会顺带完成作废。周期性预订的窗口由预订视野推导而来,而不是单独的一项设置,因此两者不会各走各的。旧密码以包装形式迁移而非明文存储,原有会员无需重置即可登录。希腊语为准语言,每一次客户搜索都会折叠重音与词尾 sigma,让一个名字无论怎么输入都能被找到。