Media-Monitoring Admin Portal & Microservice Backend
A media-monitoring / data-orchestration platform
Overview
The central admin portal and microservice backend for a media-monitoring platform, built as a large Lerna-managed monorepo. It pairs an Angular operator UI with a fleet of Node.js/TypeScript services that ingest, enrich, and serve news and social content from many external sources.
The Challenge
A media-monitoring product must continuously pull articles and posts from a wide range of providers, normalize them, and give internal operators tooling to manage subscriptions, content, and delivery. Each source has its own API quirks, rate limits, and data shape, demanding a modular, independently deployable architecture rather than a single backend.
What We Built
A versioned monorepo (workspace version 5.164.0) orchestrating 15+ packages via Lerna and npm workspaces. The Angular 14 + RxJS frontend provides the operator console; the Express/Sequelize backend exposes the core API over PostgreSQL. Around them sit dedicated ingestion microservices, Google News, Embedly, LexisNexis, NewsCatcher, Podchaser, LinkedIn media, Truth Social, X (Twitter), URL extraction, and an AI summary service, plus a cronjob scheduler, subscription viewer, and mail-content viewer. Services communicate through a shared RabbitMQ service library, use BentoCache for caching, Pino/Winston for structured logging, and Sentry for profiling. Delivery is handled with Docker, Kubernetes manifests, Skaffold, and Minikube for local cluster development, with conventional-commit tooling (commitlint, husky, standard-version) enforcing release discipline.
Technologies & Approach
TypeScript end to end. Angular 14 for the UI, Express + Sequelize over PostgreSQL for APIs, tsyringe for dependency injection, and RabbitMQ for inter-service messaging. Several services were migrated to TypeScript variants (embedly-service-typescript, google-news-service-typescript, news-catcher-service-typescript), reflecting an ongoing modernization. Kubernetes + Skaffold provide consistent build-and-deploy across staging and production.
Outcome / Impact
A long-lived, actively maintained platform (2022–2025) that consolidates more than a dozen content sources behind a single operator portal and a coherent microservice backbone, demonstrating sustained ownership of a complex multi-service product.
Capabilities Demonstrated
- Designing and maintaining a 15+ package monorepo with Lerna and npm workspaces
- Building enterprise Angular operator tooling backed by Node.js APIs
- Integrating many third-party content providers behind a uniform ingestion layer
- Event-driven microservices over RabbitMQ with shared service libraries
- Kubernetes-based delivery with Skaffold and local Minikube workflows
- Release governance via conventional commits, commitlint, and automated versioning