Case Study
Social Media Manager
In ProgressPost photos and videos to YouTube, Instagram, Facebook and Twitter/X in one click — with scheduling.
- Stack
- Python · FastAPI · SQLAlchemy · React · Vite · TanStack Query · Tailwind CSS


Overview
Social Media Manager posts photos and videos to YouTube, Instagram, Facebook, and Twitter/X from one dashboard, in one click, with optional scheduling.
Problem
Posting the same piece of content to multiple platforms means repeating the upload, caption, and scheduling work per platform — and each platform's API has its own quirks, auth flow, and media constraints.
Solution
A single dashboard backed by one platform-integration interface: every
platform implements the same AbstractPlatform contract, so posting
logic, scheduling, and token management are shared, and platform-specific
behavior stays isolated to that platform's own service file.
Key Features
- Multi-platform publishing — YouTube, Instagram, Facebook, Twitter/X
- Optional post scheduling
- AI-generated captions and hashtags directly from the uploaded photo or video (video is sampled into frames and sent to a vision-capable model) — pluggable across Gemini, OpenAI, and Anthropic
- A built-in motivational Reel script generator — the same category of tool as the standalone Content Creator product
- OAuth tokens encrypted at rest per connected account
- An extensible platform pattern: adding a new platform is one new service file plus a one-line registration — no other files change
Architecture
FastAPI backend: routers for accounts, posts, and the reel creator;
SQLAlchemy models (Account, Post) over SQLite. A services/ layer
holds one class per platform (YouTube, Instagram, Facebook, Twitter),
each implementing a shared AbstractPlatform interface and registered
via a @register_platform decorator — the rest of the app never branches
on platform name directly. A background scheduler runs queued posts at
their scheduled time. The frontend is React + Vite (Dashboard,
CreatePost, Accounts, History pages), talking to the API through
TanStack Query.
Technology
Python, FastAPI, SQLAlchemy, SQLite, APScheduler, OpenCV (video frame sampling for the AI caption feature), React 19, Vite, TanStack Query, Tailwind CSS.
Development Approach
Built using an AI-assisted development workflow (AIDLC) — Claude Code, Kiro and Amazon Q accelerate implementation, while architecture, decisions and quality remain owned by the developer.
Challenges
Every platform's API has different constraints — Twitter/X's free tier
doesn't support media uploads via API at all, and Instagram only works
with a Business or Creator account linked to a Facebook Page. The
AbstractPlatform boundary exists specifically so those differences stay
contained to one file each, instead of leaking into the rest of the app.
Decisions & Trade-offs
An extensible per-platform service pattern was chosen over one monolithic posting function — more upfront structure, in exchange for adding a fifth platform later without touching the existing four. The AI caption feature was built provider-agnostic (Gemini/OpenAI/Anthropic) rather than tied to one vendor, for the same reason.