引言
五一劳动节肯定是劳动最光荣了!节假日出去玩虽然时间多,但实际上大部分时间都花在了路上,甚至等你堵了一路到了景点,抬头看的是前人的腚,而回头碰的又是后人的脚,还不如在家劳动。
为了小朋友能参与到劳动最快乐中来,五一期间熊猫写了个小项目用来作为小朋友的奖励机制,用游戏化的方式来让小熊猫有参与感和成就感,顺带再设置一些奖励激励,项目熊猫也已经开源,感兴趣的可以去github搜索Panda-995/StarKids。
项目预览
因为是设计小朋友的项目所以我采用了双端路由,小朋友有小朋友自己的前端界面,而家长也有自己的后台管理界面,同时两者都是独立账号,也不能互相干扰对方的路由。
账号注册会让你选择是家长还是小朋友,选择好账号再选择对应的角色就可以登录。
首先看家长的后台管理界面。仪表盘能看到目前家庭下的小朋友、任务、待审核内容以及累计的积分情况,还会显示近期的任务和小朋友与她领养的宠物状态。
通知消息就不用说了,就是会显示需要家长审批的内容等通知。往下能看到家庭成员情况,初始是没有家庭的,需要创建,创建好之后小朋友就可以通过输入邀请码来加入指定的家庭。
任务管理中能看到任务列表,同时也可以将任务分配给指定的小朋友。在新建任务界面可以设置名称、图标、分类、类型以及获得积分等等,如果是日常任务那么每天都会存在,也可以设置挑战任务和一次性任务,同时任务可以选择是否由家长审核才算通过。
再往下是积分规则,这里可以选择开启周末双倍和生日三倍奖励,同时也可以设置积分的重置模式,支持月、年和学期,也可以选择不清零。
通过任务完成的积分就能在积分商城中兑换东西,积分商场支持多种类型的内容,例如玩具、零食、特权、体验(游乐场游玩之类的)、零花钱等等,可以设置对应的兑换积分、库存以及限购数量。
成就系统预设了一些成就,同时也可以创建新的成就,完成成就可以获得对应的积分奖励。
最后在统计分析中能看到近30天的数据情况,支持查看单个小朋友和全部小朋友。
接下来是小朋友的界面,小朋友的界面能看到对应的任务,在完成任务之后点击一下就行,如果是自动通过的就会自动获得,否则就会通知家长进行审批。
完成任务有了积分就能去积分商场兑换礼物了,积分兑换会消耗现有的积分,同时积分兑换会交由家长审批,审批通过才算兑换完成。
宠物界面则是养成行为,可以选择领养宠物,设置了多个宠物,每天可以进行互动,同时也可以通过完成成就或者任务解锁服装。
最后在首页能看到当天的情况和当前的积分数量,整个界面其实非常简单,毕竟熊猫家的小朋友也才4岁,过于复杂其实不方便理解。
项目部署
部署也并不难,Docker的部署需要用到postgres作为数据库,所以熊猫使用了compose,至于项目镜像已经构建好了,支持x86和arm双结构,可以根据系统选择对应的标签就行,x86为latest,arm就选arm。
services:
app:
image: ghcr.io/panda-995/starkids:${IMAGE_TAG:-latest}
container_name: starkids-app
restart: unless-stopped
ports:
- “3000:3000”
environment:
- NODE_ENV=production
- DATABASE_URL=postgresql://starkids:starkids@db:5432/starkids
- AUTH_SECRET=${AUTH_SECRET:-change-me-to-a-random-secret-in-production}
- AUTH_URL=${AUTH_URL:-http://localhost:3000}
- NEXT_PUBLIC_APP_URL=${NEXT_PUBLIC_APP_URL:-http://localhost:3000}
- EMAIL_SERVER_HOST=${EMAIL_SERVER_HOST:-smtp.resend.com}
- EMAIL_SERVER_PORT=${EMAIL_SERVER_PORT:-465}
- EMAIL_SERVER_USER=${EMAIL_SERVER_USER:-resend}
- EMAIL_SERVER_PASSWORD=${EMAIL_SERVER_PASSWORD:-}
- EMAIL_FROM=${EMAIL_FROM:-StarKids noreply@starkids.app}
depends_on:
db:
condition: service_healthy
networks:
- starkids-network
db:
image: postgres:17-alpine
container_name: starkids-db
restart: unless-stopped
environment:
- POSTGRES_USER=starkids
- POSTGRES_PASSWORD=starkids
- POSTGRES_DB=starkids
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- “5432:5432”
healthcheck:
test: [“CMD-SHELL”, “pg_isready -U starkids -d starkids”]
interval: 5s
timeout: 5s
retries: 5
networks:
- starkids-network
volumes:
pgdata:
driver: local
networks:
starkids-network:
driver: bridge
详细的内容可以在项目开源地址中去查看,这里熊猫就不多说了。
写在最后
整个项目大部分都是通过AI写的,只能说AI是真的好啊,得用!
项目设计代码量不算大,主要是人为的其实就是架构和双用户端的设计,其他都是AI生成了,总计代码量7500行,实际熊猫古法编程的就1000不到吧。
4 个帖子 - 3 位参与者