Ad campaign monitoring platform for Meta, Google, and TikTok. Automatically evaluates campaign performance against configurable rules and pauses underperforming ads.
adpilot/
├── src/AdPilot.Api/ # .NET 9 ASP.NET Minimal API
│ ├── Adapters/ # Platform adapters (Meta, Google, TikTok)
│ ├── Endpoints/ # HTTP endpoints (clients, campaigns, rules, auth)
│ ├── Infrastructure/ # Supabase repository
│ ├── Models/ # Domain models
│ └── Services/ # RulesEngine, MonitoringService, TokenService
├── adpilot-ui/ # Next.js 15 dashboard
│ ├── app/ # Pages (dashboard, logs, accounts, rules)
│ ├── components/ # KpiStrip, CampaignTable, PlatformTabs, Sidebar
│ └── lib/ # API client, Supabase client, types
├── supabase/migrations/ # Postgres schema
├── tests/AdPilot.Tests/ # xUnit tests for adapters and services
└── n8n/ # Hourly monitoring workflow
- Multi-platform support — Meta, Google Ads, and TikTok integrations via OAuth
- Rules engine — Define metric thresholds (CPC, CTR, ROAS) to trigger automated actions
- Real-time dashboard — Live KPI strips, campaign tables, and action logs via Supabase subscriptions
- Monitoring service — Evaluates active campaigns on a schedule and pauses violating ads
- .NET 9 SDK
- Node.js 18+
- Supabase project
# Configure environment
cp src/AdPilot.Api/appsettings.json src/AdPilot.Api/appsettings.Development.json
# Fill in Supabase URL, keys, and platform OAuth credentials
# Run migrations
# Apply supabase/migrations/20260328000001_initial_schema.sql to your Supabase project
# Start API
dotnet run --project src/AdPilot.Apicd adpilot-ui
cp .env.local.example .env.local
# Set NEXT_PUBLIC_API_URL and NEXT_PUBLIC_SUPABASE_* values
npm install
npm run devdotnet test| Key | Description |
|---|---|
Supabase:Url |
Supabase project URL |
Supabase:ServiceKey |
Supabase service role key |
Meta:AppId |
Meta app ID |
Meta:AppSecret |
Meta app secret |
Meta:RedirectUri |
OAuth callback URL |
Google:ClientId |
Google OAuth client ID |
Google:ClientSecret |
Google OAuth client secret |
Google:RedirectUri |
OAuth callback URL |
TikTok:AppId |
TikTok app ID |
TikTok:AppSecret |
TikTok app secret |
TikTok:RedirectUri |
OAuth callback URL |
| Key | Description |
|---|---|
NEXT_PUBLIC_API_URL |
AdPilot API base URL |
NEXT_PUBLIC_SUPABASE_URL |
Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Supabase anonymous key |
MIT