|
|
||
|---|---|---|
| prisma | ||
| public | ||
| src | ||
| .dockerignore | ||
| .env.local.example | ||
| .eslintrc.json | ||
| .gitignore | ||
| Dockerfile | ||
| README.md | ||
| docker-compose.yml | ||
| next.config.mjs | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
README.md
PaperLine
RESET 小组论文投稿与状态跟踪系统。
项目简介
PaperLine 是面向 RESET 研究小组的论文投稿全生命周期管理工具,用于跟踪每篇论文从计划、写作、投稿、审稿、Rebuttal、录用到发表的完整流程,并提供会议截稿提醒与小组成员管理。
主要功能:
- 投稿看板:按状态(计划中 / 写作中 / 已投稿 / 审稿中 / Rebuttal / 已录用 / 被拒 / 已发表)分组展示所有投稿计划,支持筛选与新增
- 论文详情:记录标题、目标会议/期刊、CCF 等级、状态、Deadline、Overleaf 链接、DOI、发表链接、作者、备注,状态变更自动记录历史
- 截稿列表:展示重要会议的摘要截止、全文截止与倒计时;管理员可新增 / 编辑 / 删除会议记录,普通成员只读
- 已发表论文:按年份筛选已发表论文列表,展示 DOI 与原文链接
- 成员管理:管理员可新增 / 编辑 / 删除成员、审核注册申请;新用户注册后需管理员审核通过才能登录
- 权限控制:基于 NextAuth 的登录鉴权,管理员与普通成员权限分离
- PWA 支持:可添加到手机主屏幕当 App 使用
技术栈
- Next.js 14(App Router)
- React 18 + TypeScript
- Tailwind CSS
- Prisma + SQLite
- NextAuth.js(Credentials Provider)
- Docker
本地开发
# 安装依赖
npm install
# 初始化数据库(首次运行)
npx prisma migrate dev
npx prisma db seed
# 启动开发服务器
npm run dev
访问 http://localhost:3000/paperline/login。
默认管理员账号:管理员 / admin123。
生产构建
npm run build
npm start
Docker 部署
docker compose up -d --build
默认端口为 1443,应用路径为 /paperline。数据库文件持久化在 Docker volume db-data 中,容器启动时会自动执行 prisma migrate deploy 与 seed。
环境变量
| 变量 | 说明 |
|---|---|
DATABASE_URL |
SQLite 数据库路径,如 file:./dev.db |
NEXTAUTH_SECRET |
NextAuth 加密密钥(生产环境请使用随机字符串) |
NEXTAUTH_URL |
部署后的完整 URL(含 /paperline) |
NEXT_PUBLIC_BASE_PATH |
应用基础路径,默认 /paperline |
目录结构
.
├── prisma/
│ ├── schema.prisma # 数据模型(User / Paper / Conference 等)
│ ├── seed.ts # 初始数据(管理员 + 会议)
│ └── migrations/ # 数据库迁移
├── src/
│ ├── app/
│ │ ├── api/ # 后端 API 路由
│ │ │ ├── auth/ # NextAuth 认证
│ │ │ ├── deadlines/ # 会议截稿 CRUD(管理员可写)
│ │ │ ├── members/ # 成员管理(管理员可写)
│ │ │ ├── papers/ # 论文 CRUD + 状态变更
│ │ │ └── register/ # 用户注册
│ │ ├── deadlines/ # 截稿列表页
│ │ ├── login/ # 登录页
│ │ ├── members/ # 成员管理页
│ │ ├── papers/ # 论文详情 / 新建页
│ │ ├── published/ # 已发表论文页
│ │ ├── register/ # 注册页
│ │ ├── settings/ # 系统设置(管理员)
│ │ ├── layout.tsx
│ │ └── page.tsx # 投稿看板首页
│ ├── components/ # 公共组件(Navbar / PaperCard 等)
│ ├── lib/ # 工具(auth / prisma / guards / constants)
│ ├── middleware.ts # 路由鉴权中间件
│ └── types/
├── Dockerfile
├── docker-compose.yml
└── package.json
数据模型
- User:用户(管理员 / 成员 / 待审核),含姓名、邮箱、密码哈希、角色、年级、入学年份、研究方向
- Paper:论文投稿计划,含标题、目标会议、CCF 等级、状态、Deadline、Overleaf/DOI/发表链接、作者关联
- PaperAuthor:论文与作者的多对多关系
- StatusHistory:论文状态变更历史
- Conference:会议截稿信息,含摘要截止、全文截止、会议日期、CCF 等级