feat: 完整 MVP — 剁手小黑屋反冲动消费 Web App

- 数据层: Prisma 7 + SQLite (better-sqlite3 adapter), Item 模型
- API: POST/GET/PATCH /api/items, 商品 CRUD 与状态流转
- 关押表单: 图片拖拽上传 + Canvas 压缩, Base64 存储
- 首页看守所: 72h 倒计时 Hook, 省钱看板, 冷却/释放卡片交互
- PWA: manifest.ts, apple-icon, viewport 沉浸配置, iOS 引导组件
- 部署: Dockerfile 多阶段构建, docker-compose, Jenkinsfile CI/CD
- 图标: 全套专属像素风锁头+购物车图标 (favicon/96/180/192/512/OG)
This commit is contained in:
2026-02-25 18:14:38 +08:00
committed by 田东生
parent 97d5eb72ba
commit 5bf98753f1
37 changed files with 9124 additions and 79 deletions
Vendored
+53
View File
@@ -0,0 +1,53 @@
pipeline {
agent any
environment {
APP_NAME = 'impulse-jail'
}
triggers {
GenericTrigger(token: 'impulse-jail-deploy')
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build Docker Image') {
steps {
sh "docker build -t ${APP_NAME}:${BUILD_NUMBER} -t ${APP_NAME}:latest ."
}
}
stage('Deploy') {
steps {
sh """
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true
mkdir -p /data/${APP_NAME}
chown 1001:1001 /data/${APP_NAME}
docker run -d \
--name ${APP_NAME} \
--network nginx \
-p 3001:3000 \
-v /data/${APP_NAME}:/app/data \
-e DATABASE_URL=file:/app/data/prod.db \
--restart unless-stopped \
${APP_NAME}:latest
"""
}
}
}
post {
success {
echo "Deployed ${APP_NAME} build #${BUILD_NUMBER} successfully"
}
failure {
echo "Build #${BUILD_NUMBER} failed"
}
}
}