Skip to content

feat: deploy TeleCLI marketing site to Cloudflare Pages#13

Merged
malandr merged 1 commit into
mainfrom
feature/cloudflare-pages-deploy
May 17, 2026
Merged

feat: deploy TeleCLI marketing site to Cloudflare Pages#13
malandr merged 1 commit into
mainfrom
feature/cloudflare-pages-deploy

Conversation

@malandr
Copy link
Copy Markdown
Collaborator

@malandr malandr commented May 17, 2026

Summary

  • add a standalone marketing website under website/
  • add Cloudflare Pages deployment workflow for develop → preprod and main → prod
  • add Cloudflare setup and deployment validation helpers

Validation

  • python -m py_compile scripts/cloudflare_pages_setup.py scripts/validate_static_site.py
  • git diff --check -- .github/workflows/deploy-cloudflare-pages.yml website scripts .env.sample

Cloudflare credentials are stored as encrypted GitHub Actions secrets.

Copilot AI review requested due to automatic review settings May 17, 2026 00:33
@malandr malandr merged commit 7a77161 into main May 17, 2026
3 checks passed
@malandr malandr deleted the feature/cloudflare-pages-deploy branch May 17, 2026 00:33
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a standalone marketing website for TeleCLI plus the automation to deploy it to Cloudflare Pages for both preprod (from develop) and prod (from main), including helper scripts that pre-create the Pages project, custom domains, and DNS records, and that smoke-test deployed URLs.

Changes:

  • Add website/ static site (HTML/CSS/JS, OG image, robots/sitemap, Cloudflare _headers and _redirects, 404 page).
  • Add .github/workflows/deploy-cloudflare-pages.yml with two environment-gated jobs invoking cloudflare/wrangler-action@v4.
  • Add scripts/cloudflare_pages_setup.py and scripts/validate_static_site.py, plus new Cloudflare entries in .env.sample.

Reviewed changes

Copilot reviewed 12 out of 13 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
website/index.html Marketing landing page markup, navigation, OG/Twitter metadata.
website/styles.css Full visual styling and responsive rules for the site.
website/main.js Mobile menu toggle and IntersectionObserver-based reveal animations.
website/404.html Branded 404 page reusing the site stylesheet.
website/og.svg Open Graph preview image (SVG).
website/robots.txt Allows all crawlers and points at the sitemap.
website/sitemap.xml Single-URL sitemap for the home page.
website/_headers Security headers and long-lived caching for CSS/JS.
website/_redirects Intended www→apex 301 redirect.
.github/workflows/deploy-cloudflare-pages.yml Preprod/prod Pages deployment + validation pipeline.
scripts/cloudflare_pages_setup.py Idempotent Cloudflare API setup for project, DNS, custom domains.
scripts/validate_static_site.py Polls deployment URLs until expected marker text is served.
.env.sample Documents Cloudflare-related env vars used by the setup script.

Comment thread website/index.html
Comment on lines +13 to +14
<meta property="og:image" content="https://telecli.org/og.svg">
<meta name="twitter:card" content="summary_large_image">
(github.event_name == 'workflow_dispatch' && inputs.environment == 'preprod')
runs-on: ubuntu-latest
environment:
name: ${{ 'preprod' }}
Comment on lines +72 to +80
- name: Validate preprod deployment
env:
DEPLOYMENT_URL: ${{ steps.deploy.outputs.deployment-url }}
ALIAS_URL: ${{ steps.deploy.outputs.pages-deployment-alias-url }}
CUSTOM_URL: https://preprod.telecli.org
EXPECTED_TEXT: Secure command-line access
VALIDATION_ATTEMPTS: "36"
VALIDATION_DELAY_SECONDS: "10"
run: python scripts/validate_static_site.py
CLOUDFLARE_PAGES_CUSTOM_DOMAINS: telecli.org,www.telecli.org
CLOUDFLARE_DNS_TARGET: telecli.pages.dev
CLOUDFLARE_ZONE_NAME: telecli.org
CLOUDFLARE_REPLACE_CONFLICTING_DNS: "true"
Comment thread website/_redirects
@@ -0,0 +1 @@
https://www.telecli.org/* https://telecli.org/:splat 301!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants