2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00
2026-04-25 11:26:33 +08:00

Image Prompt Studio

一个基于 Next.js + SQLite 的图片生成应用,支持:

  • 用户登录
  • 管理员无限额
  • 普通用户额度控制
  • 管理页面设置默认额度和用户角色
  • gpt-image-2 图片生成
  • 图片落盘保存,并支持历史回看
  • PWA 安装支持
  • 图片生成成功后的系统通知
  • 苹果风格、同时兼顾性能的界面

技术栈

  • Next.js App Router
  • React
  • SQLite
  • better-sqlite3
  • bcryptjs

本地运行

  1. 准备环境变量
cp .env.example .env
  1. 填入真实 OPENAI_API_KEY

  2. 安装依赖并启动

npm install
npm run dev
  1. 打开
http://127.0.0.1:${PORT}

首次启动会自动创建 SQLite 文件,并按 .env 中的 ADMIN_USERNAME / ADMIN_PASSWORD 写入管理员账号。 生成成功后的图片默认会保存在 data/generated-imagesSQLite 只保存索引和元数据。 默认情况下,ADMIN_SYNC_ON_BOOT=true,每次启动都会把 .env 中的管理员用户名和密码同步到数据库里的该管理员账号。 npm run dev 会使用 Next.js 内建的环境变量加载;npm start 会读取项目根目录下的 .env / .env.localdocker compose 会使用 env_file 中指定的 .env。如果 shell 里已经设置了同名环境变量,则以 shell 为准。 修改 PORTADMIN_USERNAMEADMIN_PASSWORD 后,需要重启当前服务进程才会生效。

PWA 与通知

  • 应用已提供 manifest.webmanifest、Service Worker 和可安装图标资源。
  • 在支持 PWA 的浏览器中,进入“生成中心”后可以点击“安装应用”把站点安装成桌面应用。
  • 点击“开启通知”并授权后,当前页面调用 /api/generate 成功返回图片时,会触发系统通知。
  • 通知依赖浏览器的安全上下文,建议在 localhost127.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
No description provided
Readme 782 KiB
Languages
TypeScript 68%
CSS 15.9%
JavaScript 12.4%
HTML 3.2%
Dockerfile 0.5%