从 0 到 1 设计和开发一个普拉提约课 APP
经历 2 个月左右的时间,个人独立开发了一款普拉提约课 APP。以前听媳妇说想要将来开一家普拉提健身馆,在简单了解需求之后,决定从 0 开始设计和开发,由于之前个人是主要偏向于后端架构以及运维,前端知识完全是一个小白,需要从 0 开始学习,所以 APP 决定暂时先使用微信小程序。
先直接贴上微信小程序码(因为是主体是个人,仅用于个人学习和测试):
业务方案
在进行 1 对 1 的需求澄清之后,使用 Keynote 设计了一下功能全景和关键角色的业务流程。
应用分为:会员端和管理端,用户分为:会员、教练和运营人员。
会员可以直接静默登录到小程序端,可以切换不同的场地,选择教练发起预约以及预约管理。
教练和运营人员通过账号和密码登录到管理端,可以进行场馆管理、公告管理、教练管理、课程管理、预约管理、用户管理、系统管理等功能。
架构设计
1️⃣ 应用架构设计:向上承接业务需求,向下指导技术方案落地。
因为是个人项目,中间件和云服务尽量简单化,但是架构设计做好高可扩展性,后端分层架构虽然采用 DDD 的模式,但需要兼顾高效的 CRUD 操作。可以先参考下我之前的文章:
在以上文章内容中,做了调整,增加了 CQRS。
管理端和微信小程序的分层架构尽量保持一致,相似代码尽量复用,减少开发时间,提升效率。
2️⃣ 技术选型:因为是个人项目,没有历史包袱和复杂业务逻辑,技术选型都会尽量采用最新的框架进行设计和开发。
3️⃣ 核心数据模型设计:提前设计好项目中所需要的数据模型,梳理其中的依赖关系和数量关系。这一步其实也是非常重要,尤其是复杂项目,能否提前梳理出来关键数据模型,以及实时进行更新,能够高效的指导项目顺利的开展,避免出现大量的返工情况。
4️⃣ 工作量评估:接下来就是对项目进行工作量评估了,我将不同端进行拆分,主要分为:管理端、小程序端、非功能需求,按照之前项目经验进行评估,再考虑到个人能力进行了大量缩减。
因为没有使用类似 Jira、Trello 等看板工具进行跟踪,但是简单记录下每日的核心工作,便于后续分析和改进。
在完成以上四步之后,就开始加速撸代码了,其中管理端和小程序端的开发花的时间最多了,一是之前没有相关技术知识积累,需要先抽出时间进行学习和整理,二是没有项目经验,很多坑要一个个躺过去。虽然上了各种 AI 进行辅助,但是有些具体的坑,解决起来还是比较费劲。
功能展示
管理端
主要功能有:
封装脚手架,支持 React、Vite、AntDesign 和 TypeScript
封装 CRUD 组件,支持分页、筛选、排序等功能
封装 API 请求工具类
支持 Light / Dark 模式切换
支持 i18n 多语言的切换
通用化列表、详情、编辑表单等通用页面和操作按钮
用户注册与登录,修改密码、退出登录,权限控制资源访问等
核心功能模块支持:场馆管理、教练管理、课程管理等
复杂的排课周视图
接下来一些界面的展示:
简单的视频演示:参考微信公众号文章
小程序端
可以直接上小程序进行体验,已经开放了权限,游客也能直接使用。因为主体是个人的原因且没有加上隐私协议,很多功能开发完成后无法上线,审核不过,都打回 4、5 次了。
小程序首页图:
后端
个人主要是后端方向,这次所有的都采用最新的框架,花费时间最多的反而是权限认证和授权,需要满足多端,灵活的权限控制花费了不少时间,最难受的是 Spring Secury 真的是年年变,升级到最新的版本又得重新看文档学习和开发。感觉个人项目完全没有必要使用它,带来了极大的复杂性,后续项目想要考虑下 SA-Token 或者自建轻量化 Filter 校验。如果想要了解 Spring Security 原理的可以参考我之前的文章:https://flyeric.top/archives/spring-security-jwt-frontend-separation-architecture 。
本地调试离不开中间件,支持兼容 H2、MariaDB、MySQL 等多种数据,生产使用 MySQL,本地调试使用 MariaDB 或 H2,非常的快速,极大的提高了本地调试的效率。
运维和发布
这块也很关键,如果是个人项目的不需要整太复杂的集群项目,类似:K8S 之类的,节约成本先直接上 Docker 运行。简单的资源列表如下:
云服务 + 公网 IP
域名(Optional):国内最好进行域名备案和公安备案
免费的 SSL:使用 Let's Encryptd 即可,白嫖还是到期自动续
MySQL:可以购买云服务,我先直接在云服务器上部署,通过公网 IP 进行暴露
Nginx:对服务器进行反向代理,管理好自己服务器的不同端口对应的项目
Docker
日志平台
小程序审核被驳回了 4、5次了,后面又加了很多代码逻辑进行功能的隐藏和文本替换(有些恶心人了)。很多规则在审核之前最好看看官方的文档,可以参考:
每次发起审核的时候,腾讯会对你的服务器进行安全攻击,同时会有大量的请求打到服务器,不要慌,不是黑客攻击你,如下图:
小结
全栈确实是一个不错的选择,但是学习成本确实不小,后续会尝试一下 Rust 语言 和 IOS 平台,然后继续深入学习 AI。当你能够高效完成一样东西的时候,很多东西能够想成框架、模块化,慢慢的 AI 它就能完成了,也许不久的将来,AI 会替代你。
欢迎关注我的公众号“Eric技术圈”,原创技术文章第一时间推送。