Skip to content

用 Codex 和 Claude Code 两天做一个 Next.js + Supabase 导航站:NavSphere 项目复盘

这两天我看了一个小而完整的项目:NavSphere

项目在线地址也已经有了:

https://nav.myls.top/

它不是那种只有一个首页截图能看的"演示型项目",而是一个已经具备完整使用链路的开发者导航站:

  • 前台导航首页
  • GitHub 登录
  • 后台管理
  • JSON 批量导入
  • Chrome 书签导入脚本
  • Supabase RLS 权限控制
  • 可直接接到 Vercel 部署

如果只看最终界面,会觉得这只是一个"收藏夹网站"。 但从工程角度看,它其实是一个很典型的 AI 时代小型全栈项目样本

需求不算大,但链路完整,足够检验 Codex 和 Claude Code 到底能不能把一个项目从想法快速推进到可部署状态。

这篇文章就从几个角度来复盘它:

  • 用到了哪些技术
  • 项目是怎么组织的
  • 实际怎么部署
  • 如果用 Codex 和 Claude Code 做,速度大概有多快
  • 人工出力主要还剩下什么

先用一句话概括:

NavSphere 是一个面向开发者和团队内部工具场景的导航站。

它不是单纯展示一堆链接,而是把"公开导航"和"个人私有导航"放在同一个系统里:

  • 未登录用户可以看到公开分类和公开链接
  • 登录用户可以看到自己的私有分类和私有链接
  • 后台可以维护分类、链接、排序和导入
  • 分类支持路径式命名,例如 研发 / AI工具

这类项目非常适合做成一个轻量化内部产品,或者作为个人工作台的入口层。


这个项目用了哪些技术

从仓库来看,NavSphere 的核心技术栈非常清晰:

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • Supabase Auth + Database
  • Vercel Analytics / Speed Insights

如果再细分一层,可以看到它是一个标准的 Next.js App Router + Supabase SSR 架构。

1. 前端层

项目使用的是 Next.js App Router。 路由结构很直观:

  • app/page.tsx 负责前台导航首页
  • app/login 负责登录页
  • app/admin 负责后台页面
  • app/auth/callback/route.ts 负责 GitHub OAuth 回调
  • app/api/importapp/api/ai-import 负责导入接口

前台导航页并不是一个纯静态页面,它会在服务端读取导航数据,然后交给客户端壳组件做交互。

这里有几个做得比较顺手的点:

  • useDeferredValue 和自定义 debounce 处理搜索
  • IntersectionObserver 跟踪当前可见分类
  • useTransition 处理后台跳转和搜索输入的过渡状态
  • router.prefetch('/admin') 提前预取后台页面

也就是说,这不是"能跑就行"的 React 页面,而是已经开始用 React 19 的交互能力去优化体验了。

2. 数据层

数据层是 Supabase PostgreSQL。

数据库里只有两张核心表:

  • categories
  • links

另外定义了一个枚举:

  • link_environment,值为 testprod

这个建模很克制,但已经够用:

  • 分类有名称、描述、排序、公开状态、创建者
  • 链接有名称、URL、环境、描述、图标、排序、公开状态、所属分类、创建者

整个 schema 里还有几个值得注意的细节:

  • 用触发器自动维护 updated_at
  • 给公开数据和个人数据分别建了索引
  • namedescription 建了 pg_trgm GIN 索引
  • 通过 (created_by, name)(created_by, category_id, name) 做唯一约束

这说明作者并不是只想把东西存进去,而是已经考虑到搜索、排序和多用户隔离这些真实使用问题。

3. 权限层

这个项目最像"正式产品"的一点,在于它不是前端自己判断权限,而是把权限下沉到了数据库层。

Supabase schema 里启用了 RLS,并且分别定义了:

  • 匿名用户只能读公开分类和公开链接
  • 已登录用户可以读公开数据和自己的私有数据
  • 插入、更新、删除只能操作自己的数据
  • 链接写入时还会检查所属分类是不是当前用户自己的分类

这一层很关键。

因为很多小项目在早期最容易偷懒的地方,就是权限只做在页面上,数据库其实没有真正拦住。 但 NavSphere 这套写法,已经是比较稳的做法了。

4. 认证层

认证采用的是:

Supabase Auth + GitHub OAuth

这套组合非常适合开发者工具项目。

原因也很简单:

  • 目标用户本来就有 GitHub 账号
  • 不需要自己维护密码体系
  • 登录链路短
  • 后续如果要和开发工具生态结合,也更自然

项目里当前只保留了 GitHub 登录方式,这其实是对的。

在这类小型项目里,过早支持邮箱、短信、多个 OAuth Provider,往往只会把复杂度抬高,但对早期价值没有明显帮助。

5. 运维辅助层

