2

Multilingual FAQ API

Production-grade RESTful API built with TypeScript, Express, MongoDB, and Redis featuring automatic multi-language translation, fault-tolerant Redis caching, Zod input validation, rate limiting, Pino structured logging, and OpenAPI documentation.

GitHub β†—

🌐 Multilingual FAQ API

A production-style backend service for managing FAQs with real-time dynamic language translations. Built with TypeScript, Express, MongoDB, and Redis, designed with high reliability, security, observability, and containerized deployment best practices in mind.

πŸš€ Key Highlights & Architecture

  • Versioned API Architecture (/api/v1): Clean separation between application routes and runtime bootstrapping (app.ts vs index.ts).
  • Async Dynamic Translation: In-process translation queue supporting retry logic for seamless multi-language target rendering.
  • Fault-Tolerant Redis Caching: Automatic caching & cache invalidation with graceful fallbackβ€”the core API continues serving requests reliably even if Redis is down.
  • Security Hardening: Protected with Helmet headers, express-rate-limit abuse protection, strict CORS allowlist, request size constraints, and HTTP Basic authentication for sensitive admin endpoints.
  • Strict Input Validation: End-to-end Zod schemas for query parameters, request bodies, and database mutations.
  • Full Observability: Structured JSON logging powered by Pino, unique request ID tracing, latency monitoring, and Prometheus-compatible metrics endpoint (/api/v1/metrics).
  • Health & Readiness Probes: Built-in /api/v1/health and /api/v1/ready endpoints suitable for Kubernetes/Docker container orchestration.
  • Interactive Documentation: Interactive OpenAPI 3.0 UI rendered via Swagger at /docs.

πŸ› οΈ Tech Stack

LayerTechnology
Runtime & LanguageNode.js, TypeScript
FrameworkExpress.js
Database & ODMMongoDB, Mongoose
Caching LayerRedis (redis client v4)
Validation & SecurityZod, Helmet, Express Rate Limit
Logging & MetricsPino, Pino-HTTP, Custom Latency/Metrics
API SpecsSwagger UI Express (/docs)
Containerization & CIDocker, Docker Compose, GitHub Actions
TestingJest, Supertest, MongoDB Memory Server

πŸ“‹ API Endpoints

Public & System Endpoints (/api/v1)

  • GET /api/v1/faqs β€” Retrieve list of FAQs (supports lang, page, limit, search, sortBy, sortOrder).
  • POST /api/v1/faqs β€” Create a new FAQ entry (triggers async translation).
  • GET /api/v1/clear-cache β€” Invalidate cached FAQ data.
  • GET /api/v1/health β€” Liveness check.
  • GET /api/v1/ready β€” Readiness check (verifying DB & Redis connectivity).
  • GET /api/v1/metrics β€” Export operational metrics.
  • GET /docs β€” Interactive Swagger UI documentation.

Admin Endpoints (HTTP Basic Auth)

  • GET /api/v1/admin/faqs β€” View all FAQs with admin controls.
  • POST /api/v1/admin/faqs β€” Admin creation endpoint.
  • POST /api/v1/admin/faqs/:id β€” Update existing FAQ.
  • POST /api/v1/admin/faqs/:id/delete β€” Delete FAQ entry and invalidate cache.

πŸ’» Quick Start & Commands

1. Clone & Install

code
git clone https://github.com/Rahul-Sahani04/multilang-faq-api.git
cd multilang-faq-api
npm install

2. Environment Configuration

code
cp .env.example .env

3. Build & Run

code
# Development mode
npm run dev
 
# Production build & run
npm run build
npm run start

4. Running with Docker Compose

code
docker-compose up --build

5. Running Tests & Linting

code
npm run test
npm run lint