{"id":50713658,"url":"https://github.com/devflex-pro/push-booster","last_synced_at":"2026-06-09T17:03:51.914Z","repository":{"id":362658640,"uuid":"1243415549","full_name":"devflex-pro/push-booster","owner":"devflex-pro","description":"Source-available web-push traffic platform for internal media buying teams","archived":false,"fork":false,"pushed_at":"2026-06-05T09:14:25.000Z","size":203,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T12:09:47.987Z","etag":null,"topics":["adtech","clickhouse","golang","media-buying","push-notifications","redis","redpanda","source-available","typescript","web-push"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devflex-pro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-19T10:16:38.000Z","updated_at":"2026-06-05T09:14:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/devflex-pro/push-booster","commit_stats":null,"previous_names":["devflex-pro/push-booster"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/devflex-pro/push-booster","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devflex-pro%2Fpush-booster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devflex-pro%2Fpush-booster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devflex-pro%2Fpush-booster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devflex-pro%2Fpush-booster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devflex-pro","download_url":"https://codeload.github.com/devflex-pro/push-booster/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devflex-pro%2Fpush-booster/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34116461,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adtech","clickhouse","golang","media-buying","push-notifications","redis","redpanda","source-available","typescript","web-push"],"created_at":"2026-06-09T17:03:48.698Z","updated_at":"2026-06-09T17:03:51.905Z","avatar_url":"https://github.com/devflex-pro.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Push Booster\n\nPush Booster is a source-available web-push traffic platform for internal operator teams and media buyers. It combines publisher/source inventory, browser subscription collection, ClickHouse analytics, Redpanda delivery queues, Redis caps/state and sender workers.\n\nThe current codebase is alpha software. It is intended for local evaluation, architecture review and self-hosted internal use.\n\n![Push Booster admin dashboard](docs/assets/admin-dashboard.png)\n\n## License\n\nThis repository is licensed under the Push Booster Source-Available License 1.0.\n\nYou may self-host Push Booster for yourself or your organization, including revenue-generating use with your own traffic. You may not sell Push Booster itself, provide hosted/SaaS access, white-label it, resell it, or build a competing commercial product based on it without a separate written commercial license.\n\nThis is not an OSI-approved open-source license because it restricts productization, resale and hosted commercial offerings.\n\n## What Works\n\n- Email OTP admin login.\n- Publisher and subscription source management.\n- Source-aware VAPID key management and snippet generation.\n- Public SDK config, subscribe endpoint and service-worker event ingestion.\n- Subscriber, event and analytics storage in ClickHouse.\n- Campaigns, creatives, targeting rules, audience estimates and launch enqueueing.\n- Redpanda delivery task streaming and sender workers.\n- Payload decisioning with Redis trigger context and caps.\n- Postback ingestion, cost import and performance reports.\n\n## Architecture\n\n- PostgreSQL: operational relational data.\n- ClickHouse: subscribers, events, audience snapshots and analytics.\n- Redpanda: delivery task streaming.\n- Redis: caps, idempotency, trigger context, locks and short-lived state.\n- Go services: admin API, public API, payload API, scheduler, sender and migrators.\n- React admin frontend: internal operator UI.\n\nPrimary docs:\n\n- [PUSH_BOOSTER_SPEC.md](PUSH_BOOSTER_SPEC.md)\n\n## Requirements\n\n- Go matching [go.mod](go.mod).\n- Node.js 20+ and npm.\n- Docker with Docker Compose.\n- A browser with Web Push support for the demo subscription flow.\n\n## Quickstart\n\nStart infrastructure:\n\n```sh\nmake infra-up\n```\n\nApply migrations:\n\n```sh\nmake migrate-up\nmake migrate-clickhouse\n```\n\nOptionally seed demo data:\n\n```sh\nmake dev-seed\n```\n\nRun the backend services in separate terminals:\n\n```sh\nAUTH_DEV_RETURN_OTP=true AUTH_ADMIN_EMAIL=admin@example.com make admin-api\nmake public-api\nmake payload-api\nmake sender\nmake scheduler\n```\n\nRun the admin frontend:\n\n```sh\nmake admin-frontend\n```\n\nOpen the Vite URL, usually `http://localhost:5173`, and log in as `admin@example.com`. In local mode the OTP is returned by the API and shown by the login form.\n\n## Demo Flow\n\n1. Create a publisher.\n2. Create a subscription source with the demo domain.\n3. Generate or attach a VAPID key.\n4. Open the source snippet from the Sources page.\n5. Use the demo subscribe page to grant push permission.\n6. Verify source stats in the admin UI.\n7. Create a campaign and creative.\n8. Estimate/build an audience and enqueue a launch.\n9. Run `sender` to consume delivery tasks.\n\n## Configuration\n\nCopy [.env.example](.env.example) when you want a local reference for environment variables:\n\n```sh\ncp .env.example .env\n```\n\nThe Makefile and services already include local defaults. Do not reuse the default passwords, JWT secret or VAPID keys in production.\n\nUseful local ports:\n\n- Admin API: `http://localhost:8080`\n- Public API: `http://localhost:8082`\n- Payload API: `http://localhost:8083`\n- Admin frontend: `http://localhost:5173`\n- Redpanda Console: `http://localhost:8081`\n- PostgreSQL: `localhost:5432`\n- ClickHouse: `http://localhost:8123`\n- Redis: `localhost:6379`\n\n## Common Commands\n\n```sh\nmake test\nnpm --prefix apps/admin-frontend run lint\nnpm --prefix apps/admin-frontend run build\nmake build-admin-api\nmake build-public-api\nmake build-payload-api\nmake build-sender\nmake build-scheduler\n```\n\nGenerate VAPID keys:\n\n```sh\nmake vapid-keys\n```\n\nHealth checks:\n\n```sh\ncurl http://localhost:8080/healthz\ncurl http://localhost:8080/readyz\n```\n\n## Known Limitations\n\n- Alpha-stage codebase; APIs and schema may change.\n- Not production-hardened for public multi-tenant SaaS.\n- No billing, marketplace, white-label or self-service tenant onboarding.\n- Some alpha compatibility paths remain, including temporary trigger fallbacks documented in the spec.\n- Local Docker Compose uses default credentials and exposed service ports.\n\n## Security\n\nSee [SECURITY.md](SECURITY.md). Please do not publish vulnerability details before maintainers have had time to respond.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevflex-pro%2Fpush-booster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevflex-pro%2Fpush-booster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevflex-pro%2Fpush-booster/lists"}