Image Prompt Studio
一个基于 Next.js + SQLite 的图片生成应用,支持:
- 用户登录
- 管理员无限额
- 普通用户额度控制
- 管理页面设置默认额度和用户角色
gpt-image-2图片生成- 图片落盘保存,并支持历史回看
- PWA 安装支持
- 图片生成成功后的系统通知
- 苹果风格、同时兼顾性能的界面
技术栈
- Next.js App Router
- React
- SQLite
better-sqlite3bcryptjs
本地运行
- 准备环境变量
cp .env.example .env
-
填入真实
OPENAI_API_KEY -
安装依赖并启动
npm install
npm run dev
- 打开
http://127.0.0.1:${PORT}
首次启动会自动创建 SQLite 文件,并按 .env 中的 ADMIN_USERNAME / ADMIN_PASSWORD 写入管理员账号。
生成成功后的图片默认会保存在 data/generated-images,SQLite 只保存索引和元数据。
默认情况下,ADMIN_SYNC_ON_BOOT=true,每次启动都会把 .env 中的管理员用户名和密码同步到数据库里的该管理员账号。
npm run dev 会使用 Next.js 内建的环境变量加载;npm start 会读取项目根目录下的 .env / .env.local;docker compose 会使用 env_file 中指定的 .env。如果 shell 里已经设置了同名环境变量,则以 shell 为准。
修改 PORT、ADMIN_USERNAME、ADMIN_PASSWORD 后,需要重启当前服务进程才会生效。
PWA 与通知
- 应用已提供
manifest.webmanifest、Service Worker 和可安装图标资源。 - 在支持 PWA 的浏览器中,进入“生成中心”后可以点击“安装应用”把站点安装成桌面应用。
- 点击“开启通知”并授权后,当前页面调用
/api/generate成功返回图片时,会触发系统通知。 - 通知依赖浏览器的安全上下文,建议在
localhost、127.0.0.1或 HTTPS 环境下测试。 - 当前通知是“前端请求成功后触发”的模式,所以生成任务发起后页面需要保持打开;如果页面被关闭,请求本身也会终止。
Docker
docker compose up --build -d
默认映射到:
http://127.0.0.1:${PORT}
如果想换宿主机端口,可以这样:
PORT=3876 docker compose up --build -d
如果你希望通过 npm scripts 调用 Docker Compose,而不是继续往 package.json 里加很多 docker:* 命令,可以使用这个通用入口:
npm run dc -- up --build -d
常用示例:
npm run dc -- ps
npm run dc -- logs -f image-prompt-studio
npm run dc -- down
npm run dc -- down --rmi local
npm run dc -- down --rmi all -v
管理员密码重置
如果你修改了 .env 中的 ADMIN_USERNAME / ADMIN_PASSWORD,可以直接重启服务。
如果你想手动立即同步一次,也可以运行:
npm run admin:reset
默认规则
admin:无限额user:按月额度限制- 管理员可在后台修改默认月额度
- 管理员可创建用户、改角色、改用户额度、禁用用户、重置密码
测试
npm test
备注
- 当前实现优先稳定和交付速度,不引入额外 ORM。
- UI 保持苹果风格的浅色层级、圆角和留白,但去掉了大面积毛玻璃和重阴影,减少滚动卡顿。
Description
Languages
TypeScript
68%
CSS
15.9%
JavaScript
12.4%
HTML
3.2%
Dockerfile
0.5%