ContentFlow

Personal Project

2026

ContentFlow
ContentFlow
ContentFlow
Dashboard
Editorial calendar

Vertical

Productivity

Geography

Global

Media Type(s)

Web ApplicationMCP Server

Tags

DjangoPostgreSQLDRFMCPDockerOpen Source
A self-hosted content-planning tool tracking publishing across Substack, LinkedIn, YouTube, Acast, and the social platforms, with a companion API and MCP server for AI co-planning.

Credits

Creator & Developer

Overview

ContentFlow is a personal-but-production-grade content planning system designed to handle the realities of multi-channel publishing. A single piece of work (an article, a video, a podcast episode) fans out across many destinations like Substack, Medium, LinkedIn, YouTube, and Acast, and is followed by a tail of promotional posts across social platforms. ContentFlow models that lifecycle directly so the planning, scheduling, and post-mortem live in one place rather than scattered across spreadsheets, calendar invites, and a Notion page nobody reads.

Architecture

  • Backend: Django 6 with Django REST Framework, drf-spectacular for OpenAPI, and django-filter for query composition.
  • Database: PostgreSQL via psycopg 3.
  • Admin UX: django-unfold for a modernized admin surface. The admin is the primary operator UI here, not an afterthought.
  • Static + serving: WhiteNoise for static assets and Gunicorn for app serving, all containerized.
  • Deploy: A single VPS behind an existing Traefik reverse proxy. Images build locally and push to a private registry; the production compose file pulls and runs migrations from the entrypoint. DNS at cf.five59.com.
  • Calendar export: First-class iCal output via icalendar, so any planning view can be subscribed to from a real calendar app.

ContentFlow MCP

A companion contentflow-mcp package exposes the API to AI assistants via the Model Context Protocol, so a conversational agent can read the publishing pipeline, propose scheduling, and write back updates without screen-scraping the admin.

This is intentionally a small, separate package: the core ContentFlow app stays AI-agnostic, and the MCP layer can evolve (or be replaced) without touching the data model.

Why a personal project that looks like production

The goal isn't "the simplest thing that works for me." It's "a sharply scoped tool that demonstrates the deploy story I'd recommend to a client." Traefik routing, container registry workflow, migration-on-entrypoint, structured admin UX, and an MCP integration layer are all things that real teams want; building them on a project I personally use means they've been pressure-tested before they're pitched.