PROJECT_STRUCTURE.md
Rama main · réplica de lectura del repositorio original.
# 改造后的项目目录结构
```
readest-lite/
├── README.md # 项目说明
├── DEPLOY.md # 部署与验证文档
├── FRONTEND_CHANGES.md # 前端改造清单(精确到行)
├── Dockerfile # 多阶段构建
├── docker-compose.yml # 单容器编排
├── .env.example # 环境变量样例
│
├── prisma/
│ └── schema.prisma # 14 张表完全对齐原 Supabase schema
│
├── docker/
│ └── entrypoint.sh # 启动脚本:db push + init admin + next start
│
└── apps/
└── readest-app/
├── scripts/
│ └── init-admin.ts # 启动时创建管理员账号
│
└── src/
├── utils/ # 【新增/替换】本地工具层
│ ├── db.ts # Prisma 客户端单例(替代 supabase.ts)
│ ├── localAuth.ts # JWT 签发/校验 + 邮箱密码登录 + 管理员初始化
│ ├── localStorage.ts # 本地文件系统 + HMAC 签名 URL
│ ├── crdt.ts # CRDT 合并函数(替代 Postgres RPC)
│ ├── supabase.ts # 【替换】伪 supabase-js 客户端(指向本地 /auth/v1/*)
│ ├── access.ts # 【替换】validateUserAndToken + 无限配额
│ ├── object.ts # 【替换】统一指向 localStorage
│ └── ... (其他工具原样保留)
│
├── app/
│ └── api/
│ ├── auth/ # 【新增】Supabase Auth 兼容层
│ │ └── [...path]/route.ts # /auth/v1/{token,user,signup,magiclink,...}
│ ├── share/ # 【替换】share 路由全部改用 prisma
│ │ ├── create/route.ts
│ │ ├── list/route.ts
│ │ └── [token]/
│ │ ├── route.ts
│ │ ├── cover/route.ts
│ │ ├── download/route.ts
│ │ ├── download/confirm/route.ts
│ │ ├── import/route.ts
│ │ ├── revoke/route.ts
│ │ └── og.png/{route.ts,render.tsx}
│ ├── ai/ # 【保留】透传,无改动
│ ├── tts/ # 【保留】透传
│ ├── metadata/ # 【保留】透传
│ ├── opds/ # 【保留】透传
│ ├── hardcover/ # 【保留】透传
│ # ── 已删除 ──
│ # stripe/{check,checkout,plans,portal,webhook}
│ # apple/iap-verify, google/iap-verify
│
├── pages/api/ # Pages Router 路由
│ ├── sync.ts # 【替换】主同步 API
│ ├── sync/
│ │ ├── replicas.ts # 【替换】CRDT 副本同步
│ │ └── replica-keys.ts # 【替换】副本加密盐
│ ├── storage/
│ │ ├── upload.ts # 【替换】
│ │ ├── download.ts # 【替换】
│ │ ├── list.ts # 【替换】
│ │ ├── delete.ts # 【替换】
│ │ ├── purge.ts # 【替换】
│ │ ├── stats.ts # 【替换】
│ │ ├── _put.ts # 【新增】内部 PUT 端点
│ │ └── _get.ts # 【新增】内部 GET 端点(支持 Range)
│ ├── send/ # 【替换】全部
│ │ ├── address.ts
│ │ ├── senders.ts
│ │ ├── fetch-url.ts
│ │ └── inbox/
│ │ ├── file.ts
│ │ ├── claim.ts
│ │ └── [id]/
│ │ ├── payload.ts
│ │ └── transition.ts
│ ├── user/delete.ts # 【替换】禁用删除(保护管理员)
│ ├── deepl/translate.ts # 【替换】用量统计走 SQLite
│ └── kosync.ts # 【保留】透传 KOReader 代理
│
├── libs/
│ ├── shareServer.ts # 【替换】supabase → prisma
│ ├── sync.ts # 【保留】客户端 SyncClient
│ ├── replicaSyncServer.ts # 【保留】校验逻辑
│ ├── replicaSchemas.ts # 【保留】zod schema
│ ├── replicaSyncClient.ts # 【保留】
│ ├── share.ts # 【保留】客户端 share API
│ # ── 已删除 ──
│ # payment/ 整个目录
│
├── context/AuthContext.tsx # 【保留】supabase-js 已替换为本地实现
├── app/auth/page.tsx # 【替换】简化为邮箱密码登录
├── app/user/ # 【删除 Pro 组件】详见 FRONTEND_CHANGES.md
├── services/constants.ts # 【修改】配额常量改为无限
├── hooks/useQuotaStats.ts # 【替换】返回无限配额
└── ... (其他全部原样保留)
```
## 关键改动统计
| 类别 | 数量 | 说明 |
|---|---|---|
| 新增文件 | 11 | db.ts / localAuth.ts / localStorage.ts / crdt.ts / auth/[...path]/route.ts / storage/_put.ts / storage/_get.ts / scripts/init-admin.ts / Dockerfile / docker-compose.yml / .env.example |
| 替换文件 | 22 | supabase.ts / access.ts / object.ts / sync.ts / sync/replicas.ts / sync/replica-keys.ts / 6 个 storage 路由 / 8 个 share 路由 / shareServer.ts / send/* / user/delete.ts / deepl/translate.ts / useQuotaStats.ts / constants.ts / auth/page.tsx |
| 删除文件 | 17 | 5 个 stripe 路由 + 2 个 IAP 路由 + 7 个 Pro 组件 + plan.ts + payment/ 目录 + types/payment.ts |
| 保留文件 | 1000+ | 阅读器内核、foliate-js、Tauri 壳、所有 UI 组件(除 Pro)、所有客户端同步逻辑 |