Project
TalentMatch
Production-oriented job matching backend
TalentMatch is a backend for publishing jobs and matching candidates, structured as a modular monolith with two deployable processes: a synchronous Fastify API and an asynchronous BullMQ worker. Job lifecycle management, search, caching, idempotent applications, deterministic scoring, production observability, CI/CD, Docker, and AWS ECS configuration are all implemented.
What it demonstrates
- Modular monolith split into two deployable processes (synchronous Fastify API, asynchronous BullMQ worker) instead of a premature microservices split.
- MongoDB as the durable source of truth; OpenSearch as a rebuildable read model that is never treated as authoritative.
- Idempotent job applications enforced by an Idempotency-Key header and a database uniqueness constraint, not just an application-level check.
- Deterministic candidate scoring (skills, location, salary, experience) run asynchronously, pollable via a Location header.
- Redis-backed rate limiting that fails open on Redis errors, so an infrastructure incident degrades gracefully instead of causing a full outage.
- Dead-letter queues for search indexing and scoring, with a CLI to inspect and safely replay them after fixing the root cause.
- OIDC bearer-JWT authentication and authorization in production, with role-scoped access for employers and candidates.
- Full AWS ECS/Fargate deployment: separate immutable images for API and worker, private tasks behind an HTTPS ALB, Secrets Manager injection, autoscaling, and GitHub Actions OIDC deploys with immutable commit-SHA images.
Technology
FastifyTypeScriptMongoDBRedisBullMQOpenSearchZodVitestDockerAWS ECS/FargateCloudFormationGitHub ActionsOIDC