这个项目还有一个很实用的小设计:Chrome 书签导入脚本

仓库自带 scripts/export-chrome-bookmarks.mjs,可以把本地 Chrome 书签导出成项目可导入的 JSON 格式。

这件事看起来不大,但很有产品意识。

因为导航站最常见的问题不是"系统做不出来",而是:

第一批数据怎么进来。

如果每个人都要手动录入几十上百个链接,系统的可用性会下降很多。 而书签导入脚本一加,迁移成本马上就低了一截。


这个项目的结构为什么适合 AI 协作

NavSphere 很适合拿来说明一个问题:

不是所有项目都同样适合 AI 辅助开发。

它之所以适合,是因为它同时满足了几个条件:

  • 目录结构清晰
  • 模块职责分明
  • 技术栈主流
  • 依赖链不复杂
  • 数据模型简单但真实
  • 页面数量不多,但闭环完整

仓库的主结构大概是这样:

text
app/                    路由、页面、API、OAuth 回调
components/             前台和后台组件
lib/data/               导航查询、后台查询、导入逻辑
lib/supabase/           Supabase 客户端封装
data/                   导入示例数据
scripts/                Chrome 书签转换脚本
supabase/schema.sql     数据库结构与 RLS 策略

对 Codex 或 Claude Code 来说,这种项目有几个天然优势:

  • 很容易快速扫清全局上下文
  • 很容易定位修改点
  • 很容易做端到端的小闭环改动
  • 很容易把"页面、接口、数据库"串起来理解

换句话说,这不是那种需要先读三天历史包袱才能动手的项目。 AI 工具能直接进入高价值区。


它是怎么部署的

从仓库信息看,NavSphere 当前的部署思路很明确:

前端部署在 Vercel,数据和认证放在 Supabase。

当前线上访问地址是:

这是现在做小型 Next.js 全栈项目非常顺手的一套组合。

1. Vercel 部署前端

仓库里已经存在 .vercel/project.json,并且依赖中也接入了:

  • @vercel/analytics
  • @vercel/speed-insights

这基本说明项目已经按 Vercel 的方式在跑了,或者至少已经完成了绑定。

对 Next.js App Router 项目来说,Vercel 的好处非常直接:

  • 零配置支持 Next.js
  • Route Handler、SSR、静态资源都能自然托管
  • 预览部署方便
  • 和 GitHub 工作流贴合

2. Supabase 承担数据与登录

部署这个项目时,真正需要先准备好的其实不是 Vercel,而是 Supabase。

最小步骤大概是:

  1. 新建一个 Supabase 项目
  2. 在 SQL Editor 执行 supabase/schema.sql
  3. 在 Auth 里启用 GitHub Provider
  4. 配置 GitHub OAuth 回调地址
  5. 准备环境变量

项目当前需要的关键环境变量非常少:

env
NEXT_PUBLIC_SUPABASE_URL=...
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY=...

也就是说,它的部署门槛其实不高。

3. 一条比较实际的上线链路

如果我来部署这个项目,我会按这个顺序:

  1. 先把 Supabase 项目和 schema 跑起来
  2. 配 GitHub OAuth,确认本地登录回调正常
  3. 在本地导入一批样例数据
  4. 再把仓库接到 Vercel
  5. 在 Vercel 配同样的环境变量
  6. 把 GitHub OAuth 回调地址补上生产域名

这样做的原因是:

这个项目真正复杂的不是前端构建,而是"登录 + 数据权限 + 数据初始化"这三件事要一次打通。

前端页面本身反而是最好部署的部分。


用 Codex 和 Claude Code 做,这个项目到底有多快

这部分是我觉得最值得聊的。

从 Git 提交记录看,NavSphere 的时间线非常集中:

  • 首个提交:2026-04-07 16:22
  • 最新提交:2026-04-08 13:06
  • 14 次提交

如果只看活跃提交窗口,这个项目的主开发期基本就集中在两段时间里:

  • 4 月 7 日傍晚
  • 4 月 8 日上午到中午

而从代码变化量看,在首个提交之后又累计发生了:

  • 56 个文件变更
  • 6397 行新增
  • 757 行删除

这个规模说明它不是单纯改个 landing page,而是实打实把一个小型全栈产品骨架补全了。

我的判断:这是一个典型的"0.5 到 1 人日 AI 项目"

如果把 Git 时间线、项目范围和实现复杂度放在一起看,我会这样判断:

在 Codex + Claude Code 的帮助下,这个项目做到当前程度,大概率属于 0.5 到 1 人日可以完成的范围。

这里说的不是"上线运营级产品全部完成",而是:

  • 能跑
  • 能登
  • 能管
  • 能导
  • 能部署
  • 权限基本正确

这个版本已经具备了。

如果完全手写,时间大概率会拉长

