Skip to content

Latest commit

 

History

23,628 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dashboard

A self-hosted command center for developer activity and first-party web analytics.

Bring GitHub, GitLab, X, Reddit, and your own websites into one private dashboard. Run it with PostgreSQL on infrastructure you control.

One place for activity and traffic

Follow updates from connected developer and social accounts alongside traffic from websites you operate. The overview brings activity, data freshness, and the busiest content into one place; each platform and site keeps its own detail page for deeper analysis.

First-party Web Analytics reports page views, visits, acquisition sources, and site-level dimensions from your own dashboard installation. It is designed for your own properties, rather than as a third-party advertising or audience-tracking service.

Add a site to Web Analytics

  1. Register a site in the Analytics page.
  2. Add its tracker snippet to pages on that site.
  3. Review portfolio traffic in Overview and open Analytics for site-level detail.

Highlights

  • One overview for activity across developer platforms
  • First-party web analytics for sites you own
  • App Store Connect team connections, app discovery and app selection
  • 7, 30, and 90-day trends and acquisition summaries
  • Fetch health with run history, stale-data, and failure visibility
  • Multi-user access with owner-scoped data
  • Self-hosted deployment backed by PostgreSQL

Connect App Store Connect

Open Connections (/accounts), choose App Store Connect, and add a Team API Key using its .p8 private key, Key ID and Issuer ID. Dashboard validates access and discovers apps before saving the connection. Enable the apps you want to sync; new apps start disabled. Vendor Number is optional and can be added later.

Connections support manual app metadata refresh and credential management. Set up Analytics separately reads and adopts existing report requests for enabled apps, then creates missing one-time snapshot and active ongoing requests. Enabling an app alone does not create Apple requests. The /app-store page includes Overview, Acquisition and Campaigns with app, territory and 7/30/90-day filters.

Sync Analytics imports Standard Discovery and Downloads for enabled apps into PostgreSQL; /app-store reads those facts. Standard reports do not contain Campaign data, and unavailable metrics remain —. Sync Revenue independently imports Purchases and Subscription State/Event, daily Sales Summary, and consolidated Financial reports (region ZZ). Add Vendor Number through Edit Connection for Sales and Finance, and explicitly select the Apple fiscal month. /revenue provides Overview, Sales, Subscriptions and Settlements, with separate original currencies and estimated versus final earnings.

Analytics selects exact Standard report names. Empty catalogs and absent target families display Waiting for Apple report data, with the request, report or segment stage preserved in the sync history. A matching family with only Detailed or an unknown variant reports unexpected_report_variant. Sales requests explicitly use API version 1_0; Sales and Finance failures retain HTTP status, Apple code, parameter name and a safe message, with filter values and credentials redacted.

ASC sync is manual only. Typed mappings follow Apple Analytics Reports, Sales Summary, and Financial fields. Development/tests use synthetic reports; actual credentials, signed URLs and reports stay in the deployed application. Deployment verification is performed by the operator using the normal sync buttons. ASC is independent of social accounts, repositories and Web Analytics sites, with no Product or universal Revenue provider model.

Private by deployment

The dashboard runs as a Node.js application with its own PostgreSQL database. Account credentials are encrypted before storage, and multi-user access scopes dashboard data to its owner. You choose where it runs and who can sign in.

It is intended for personal use, households, and small trusted teams. The web app, scheduler, and platform fetchers run together in one application process; PostgreSQL stores account and analytics data.

Quick Start

Docker Compose

cp .env.example .env
# Set a unique DASHBOARD_SECRET in .env
docker compose up -d

Open http://localhost:3000. The first startup creates the initial administrator; set its password in Settings.

See Configuration for environment settings and Deployment for production setup.

Try the UI locally

pnpm install --frozen-lockfile
pnpm run mock

Mock mode serves fixture data and does not require PostgreSQL. See Testing for development and verification commands.

Documentation

Start with the Documentation Index.

Topic Guide
Architecture and data flow Architecture
Configuration and deployment Configuration · Deployment
API and analytics queries API · GraphQL
Development and operations Frontend · Database · Fetchers
Testing and scripts Testing · Scripts
Dependency licenses Dependencies

Project documentation policy

The docs index is the entry point for maintained setup, architecture, and operations guidance. It is kept short here so the detailed references have one canonical home.

Human-facing documentation lives in docs/. Agent plans, specs, research, and archives live in .agents/.

Origins & License

Dashboard is derived from an MIT-licensed project by xiaoxiunique.

Current project modifications are distributed under Apache-2.0. See LICENSE and THIRD_PARTY_NOTICES.md for original and third-party terms.

Contributors

Languages