Skip to content

Cloudflare Pages

Cloudflare Pages

All landing pages and static sites are deployed to Cloudflare Pages using Direct Upload via Wrangler CLI.

Deployed Sites

ProjectPackageCloudflare ProjectURL
Chat@chat/landingchat-landingchat.manacore.app
Picture@picture/landingpicture-landingpicture.manacore.app
Manacore@manacore/landingmanacore-landingmanacore.app
ManaDeck@manadeck/landingmanadeck-landingmanadeck.manacore.app
Zitare@zitare/landingzitare-landingzitare.manacore.app
Docs@manacore/docsmanacore-docsdocs.manacore.app

Quick Deploy

Terminal window
# Login to Cloudflare (first time only)
pnpm cf:login
# Deploy a landing page
pnpm deploy:landing:chat
pnpm deploy:landing:picture
# Deploy documentation
pnpm deploy:docs
# Deploy all landing pages
pnpm deploy:landing:all

Setup Guide

  1. Login to Cloudflare

    Terminal window
    npx wrangler login

    This opens a browser to authenticate with your Cloudflare account.

  2. Create a project (first time only)

    Terminal window
    npx wrangler pages project create chat-landing --production-branch=main
  3. Configure wrangler.toml

    Each landing page needs a wrangler.toml:

    name = "chat-landing"
    compatibility_date = "2024-12-01"
    pages_build_output_dir = "dist"
  4. Deploy

    Terminal window
    # Build and deploy
    pnpm --filter @chat/landing build
    npx wrangler pages deploy apps/chat/apps/landing/dist --project-name=chat-landing

Project Configuration

wrangler.toml

# Cloudflare Pages configuration
name = "project-landing"
compatibility_date = "2024-12-01"
pages_build_output_dir = "dist"

Deploy Script Pattern

Each project has a deploy script in root package.json:

{
"scripts": {
"deploy:landing:chat": "pnpm --filter @chat/landing build && npx wrangler pages deploy apps/chat/apps/landing/dist --project-name=chat-landing"
}
}

Custom Domains

Add a Custom Domain

Terminal window
# Via CLI
npx wrangler pages project add-domain chat-landing chat.manacore.app
# Or via Cloudflare Dashboard:
# 1. Go to Pages > chat-landing > Custom domains
# 2. Add domain: chat.manacore.app
# 3. Configure DNS (automatic if using Cloudflare DNS)

DNS Configuration

If using Cloudflare DNS (recommended):

TypeNameContentProxy
CNAMEchatchat-landing.pages.devProxied

If using external DNS:

TypeNameContent
CNAMEchatchat-landing.pages.dev

Environment Variables

Build-time Variables

Set in Cloudflare Dashboard or via wrangler.toml:

[vars]
PUBLIC_API_URL = "https://api.manacore.app"

Via Dashboard

  1. Go to Pages > Project > Settings > Environment variables
  2. Add variables for Production and Preview environments

Deployment Previews

Every push to a branch creates a preview deployment:

  • Production: https://chat-landing.pages.dev
  • Preview: https://<branch>.<project>.pages.dev

Rollback

Via CLI

Terminal window
# List deployments
npx wrangler pages deployment list --project-name=chat-landing
# Promote a previous deployment to production
npx wrangler pages deployment promote <deployment-id> --project-name=chat-landing

Via Dashboard

  1. Go to Pages > Project > Deployments
  2. Find the deployment to rollback to
  3. Click ”…” > “Rollback to this deployment”

Adding a New Landing Page

  1. Create the landing page

    apps/{project}/apps/landing/
    ├── src/
    ├── public/
    ├── astro.config.mjs
    ├── wrangler.toml
    └── package.json
  2. Add wrangler.toml

    name = "{project}-landing"
    compatibility_date = "2024-12-01"
    pages_build_output_dir = "dist"
  3. Create Cloudflare project

    Terminal window
    npx wrangler pages project create {project}-landing --production-branch=main
  4. Add deploy script to root package.json

    "deploy:landing:{project}": "pnpm --filter @{project}/landing build && npx wrangler pages deploy apps/{project}/apps/landing/dist --project-name={project}-landing"
  5. Deploy

    Terminal window
    pnpm deploy:landing:{project}
  6. Add custom domain (optional)

    Terminal window
    npx wrangler pages project add-domain {project}-landing {project}.manacore.app

Troubleshooting

”Project not found”

Create the project first:

Terminal window
npx wrangler pages project create project-name --production-branch=main

Build Fails

Check the build locally:

Terminal window
pnpm --filter @project/landing build

Domain Not Working

  1. Verify DNS records are correct
  2. Check SSL/TLS mode is “Full” in Cloudflare
  3. Wait for DNS propagation (up to 24 hours)