Jerome GaoFull Stack Engineer
全部项目独立产品

独立产品

RateEverything

用户端、管理端、Node.js 与 Python 服务共享 PostgreSQL 模型的跨媒体评分产品。

职责
独立 Full Stack Engineer 与产品负责人
时间
2025 年 2 月至今
状态
已上线

我从 Next.js 与 React 管理端开始,完成 NestJS、FastAPI、PostgreSQL、自动化测试和云部署的完整系统。

项目背景

RateEverything 从一个简单问题出发:电影、电视剧、音乐、书籍和播客为什么必须散落在不同的评分历史里?这个产品尝试把多个媒体类别放进同一账户和发现模型。

我的职责

这是我独立设计和开发的项目,包括 Next.js 用户端、React 管理后台、NestJS 产品 API、FastAPI 管理 API、共享 PostgreSQL Schema、测试、CI 和部署。

服务边界

NestJS 服务负责主要产品契约,并使用 Prisma 访问关系数据。FastAPI 服务通过 SQLModel 为管理工作流提供小而明确的 Python 边界。两个服务共享数据库,因此 Schema 变化和数据所有权必须清楚;只有当职责清晰度高于协调成本时,第二个服务才有意义。

质量与交付

Jest 覆盖服务逻辑,Cypress 覆盖关键浏览器路径。公开网站部署在 Vercel,rating.ospreypulse.com/api 下的请求被代理到 GCP Cloud Run 上的 NestJS API,PostgreSQL 独立托管。稳定公开路径避免把 Cloud Provider URL 暴露为客户端契约。

下一步加强方向

下一步是增加 Prisma 与 SQLModel 之间的 Schema Compatibility Check、更完整的审核 Audit Event,以及覆盖 Proxy 边界的 Contract Test。推荐功能成为主要卖点前,也需要先建立更清晰的推荐效果评估方法。

证据

全栈证据链

从客户端体验一直到生产运行的可见链路。

  1. 01用户端

    Next.js 评分体验

    响应式发现与评分流程使用 TypeScript、Zustand、明确加载状态和可索引路由。

  2. 02管理端

    React 运营后台

    独立 Vite 应用提供媒体数据与辅助信息的 CRUD 和审核工作流。

  3. 03Node API

    NestJS 产品服务

    鉴权 REST Module、校验与 Prisma 负责主要用户产品契约。

  4. 04Python API

    FastAPI 管理服务

    SQLModel 与类型化 Python Endpoint 支持对同一数据库的管理流程。

  5. 05数据

    共享 PostgreSQL 模型

    两个服务围绕同一关系 Schema 协作,不复制核心媒体领域数据。

  6. 06交付

    测试与多云部署

    Jest 和 Cypress 覆盖关键路径;前端运行于 Vercel,API 部署在 GCP Cloud Run。

架构

系统流程

让产品、数据和外部副作用保持清晰的系统边界。

  1. 01

    用户端与管理端

    Next.js 和 Vite/React 围绕相同媒体概念提供不同工作流。

  2. 02

    NestJS 与 FastAPI

    服务边界分别对应用户产品和管理职责。

  3. 03

    PostgreSQL

    Prisma 与 SQLModel 映射到同一持久关系事实来源。

  4. 04

    CI 与部署

    测试完成后,前端与 API 独立发布。

结果

交付结果

  • 上线真实可访问的跨媒体评分产品和管理工作流。
  • 用同一 PostgreSQL 领域展示 Node.js 与 Python 服务的实际拆分。
  • 通过 Vercel Proxy 将 Cloud Run API 保持在产品域名路径下。
联系

深入讨论这个项目

可以继续讨论技术取舍、实现边界,以及现在会如何改进。

邮件联系