Enterprise Knowledge Hub & Content Platform
Enterprise knowledge hub and frontend for dotCMS, serving 2,200+ technicians Canada-wide. Bilingual (EN-CA / FR-CA), region- and audience-aware, with AI-powered chat and high-performance search.
TechCentral is an enterprise knowledge hub and custom frontend for dotCMS, serving over 2,200 technicians Canada-wide since its launch on February 23, 2026. Tailored by language (EN-CA/FR-CA) and region/audience, it's the single source of truth for job aids, billing, training, policies, and more.
The platform migrated over 2,000 articles from 7+ stakeholder groups and combines a headless CMS with a high-performance Next.js frontend, unified search, favourites, trending content, and an AI-powered Learning Hub Assistant that uses RAG to ingest articles for accurate, interactive Q&A. Based on the platform's success, TELUS extended the contract by 12 months, with new projects underway including an LMS and certification system for technicians.
TechCentral sits between a headless CMS and 2,200+ end users, orchestrating content delivery, search, user data, and AI-powered chat through a single Next.js application.
Employees struggled to find the right information quickly. Content was scattered, search was poor, and there was no personalization based on role or region.
Canada requires English and French support, and different regions have different content needs. The platform needed to handle language and region preferences gracefully.
Content teams needed to publish and update without developer involvement, while maintaining strong UX and performance. Preview and rollback workflows were essential.
Custom high-performance frontend consuming content from dotCMS via GraphQL. Multiple content types (Job Aids, Billing, Training, News, Policies, and more), audience/region filtering, taxonomy, webhooks for search/cache invalidation, and VTL preview templates. Authoring stays in the CMS; delivery is the custom app.
Language (EN-CA/FR-CA) and region preferences drive routing and content filtering. Users see content relevant to their location and language preference automatically.
Fuse.js-powered server-side search with a three-pass execution strategy: original query, diacritic-normalized query (with scoring penalty), and spelling variation expansion -- deduplicated and ranked into a 0-100 relevance score. Weighted keys (title 60%, description 30%, tags 10%), percentile thresholding to cut noise, and bilingual indexes (EN-CA / FR-CA) built separately with in-memory per-pod caching. Permalinkable URL state and p95 latency under 150ms.
Database-backed favourites with offline-first sync: optimistic UI updates, a queued offline buffer with exponential backoff and automatic retry, and cross-device sync via PostgreSQL. Conflict resolution uses a latest-wins strategy with server-authoritative deletes. User preferences use a hybrid localStorage + cookie architecture so middleware and server components can read language and region settings without round-trips, while the client retains richer profile data locally.
CMS preview support with version-controlled templates and predictable rollback. Content teams can publish independently while maintaining UX standards.
Integrated chat button in the header opens the Learning Hub Assistant - a technician co-pilot that uses RAG to ingest TechCentral/dotCMS articles, providing accurate, conversational Q&A grounded in the same content users browse and search.
Trending articles by view count over a rolling window, real-time alerts and quick links from dotCMS, onboarding flows, article freshness badges, ratings, table of contents, and admin tools including search index rebuild/preview and outdated links scanner.
dotCMS as the headless content engine consumed via GraphQL. Multiple content types (Job Aids, Billing, Training, News, Policies, ValueGen, HBR, Quick Links, Alerts, Help), audience/region filtering, taxonomy, webhooks for search/cache invalidation, and optional VTL preview templates.
Cloud SQL (PostgreSQL) + Prisma for favourites, sessions, article views, and ratings. Deliberate Node.js runtime choice to support DB-backed session handling in middleware. User preferences use a hybrid storage model -- a ~200-byte cookie for SSR/middleware (language, regions, onboarding state) synced with richer localStorage data on the client via a singleton ProfileService.
Server-side Fuse.js execution with in-memory per-pod caching and a three-pass pipeline: original query, diacritic-normalized pass, and spelling-variation expansion -- each with calibrated scoring penalties, then deduplicated and thresholded. Separate bilingual indexes with webhook-triggered rebuilds. Includes a pagination workaround for a known dotCMS offset bug that returns empty results, ensuring reliable full-corpus indexing despite upstream limitations.
Vitest (unit/integration) + Playwright (E2E), with reusable utilities and onboarding-safe test flows. Testing pyramid ensures confidence without slowing development.
Containerized on GKE with multi-stage Docker builds. Search index rebuilt via Kubernetes CronJob and webhook-triggered cache invalidation on CMS publish. Kubernetes health probes (liveness, readiness, startup), structured Pino logging, and CI/CD via GitHub Actions. Secure secrets handling and documented runbooks for maintainability.
The Learning Hub Assistant uses RAG to ingest TechCentral/dotCMS articles, giving 2,200+ technicians conversational access to job aids, policies, and training content. Answers are grounded in the same content they browse and search.
Faster, more reliable access to internal guidance reduces friction for frontline and support teams - they find what they need without hunting.
Content teams can publish and update without developer involvement, while the platform maintains strong UX and performance standards.
Built with maintainability in mind - structured docs, testing pyramid, predictable architecture. Future developers can understand and extend the system.
Based on the platform's success and adoption by 2,200+ technicians, TELUS extended the contract by 12 months, with new projects underway including an LMS and certification system for technicians.
As the solo developer on this project, I owned:
If your team is stuck searching through docs, spreadsheets, or siloed systems - let's talk about building something that works.