如果换成传统纯手工开发,我对这个项目的估算会更接近:

  • 经验熟练的全栈开发者:2 到 4 人日
  • 如果还要一边查文档一边搭:可能更久

因为它虽然不大,但有几类事情其实都挺花时间:

  • Next.js App Router 路由和页面组织
  • Supabase SSR 客户端封装
  • GitHub OAuth 回调接通
  • RLS 策略写对
  • 后台管理页和导入流程串通
  • 数据导入格式和校验逻辑统一
  • 本地验证 + 部署验证

这些事情单个看都不大,但凑在一起很容易把开发时间拉长。

而 AI 工具最擅长的,就是把这些"中等复杂、模式清晰、重复度高"的工作一段段吞掉。

Codex 和 Claude Code 各自适合干什么

如果让我把这类项目拆成两种 AI 工具的优势,我会这样理解:

Codex 更适合:

  • 直接进仓库做结构化修改
  • 读现有代码后补齐缺口
  • 把页面、接口、数据层一起串起来改
  • 做验证、构建、查错、收尾

Claude Code 更适合:

  • 快速展开方案
  • 推导页面和模块结构
  • 起草一版较完整的实现
  • 做较长链路的代码生成和说明

当然,现实里它们往往不是二选一,而是接力关系:

Claude Code 更像高吞吐的第一轮实现,Codex 更像强执行和强收口的第二轮工程化推进。

这也是为什么现在很多项目做起来,速度会明显比过去快。


人工出力还剩多少

这也是很多人最关心的问题。

我的答案是:

人工出力并没有消失,但已经从"大量敲代码"转移成了"做决策、给约束、验结果"。

如果以 NavSphere 这种项目为例,我会把人工出力大致理解成下面几个部分。

1. 人来定义边界

比如这些事,仍然非常需要人来定:

  • 这个项目到底是公开导航站,还是带私有空间的导航站
  • 登录方式为什么只保留 GitHub
  • 分类是否支持路径式命名
  • 数据导入到底采用什么 JSON 结构
  • 后台要做到什么程度算够用

这些不是代码生成问题,而是产品决策问题。

2. 人来确认权限和安全

AI 可以写出 RLS 策略,但最后最该负责的人还是开发者自己。

尤其是像这种涉及:

  • 匿名可读
  • 登录后可读私有数据
  • 用户只能写自己的分类和链接

这种边界,一定要人工做最终确认。

3. 人来做验收

真正影响项目质量的,往往是这些最后一公里:

  • 登录回调是不是正常
  • 导入的数据有没有脏格式
  • 排序是不是符合预期
  • 空分类到底显不显示
  • 生产环境回调地址有没有漏配

这些检查 AI 能辅助,但很难完全替代人工判断。

4. 一个比较现实的占比判断

如果只是问"代码体力劳动"的占比,我会觉得在这类项目里,AI 已经可以吃掉大约 60% 到 80%

但如果问的是整个项目交付过程里的总出力,我的判断会更保守一点:

人工仍然要承担大约 20% 到 40% 的关键工作量。

这些工作主要不是敲代码,而是:

  • 需求取舍
  • 环境配置
  • 数据准备
  • 权限确认
  • 验收和收口

所以今天真正高效的开发方式,不是"AI 全做,人什么都不管",而是:

人负责方向和边界,AI 负责高密度执行。


我觉得这个项目最有代表性的地方

NavSphere 这个项目有代表性,不是因为它多复杂,而是因为它刚好落在一个很有现实意义的区间里:

  • 足够小,个人开发者能在短时间推进
  • 足够完整,不是只能截图展示
  • 足够真实,已经有权限、导入、后台、部署这些实际问题
  • 足够标准,AI 工具很容易介入

这类项目特别适合现在的 AI 编程工具。

因为它既不是过于简单的 demo,也不是充满历史包袱的大型遗留系统。 它属于那种:

AI 能真正把开发速度提升到肉眼可见程度的黄金区间。


最后

如果只看结果,NavSphere 像是一个"普通的导航站项目"。

但如果把它放到开发流程里看,它其实更像一个信号:

现在做一个有登录、有数据库、有后台、有导入、有部署链路的小型全栈应用,真的已经进入了"周末可做完"的阶段。

前提不是 AI 会魔法,而是你要选对项目形态:

  • 技术栈主流
  • 结构清晰
  • 业务边界明确
  • 能快速验证

当这些条件满足时,Codex 和 Claude Code 这样的工具,确实能把项目推进速度提升到过去很难想象的程度。

而人最重要的价值,也会越来越集中在那几件事上:

  • 想清楚做什么
  • 判断什么是对的
  • 决定什么先做、什么不做
  • 把项目收口到可交付状态

这可能才是 AI 开发真正开始成熟的标志。

Last updated: