Skip to main content

Cloud — Deploy Your Site

Your project is on GitHub. Now let's make it live.

Pycora Pro works with any static host. This guide covers the three most popular free options:

ProviderFree TierBest For
Cloudflare PagesUnlimited bandwidthGlobal speed, custom domains
Netlify100 GB bandwidthSimplicity, form handling
Vercel100 GB bandwidthNext.js fans, easy setup

Pick one. You can switch later.


Before You Deploy​

Make sure:


Common Build Settings​

All three providers need the same build settings. Note these down:

SettingValue
Build commandpip install --break-system-packages python-frontmatter markdown PyYAML Jinja2 && python3 ssg.py
Output directoryoutput
Python version3.8 or higher (default is fine)

Option A — Deploy to Cloudflare Pages​

Step 1 — Connect GitHub​

  1. Open https://dash.cloudflare.com/
  2. Go to Workers & Pages → Create → Pages → Connect to Git
  3. Authorize Cloudflare to access your GitHub account
  4. Select your pycora-pro repository
  5. Click Begin setup

Step 2 — Configure Build​

FieldValue
Project namepycora-pro (or any name)
Production branchmain
Framework presetNone
Build commandpip install --break-system-packages python-frontmatter markdown PyYAML Jinja2 && python3 ssg.py
Build output directoryoutput

Step 3 — Deploy​

  1. Click Save and Deploy
  2. Wait 1–2 minutes
  3. Your site is live at https://pycora-pro.pages.dev

Step 4 — Add a Custom Domain (Optional)​

  1. In Cloudflare Pages, open your project
  2. Go to Custom domains → Set up a domain
  3. Enter your domain (e.g., yourdomain.com)
  4. Follow the DNS instructions
  5. Wait for DNS propagation (5–30 minutes)

Option B — Deploy to Netlify​

Step 1 — Connect GitHub​

  1. Open https://app.netlify.com/
  2. Click Add new site → Import an existing project
  3. Choose GitHub
  4. Authorize Netlify
  5. Select your pycora-pro repository

Step 2 — Configure Build​

FieldValue
Branch to deploymain
Build commandpip install python-frontmatter markdown PyYAML Jinja2 && python ssg.py
Publish directoryoutput

Step 3 — Deploy​

  1. Click Deploy site
  2. Wait 1–2 minutes
  3. Your site is live at https://your-site.netlify.app

Step 4 — Add a Custom Domain (Optional)​

  1. Open your site in Netlify
  2. Go to Site configuration → Domain management → Add a domain
  3. Enter your domain
  4. Follow the DNS instructions

Option C — Deploy to Vercel​

Step 1 — Connect GitHub​

  1. Open https://vercel.com/new
  2. Click Continue with GitHub
  3. Authorize Vercel
  4. Import your pycora-pro repository

Step 2 — Configure Build​

FieldValue
Framework PresetOther
Build Commandpip install python-frontmatter markdown PyYAML Jinja2 && python ssg.py
Output Directoryoutput
Install Commandpip install python-frontmatter markdown PyYAML Jinja2

Step 3 — Deploy​

  1. Click Deploy
  2. Wait 1–2 minutes
  3. Your site is live at https://your-project.vercel.app

Step 4 — Add a Custom Domain (Optional)​

  1. Open your project in Vercel
  2. Go to Settings → Domains
  3. Enter your domain
  4. Follow the DNS instructions

Automatic Rebuilds​

Once deployed, every push to GitHub triggers a new build:

git add .
git commit -m "Update content"
git push

Cloudflare/Netlify/Vercel detects the push, rebuilds, and deploys — usually in under a minute.

You do not need to run any command manually.


Verifying Your Deployment​

After deployment, check:

  • ✅ Homepage loads
  • ✅ About, Contact, Journal, Projects pages work
  • ✅ Blog posts and projects open
  • ✅ Images display correctly
  • ✅ sitemap.xml and robots.txt exist
  • ✅ 404.html works (visit a nonexistent URL)

If any link is broken, check the build logs in your provider's dashboard.


Troubleshooting​

Build fails with "command not found: python3"​

Change python3 to python in the build command.

Build fails with "No module named 'frontmatter'"​

The pip install step did not run. Make sure the build command includes pip install ... before python ssg.py, joined with &&.

Build succeeds but site is blank​

Check that output/ is the correct output directory. Some providers expect dist/ or build/ by default.

Custom domain not working​

  1. Check DNS records — they must point to the provider
  2. Wait up to 48 hours for propagation
  3. Clear your browser cache

Sitemap shows the wrong domain​

Open _data/site.yaml and set:

url: https://yourdomain.com

Commit and push. The site rebuilds.


What's Next?​

Your site is live. Now let's set up cloud CMS access so you can edit content from anywhere.

👉 Next: CMS Access →