YouTeacher is a B2B recruitment platform for the ESL market — it connects native/qualified English teachers with the schools in China that want to hire them.
Two sides sit across a marketplace. On one side, teachers looking for a position abroad: they build a profile, browse openings, apply. On the other, schools and agencies looking for teachers: they search talent, post jobs, work applications. YouTeacher is the layer in the middle that makes the two sides findable to each other — job listings flow in (partly scraped and AI-parsed from existing boards), teacher profiles are made searchable, and each side gets tools shaped for what it needs.
It is built as a monorepo of independent microservices, one git repo per service, developed with a partner (Pete). It is not public yet — the pieces are at different stages of completeness, some shipping, some still being built out.
Architecture
The shape is deliberately service-per-concern rather than one monolith:
- Frontend is Next.js 15 / React 19 / TypeScript, laid out in DDD layers (domain, application, infrastructure, features).
- Backends share one pattern: Fastify for HTTP, Prisma over PostgreSQL for storage. Each backend service owns exactly one URL prefix (
/auth,/jobs,/profile,/talents,/content,/admin) and never reaches outside it. - An nginx gateway fronts everything and routes by that prefix; service-to-service calls go through stable public URLs rather than ephemeral internal hostnames.
- Meilisearch powers the two search-heavy surfaces (jobs and talent).
- Auth is two-layered — a signed service-to-service credential and a separate user session — so an endpoint can require both "a trusted service is calling" and "a logged-in user is behind it." Strong second factors (TOTP, WebAuthn) and OAuth sit on top.
- Deployment is Coolify-hosted, with environment branches (dev / test / stage / prod) that deploy on push; Docker throughout.
During development each real service also has a mock twin the frontend can run against, and a dedicated integration harness drives the real services end to end through the gateway.
Components
Each of these is its own repository and will get its own child node.
- web — the Next.js frontend; the app both teachers and schools actually use.
- auth — authentication service: sessions, service tokens, TOTP, WebAuthn, OAuth.
- profile — teacher profiles; the richest data surface on the platform.
- talent — talent search; the school-side, Meilisearch-backed discovery of teachers.
- job — job postings and applications; also Meilisearch-backed.
- job_scrapers — scrapes postings from multiple external boards, parses them with AI, stores them in PostgreSQL to feed the job service.
- content — CMS-style service for posts, categories, and media.
- admin — internal back-office service for operating the platform.
- landing — the standalone marketing landing site.
- discord — Discord integration microservice (community + notifications).
- store — a WordPress-based storefront (Astra child theme + plugins).
- mcp — an MCP server exposing admin tools to AI clients (Claude Code / Desktop), authenticated by an admin key minted in the web UI.
- integral — the integration E2E test harness: real services, real databases, driven through the gateway with Playwright.
- analyze — strategy and business-plan docs for the China ESL market (not runtime code).