main
Build and push backend image / backend-image (push) Successful in 1m33s
Smile First 口腔护理预约小程序
Smile First 是一个微信小程序预约 MVP,覆盖首页、选择项目、选择日期与时间、确认预约、预约成功、我的预约,以及 Go 后端 API。
技术栈
- 小程序:原生 WXML / WXSS / JS
- 后端:Go、Fiber、sqlc、Cobra、logrus
- 数据库:SQLite
- 部署:Docker / docker compose
本地运行后端
cp .env.example .env
# 本地开发可使用 GUAHAO_ADMIN_AUTH_MODE=none 直接进入后台
# 生产环境建议使用 GUAHAO_ADMIN_AUTH_MODE=oidc 并填写 OIDC 配置
# 体验版获取手机号还需要填写 GUAHAO_WECHAT_APPID / GUAHAO_WECHAT_SECRET
cd backend
go run ./cmd/smilefirst serve
默认监听 :9800,启动时会自动应用 schema 并插入默认项目、排期与时段。
管理后台入口:
- 登录页:
http://127.0.0.1:9800/admin/login - 默认页:
/admin/price-inquiries - 价格咨询派单:
/admin/price-inquiries,展示授权手机号提交的地区、咨询项目、创建时间和更新时间
后台登录模式、OIDC 配置和微信小程序凭证从本地 .env 或运行环境变量读取,真实 .env 不提交到代码库:
GUAHAO_ADMIN_AUTH_MODE=none
GUAHAO_ADMIN_SESSION_SECRET=
GUAHAO_ADMIN_PASSWORD_CHANGE_REDIRECT_URL=https://gh.yqbmb.com/admin/price-inquiries
GUAHAO_OIDC_ISSUER=https://auth.yqbmb.com/oidc
GUAHAO_OIDC_CLIENT_ID=
GUAHAO_OIDC_CLIENT_SECRET=
GUAHAO_OIDC_REDIRECT_URI=http://127.0.0.1:9800/admin/oidc/callback
GUAHAO_OIDC_SCOPES=openid profile email phone
GUAHAO_WECHAT_APPID=
GUAHAO_WECHAT_SECRET=
GUAHAO_UPLOAD_DIR=data/uploads
GUAHAO_ADMIN_AUTH_MODE=none 会跳过后台登录,仅建议本地开发使用;oidc 会通过 Logto/OIDC 授权登录,回调地址为 /admin/oidc/callback,登录后后台右上角展示授权用户姓名和修改密码入口。修改密码入口会跳转到 Logto Account Center 的 /account/password,完成后返回 GUAHAO_ADMIN_PASSWORD_CHANGE_REDIRECT_URL。
后台上传的首页图片和项目图片会保存到 GUAHAO_UPLOAD_DIR,并通过 /uploads/... 访问。
Docker 部署
docker compose up --build
接口健康检查:
curl http://127.0.0.1:9800/healthz
小程序开发
用微信开发者工具打开 uni-guahao/ 目录。小程序请求地址由 uni-guahao/utils/api.uts 自动选择,不需要发布前手动改 URL:
- 微信开发版
develop:http://localhost:9800 - 微信体验版
trial/ 正式版release:https://gh.yqbmb.com
线上域名需要在微信公众平台配置为 request 合法域名;本地开发时 manifest.json 已关闭开发域名校验。
首页不配置底部 tabBar。用户可直接选择项目和预约时段;在确认预约时授权手机号,授权成功后自动提交预约。确认页可通过半屏底部弹层查看《预约服务条款》。
关键目录
uni-guahao/:uni-app x 微信小程序前端backend/:Go API 服务backend/migrations/schema.sql:SQLite schemabackend/queries/:sqlc 查询uni-guahao/static/:小程序静态资源docs/design-elements.md:设计元素、裁切坐标和 token
Languages
Go
87.1%
HTML
10%
SCSS
1.4%
Makefile
0.8%
Dockerfile
0.7%