2026-09-23·by Sijie Wang#node#project#youteacher#recruitment

youteacher

YouTeacher 是一个面向 ESL 市场的 B2B 招聘平台——它把(母语或有资质的)英语教师,和在中国想招他们的学校对接起来。

市场的两端各有诉求。一端是想去海外任教的老师:建档、浏览职位、投递。另一端是要招人的学校和中介:搜索人才、发布职位、处理申请。YouTeacher 是居中的那一层,让两端彼此可被发现——职位数据流入(一部分是从现有招聘站抓取、再用 AI 解析而来),教师档案被做成可检索,两端各自拿到贴合自己需求的工具。

它以独立微服务的 monorepo 形态构建,每个服务一个 git 仓库,与合伙人 Pete 一起开发。目前尚未公开——各部分完成度不一,有的已在跑,有的还在补全。

架构

整体是刻意的「一个关注点一个服务」,而不是单体:

  • 前端是 Next.js 15 / React 19 / TypeScript,按 DDD 分层(domain、application、infrastructure、features)。
  • 后端共用一套模式:HTTP 用 Fastify,存储用 Prisma + PostgreSQL。每个后端服务只拥有一个 URL 前缀(/auth/jobs/profile/talents/content/admin),绝不越界。
  • nginx 网关统一在最前面,按前缀路由;服务间调用走稳定的公网 URL,而不是易失效的内部 hostname。
  • Meilisearch 支撑两个搜索密集的面(职位与人才)。
  • 认证分两层——一层是服务间的签名凭据,另一层是独立的用户会话——所以一个端点可以同时要求「是可信服务在调」和「背后有已登录用户」。更强的二次因子(TOTP、WebAuthn)和 OAuth 叠在其上。
  • 部署托管在 Coolify 上,用环境分支(dev / test / stage / prod)在推送时触发部署;全程 Docker。

开发期,每个真实服务还各有一个mock 替身供前端对接,另有一套专门的集成测试台,通过网关端到端地驱动真实服务。

组成部分

以下每一个都是独立仓库,各自会有自己的子节点。

  • web ——Next.js 前端;老师和学校真正用的那个应用。
  • auth ——认证服务:会话、服务凭据、TOTP、WebAuthn、OAuth。
  • profile ——教师档案;平台上数据最丰富的一面。
  • talent ——人才搜索;学校端、由 Meilisearch 支撑的教师发现。
  • job ——职位发布与申请;同样由 Meilisearch 支撑。
  • job_scrapers ——从多个外部招聘站抓取职位,用 AI 解析,存入 PostgreSQL,喂给 job 服务。
  • content ——CMS 风格的服务:文章、分类、媒体。
  • admin ——运营平台用的内部后台服务。
  • landing ——独立的营销落地页站点。
  • discord ——Discord 集成微服务(社区 + 通知)。
  • store ——基于 WordPress 的商店(Astra 子主题 + 插件)。
  • mcp ——一个 MCP 服务器,向 AI 客户端(Claude Code / Desktop)暴露管理工具,用 web 界面里签发的管理密钥认证。
  • integral ——集成 E2E 测试台:真实服务、真实数据库,用 Playwright 通过网关端到端驱动。
  • analyze ——面向中国 ESL 市场的策略与商业计划文档(不是运行时代码)。
about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →

youteacher