
KG Content
An enterprise-grade CMS powering content operations for Kompas Gramedia's digital media properties.
About This Project
KG Content is the internal CMS backbone of Kompas Gramedia's digital media group — a network comprising over 10 news and lifestyle brands including Kompas.com, Tribunnews, and Grid.id. The platform handles the full lifecycle of editorial content: from drafting and editing to multi-channel publishing, SEO optimization, and distribution to mobile apps and third-party syndication partners.
I was part of the core engineering team responsible for designing and building the new-generation platform, replacing a legacy CMS that had been in service for over a decade.
The Problem
The legacy system was a monolithic PHP application that had accumulated years of technical debt. It could no longer support the demands of a modern multi-brand editorial operation:
- Scale: Editorial teams across 10+ brands shared one database with no tenant isolation. Performance degraded significantly during traffic spikes on breaking news events. - Workflow: The publishing workflow was linear and rigid. Complex editorial processes — multi-author articles, legal review gates, regional edition variants — had to be managed manually outside the system via email and messaging apps. - Access Control: A flat permission system meant editors at one brand could accidentally (or intentionally) publish to another brand's channels. - Real-time Collaboration: Two editors couldn't work on the same article simultaneously — saving one version would overwrite the other's changes.
How We Solved It
We architected KG Content as a multi-tenant microservices platform:
Multi-tenancy: Each brand operates in an isolated tenant space with its own content schema, workflow configuration, and user permissions. Shared infrastructure is abstracted behind service layers.
Workflow Engine: A configurable state machine powers the publishing workflow. Admins can define custom states (Draft → Review → Legal → Published → Archived), assign roles to each state transition, and set approval requirements. No more email chains.
RBAC Permission System: Role-Based Access Control with fine-grained permissions. A Senior Editor at Kompas.com cannot view or modify Tribunnews content. Permissions are enforced at the API gateway level, not just the UI.
Real-time Collaboration: Operational Transformation (OT) implemented for the rich text editor, allowing multiple authors to edit simultaneously — similar to Google Docs. Presence indicators show who is currently viewing or editing an article.
Key Capabilities
Multi-tenant Architecture
Complete brand isolation — each media property operates independently with its own schema, configuration, and user base.
Configurable Workflow Engine
State-machine-based publishing workflows with custom states, role assignments, and approval gates per brand.
RBAC Permissions
Fine-grained role-based access control enforced at both API and UI layers, with cross-brand isolation guarantees.
Real-time Co-editing
Multiple authors can collaborate on the same article simultaneously with live presence indicators and conflict resolution.
Multi-channel Distribution
Publish once, distribute everywhere: web, mobile app, push notification, RSS, and third-party API syndication.
SEO & Metadata Tools
Integrated SEO scoring, Open Graph previews, canonical URL management, and structured data (JSON-LD) generation.
Under the Hood
Next.js with TypeScript. The editorial interface is a complex SPA with real-time collaboration features. We used a slot-based rich text editor (custom built on Slate.js) to meet the specific formatting requirements of different content types.
NestJS microservices communicating over gRPC internally and REST externally. PostgreSQL with row-level tenant isolation. Redis for session management, rate limiting, and real-time pub/sub for collaboration features.
Kubernetes on GCP with horizontal pod autoscaling. During breaking news events, the platform automatically scales from 2 to 20 replicas within 90 seconds. Deployment pipelines built on GitLab CI with blue-green deployments to ensure zero downtime.
Impact & Outcomes
10+ media brands migrated from legacy CMS with zero content loss
Publishing workflow time reduced from ~4 hours to ~45 minutes on average
Zero cross-brand content leaks since RBAC rollout
Platform handled 3x traffic during 2024 Indonesian election coverage without degradation
Editorial team satisfaction score improved from 42% to 87% post-launch
What I Learned
Building multi-tenant systems taught me to think in layers of isolation: data, logic, and presentation all need tenant-awareness. The most underestimated challenge was the workflow engine — what seemed like a simple state machine became complex quickly when brands had conflicting requirements. Investing in a truly configurable system rather than hardcoding workflows paid off enormously as new brands onboarded.