KG Content
Back to Portfolio
Content Management System2021 – 2024Software Engineer & UI/UX Designer

KG Content

An enterprise-grade CMS powering content operations for Kompas Gramedia's digital media properties.

Next.jsNestJSPostgreSQLRedisKubernetesDocker
Overview

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.

Challenge

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.

Solution

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.

Features

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.

Technical

Under the Hood

Frontend

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.

Backend

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.

Infrastructure

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.

Results

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

Reflection

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.

Other Projects