# coming-soon Static placeholder page served at `neurontechnologies.ai` while the site is rebuilt. ## What it is A single self-contained `index.html` — inline CSS, no frameworks, no build step, and zero external network requests. The Neuron wordmark and favicon are inlined as `data:` URIs, so the page renders identically offline and under a strict CSP. Brand assets are the real masters from `neuron-technologies/assets`: | Asset | Source | | --- | --- | | Light wordmark | `branding/wordmarks/neuron-wordmark-on-light@2x.png` | | Dark wordmark | `branding/wordmarks/neuron-wordmark-on-dark@2x.png` | | Favicon | `branding/icons/neuron-icon-32.png` | Brand blue is `#2996F8`, sampled from the icon master. ## Regenerating index.html `index.html` is committed and is the file that ships. To rebuild it from updated brand assets, re-inline the three images above as base64 `data:` URIs. There is no build tooling and none is wanted — keep it a single file. ## Container `nginx:alpine`. Cloud Run injects `PORT` (8080); the nginx entrypoint runs `envsubst` over `/etc/nginx/templates/default.conf.template` before starting, which is how `listen ${PORT}` resolves. `/healthz` returns `200 ok`. Every other path falls through to `index.html`. ```sh docker build --platform linux/amd64 -t coming-soon:local . docker run --rm -p 8080:8080 -e PORT=8080 coming-soon:local curl -sI http://localhost:8080/ ``` ## Deploy The image lives in Artifact Registry: ``` us-central1-docker.pkg.dev/neuron-785695/neuron-marketing/coming-soon:v1 ``` `neurontechnologies.ai` is fronted by Cloudflare, then a GCP global load balancer (`marketing-backend-prod`) with serverless NEGs pointing at three Cloud Run services. Deploy to all three or the regions will serve different pages: | Service | Region | NEG | | --- | --- | --- | | `marketing-prod-us` | `us-central1` | `marketing-neg-us` | | `marketing-prod-eu` | `europe-west1` | `marketing-neg-eu` | | `marketing-prod-apac` | `asia-northeast1` | `marketing-neg-apac` | ```sh IMG=us-central1-docker.pkg.dev/neuron-785695/neuron-marketing/coming-soon:v1 for pair in us-central1:marketing-prod-us europe-west1:marketing-prod-eu asia-northeast1:marketing-prod-apac; do gcloud run deploy "${pair##*:}" --project=neuron-785695 --region="${pair%%:*}" \ --image="$IMG" --platform=managed --port=8080 --allow-unauthenticated \ --clear-env-vars --clear-secrets \ --cpu=1 --memory=512Mi --min-instances=1 --max-instances=10 done ``` `--clear-env-vars --clear-secrets` is deliberate: a static nginx has no business holding live Stripe, Supabase, or Anthropic credentials. Memory must be at least 512Mi because these services run with CPU always allocated. No DNS record or domain mapping was touched to put this page up, and none needs to be touched to take it down. ## Rollback Cloud Run revisions are immutable, so the previous application revisions still carry their own image, env vars, and secret bindings. Rolling back is a pure traffic change: ```sh gcloud run services update-traffic marketing-prod-us --project=neuron-785695 \ --region=us-central1 --to-revisions=marketing-prod-us-00101-98x=100 gcloud run services update-traffic marketing-prod-eu --project=neuron-785695 \ --region=europe-west1 --to-revisions=marketing-prod-eu-00099-4tz=100 gcloud run services update-traffic marketing-prod-apac --project=neuron-785695 \ --region=asia-northeast1 --to-revisions=marketing-prod-apac-00077-jp8=100 ``` Those three revisions ran image `marketing:ci-047be5ae` and were serving 100% of traffic immediately before this placeholder went live.