The Campaigns page now opens with a Setup panel listing every check that can stop a launch — token, ad account, account status, payment method, Page, operator identity — each failure carrying the sentence that says what to do about it. A red cross on its own tells the operator nothing they can act on. When a Page id is missing, the backend names the Pages the token can already reach, which turns "set an id" into "use this one". Once the checks pass, Run connection test builds a real campaign chain in Meta, confirms it is paused, and deletes it. It sits behind a confirmation that says plainly what will appear in the ad account and that nothing can be spent. VITE_META_AD_ACCOUNT_ID is normalised to undefined when empty so the backend falls back to META_ADS_ACCOUNT_ID rather than being asked about an empty account id. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
MaskanX Frontend
Independent React, TypeScript, and Vite frontend for MaskanX.
Service Contract
- Default development URL:
http://127.0.0.1:5173 - Backend API: configured with
VITE_MASKANX_API_URL - Local proxy target: configured with
VITE_MASKANX_PROXY_TARGET - Database access: none; this service never receives PostgreSQL credentials
Local Setup
npm install
Copy-Item .env.local.example .env.local
npm run local
Start maskanx-backend on port 8088 before using the full UI.
Campaigns page
The Campaigns page needs VITE_META_AD_ACCOUNT_ID set to the Meta ad account
id (act_<digits>) in your .env.* file.
If it is unset the page still loads and lists campaigns, but four things are
silently unavailable: the ad-account billing panel, the warning shown when no
payment method is attached, ad preview in the wizard, and the account-minimum
budget check (the backend cannot look up min_daily_budget without an
account, so it skips that validation and logs a warning).
Ad preview also requires META_ADS_ACCESS_TOKEN to be configured on the
backend, in Settings > Environments.
Commands
| Command | Purpose |
|---|---|
npm run start |
Preview the production build on port 5173 |
npm run build |
Type-check and build dist/ |
npm run local |
Local Vite server using .env.local |
npm run dev |
Development server using .env.development |
npm run test |
Test-mode type-check and production build |
npm run lint |
ESLint checks |
npm run prod |
Production-mode preview |
Database migration and seed commands intentionally live in
maskanx-backend. A frontend must never own database credentials.
Production
Build the container with the browser-visible backend URL:
docker build `
--build-arg VITE_MASKANX_API_URL=https://api.example.com `
-t maskanx-frontend .
The backend must allow the deployed frontend origin through
MASKANX_CORS_ORIGINS.