zeekayandHanzo Dev a41b55db41 ads.hanzo.ai publishes as a site
The ads Deployment is a SPA server over this repo's dist and nothing else:
no SPA_* config, no API of its own (that is api.hanzo.ai). So the export is
published to the Sites plane as `ads`, s3://hanzo-sites/hanzo/ads, for the
edge to serve with no pod. The build gate already produces dist in the same
job, so the lane names no build of its own.

Checked in headless Chromium: the export on ads.hanzo.ai renders what the pod
renders.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-19 10:24:58 -07:00
2026-09-16 02:37:48 -07:00
2026-09-16 02:37:48 -07:00
2026-09-19 10:24:58 -07:00

Hanzo Ads

Plan a paid campaign, launch it on Meta, and keep its budget and spend beside every other campaign your organization runs.

This repository holds two things:

  • the web app (src/, a Vite SPA on @hanzo/ui), which runs campaigns through api.hanzo.ai/v1/ad and connects ad accounts through /v1/integration;
  • the Go module github.com/hanzoai/ads, with network connectors and cmd/ads.

Run the app

pnpm install
pnpm dev        # http://localhost:3310, /v1 forwarded to api.hanzo.ai

Sign-in is Hanzo IAM (hanzo.id, app hanzo-ads).

Build

pnpm build      # typecheck, then dist/

The image is built by CI from Dockerfile and hanzo.yml and served by ghcr.io/hanzoai/spa.

Screens

  • Campaigns — every campaign, filtered by status, with totals.
  • New campaign — store a campaign; it reaches its network only on launch.
  • Campaign — launch, pause, resume, edit, delete.
  • Ad accounts — connect Meta, Google or TikTok ad accounts.
  • Spend — spend against budget, per network and per campaign.

License

Apache-2.0 OR MIT.

S
Description
Mirror of github.com/hanzoai/ads
Readme
463 KiB
Languages
Go 62.1%
TypeScript 35.2%
HTML 1.5%
CSS 0.7%
Dockerfile 0.5%