Skip to content

Dashboard

The dashboard is a single-page web application at http://localhost:5055 serving as the unified control center. It is a monolithic HTML file (~400K) with 14 tabs, vanilla JavaScript, and Tailwind CSS via CDN.

Terminal window
python3 run.py
# Open http://localhost:5055

No build step required. The dashboard loads from marketing_system/static/dashboard.html.

Filterable Tabulator.js grid of 10K+ crawled influencers.

  • Search by handle, bio text
  • Filter by label (cat, dog, pet) and follower range
  • Filter by outreach status (not_contacted, dm_sent, replied, deal_closed)
  • Profile screenshots, outreach history, status progression

GA4 website analytics integration:

  • Sessions, pageviews, traffic sources
  • Top pages, user locations
  • Chart.js time-series visualizations

Outreach message templates with {{handle}} variable substitution:

  • Create, edit, delete templates
  • Preview rendered messages
  • Templates stored in outreach_strategies table

Video library for upload content:

  • CSV import for batch video management
  • Per-video metadata and status tracking (ready, drafted, posted, archived)

AI video generation:

  • KIE AI and OpenAI Sora integration
  • Input images + style prompts
  • Progress polling and download

Quick-launch controls for automation jobs:

  • Crawl, outreach, post, engage buttons
  • Live log viewer via Server-Sent Events
  • Queue controls (start, stop, view logs)

Per-phone pytest runner:

  • Select device and test files
  • Screen recording capture during tests
  • Video + log overlay viewer for debugging

24-hour visual timeline:

  • Color-coded job bars by type
  • Schedule CRUD form (create, edit, delete)
  • Recent runs table with status filters
  • Per-phone queue status indicators

Multi-device management:

  • Device list with serial, model, nickname, online status
  • WebRTC live streaming per device
  • Element overlay for interactive exploration
  • Remote tap/type/back controls

LLM agent content planning:

  • Run agent (dry run or live): plan N days of posts
  • Content plan table with status pills (planned, generating, ready, drafting, posted)
  • View agent run history and logs

Post analytics time-series:

  • Views, likes, comments, shares over time
  • Per-post drilldown
  • Chart.js visualizations

Browse, run, and export skills:

  • Card grid with expandable detail views
  • Action and workflow lists with descriptions
  • Device selector and parameter input
  • Run button (enqueues to job scheduler)
  • Export as ZIP

Split-screen LLM skill builder:

  • Left: chat with LLM (4 backends: OpenRouter, Claude, Ollama, Claude Code)
  • Right: live device stream with numbered element overlay
  • Execute proposed actions on device
  • Backend/model persisted in localStorage

App exploration (BFS):

  • Searchable package dropdown (130+ installed apps)
  • Start/stop controls with depth, states, and settle parameters
  • Live progress bar with scrolling log
  • State browser with screenshots and element lists
  • Previous explorations table
LayerTechnology
HTML/JSVanilla JavaScript (no framework)
CSSTailwind CSS via CDN
TablesTabulator.js 6.x (filterable, sortable, paginated)
ChartsChart.js 4.x
VideoWebRTC + MJPEG fallback
Live LogsServer-Sent Events (EventSource)
IconsLucide icons via CDN
Browser (dashboard.html)
|
| 14 tabs, lazy-loaded content
| localStorage for user preferences
v
Flask server (port 5055)
|
| 132+ REST API endpoints (JSON)
| SSE for live log streaming
| WebRTC signaling relay
v
SQLite DB (WAL mode) + filesystem

Tabs are lazy-initialized on first visit. Each tab has its own init function and API polling interval.

The server binds to 0.0.0.0:5055 by default, so you can access the dashboard from any machine on the same network:

http://<server-ip>:5055

Note: there is no authentication. Anyone on the network can access all controls.