Skip to content

Architecture

UniSync is a full-stack application with a layered service architecture.

System Overview

Service Layer Pattern

UniSync follows a strict layered architecture. Each layer only communicates with the layer directly below it.

LayerResponsibilityLocation
RoutersHTTP endpoints, request validation, authbackend/api_server/routers/
ServicesBusiness logic, orchestrationbackend/modules/ai_content/services/
RepositoriesDatabase queries (raw SQL)backend/modules/ai_content/database/repositories/
ModelsPydantic schemas for validationbackend/modules/ai_content/models/

Agent Execution Flow

Quick Publisher

Production Agent — SEO Pipeline

Database Architecture

  • Engine: PostgreSQL 15+
  • Driver: psycopg2 (raw SQL, no ORM)
  • Tables: 38 application tables + alembic_version
  • Migrations: Alembic for schema changes
  • Schema init: database_init.py runs on startup (creates tables, indexes, constraints)

Key Table Groups

GroupTablesPurpose
Authusers, user_sessions, api_credentialsAuthentication and credentials
Agentsagents, agent_automation_assignments, agent_planner_assignmentsAgent configuration
Contentwordpress_posts, astro_posts, astro_categories, astro_tagsPublished content
SEOseo_keyword_plans, seo_campaign_planners, seo_posts_queue, keyword_registrySEO pipeline
Scoutscout_opportunities, scout_config, scout_cycle_logsTrend discovery
Strategycontent_strategies, topic_clustersContent planning
Analyticstoken_usage, model_pricingCost tracking

Background Services

UniSync runs several background services alongside the API:

ServiceIntervalPurpose
Queue Scheduler30 secondsPolls for queued agents and executes them
AutoPilotPer-environment configAutomatically queues agents on schedule
Scout SchedulerConfigurableRuns content opportunity discovery cycles
Model Pricing Sync24 hoursUpdates AI model pricing data

Deployment Architecture

unisync.ai          → Landing site (React + Vite, static)
app.unisync.ai      → Frontend application (React SPA)
api.unisync.ai      → Backend API (FastAPI)
docs.unisync.ai     → Documentation (VitePress, static)
bridge.example.com  → Bridge API (Express.js, per Astro site)

UniSync Documentation