Techsider SolutionsTechsider

Reviewer Platform

Shared Fastify API, Next.js admin CMS, and content sync for every reviewer app.

Reviewer Platform banner
FastifyNext.jsPostgreSQLTypeScriptNode.js

Built for LETReady and CLEReady

One PostgreSQL-backed platform that powers LETReady and CLEReady — public content sync for mobile/web clients, an authenticated admin CMS for editors, and secure ops for taxonomy, questions, imports, announcements, and remote config.

Teacher licensure reviewer on Android and the web

Introduction

The Reviewer Platform is the shared backbone behind Techsider Solutions’ exam-prep products. Instead of a separate backend per app, one Fastify API and one PostgreSQL database serve multiple reviewer apps — LETReady (app key let) and CLEReady (app key cle), plus room for future catalogs — each with its own taxonomy and content.

Mobile and web clients use a public, read-oriented content-sync surface under /api/v1: manifests, question packs, and public config so study content can update without shipping a new binary for every editorial change. Hostname routing (for example let-reviewer.* vs cle-reviewer.*) maps to the correct app slug on the shared web service.

Editors work in a Next.js admin CMS that never talks to Postgres from the browser. Server Components and a same-origin /bff/* proxy forward session cookies to the Fastify admin API (/api/admin/v1), with CSRF protection, HTTP-only signed cookies, and no backend secrets in NEXT_PUBLIC_* variables.

The same platform covers question imports, accuracy reports, remote config, audit trails, administrators, and in-app announcements (with optional FCM for Android). Deployments run through the Techsider ops stack on Unraid with staging and production workflows.

At a glance

  • Multi-app: one API + DB for let, cle, and future reviewers
  • Live consumers: LETReady + CLEReady (web); Android apps share the same sync surface
  • Surfaces: public /api/v1 for clients · authenticated /api/admin/v1 for CMS
  • Stack: Fastify 5 · Prisma · PostgreSQL · Next.js App Router · Zod
  • Security: argon2id, session cookies, CSRF, Helmet, CORS, rate limits
  • Ops: Unraid Compose + GitHub Actions deploy pipelines

Features

  • Public content sync

    Versioned manifests and question packs for mobile and web reviewers. Clients pull curated updates while Android keeps practice sessions offline after import.

  • Admin CMS (BFF)

    Next.js 16 dashboard for subjects, topics, questions, bulk imports, reports, and remote config. Browser traffic stays same-origin via /bff; the Fastify origin stays server-side only.

  • Taxonomy & multi-app catalogs

    Configurable exam → subject → topic → question trees per app key, so LET GenEd/ProfEd and CLE’s six board areas share infrastructure without sharing content.

  • Imports & quality loop

    Structured imports into the canonical CMS schema, plus question-report workflows so inaccurate or outdated items can be reviewed and corrected.

  • Announcements & config

    In-app announcement campaigns for reviewer clients, optional FCM on Android, and remote public config for maintenance or feature gates — without Firebase In-App Messaging.

  • Auth, audit & operators

    Administrator accounts with session auth, role-aware admin routes, and audit logging for content and config changes. Health endpoints for live/ready checks in production.

  • Performance & deploy

    Indexed Prisma access patterns, no N+1 admin lists, server-side pagination in the CMS, and ops-managed images for API, admin, and web with staging → production gates where required.