Ctrl K
ComunidadGuías…

PROJECT_STRUCTURE.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# 改造后的项目目录结构

```
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)、所有客户端同步逻辑 |