Headless CMS core: declare an entity + grant permissions and instantly get a dynamic REST API (filtering + relations), with zero controllers to write
A headless CMS core: instead of writing a controller per API, you just declare an entity and grant permissions — the system auto-generates a dynamic REST API with filtering and relations on the fly, with automatic Swagger/OpenAPI docs. Inspired by PostgREST but built for MongoDB, I created 'MongoREST' — a layer that translates granted permissions into dynamic queries (filters + relations follow exactly the caller's access). A three-layer architecture: common (shared API layer) → intermediate (MongoREST query generation) → MongoDB. Schemas are managed in the backend with MongoDB native and validated with AJV, and the whole system extends through a WordPress-inspired plugin system. A background image pipeline (BullMQ + Sharp) auto-generates multiple sized variants from a single source image. It runs on Fastify (high performance), Redis (cache), MinIO (file storage), monitored with Prometheus + Loki + Grafana. It currently powers production systems for VPBank, ACB, Dinh Group, MangoAds satellites, Inoue, Kewpie...
Role: Core + plugin-system developer (the heart of the system) — in a 5-person team