Cloud — Auto Build
One of the best parts of running Pycora Pro in the cloud: you never build manually.
Every time you save in Decap CMS, or push a change to GitHub, your hosting provider automatically rebuilds and redeploys your site.
This guide explains how auto build works, how to monitor it, and how to fix common failures.
How Auto Build Works
The flow is simple:
- You save a change — in Decap CMS, or with
git push - GitHub receives the commit — your repo is updated
- Your host detects the commit — Cloudflare, Netlify, or Vercel watches your repo
- The build runs — installs dependencies, then runs
ssg.py - The output is deployed — your
output/folder goes live
The whole process usually takes 30–90 seconds.
Cloudflare vs Netlify vs Vercel — Configuration
One key difference between providers:
| Provider | Config File | Where to Set Build Command |
|---|---|---|
| Cloudflare Pages | None | Dashboard (manual) |
| Netlify | netlify.toml | File in repo |
| Vercel | vercel.json | File in repo |
For Cloudflare Pages, you set the build command and output directory manually in the dashboard when you first connect your repo. There is no config file to commit.
For Netlify and Vercel, the config is in your repo — the provider reads it automatically.
What Triggers a Build
Every push to your production branch (usually main) triggers a build:
| Action | Triggers Build? |
|---|---|
| Save in Decap CMS | Yes |
git push to main | Yes |
git push to a feature branch | No (unless configured) |
| Manual edit on GitHub | Yes |
| Pull request | No (unless preview deployments enabled) |
How to Monitor Builds
Cloudflare Pages
- Open https://dash.cloudflare.com/
- Go to Workers & Pages → select your project
- Click the Deployments tab
- Click any build to see the log
Netlify
- Open https://app.netlify.com/
- Select your site
- Click the Deploys tab
- Click any deploy to see the log
Vercel
- Open https://vercel.com/dashboard
- Select your project
- Click the Deployments tab
- Click any deployment to see the log
What You See in the Log
A successful build looks like this:
Cloning repository...
Installing dependencies...
pip install python-frontmatter markdown PyYAML Jinja2
Building...
==================================================
PYCORA MEDUSA VERSION
SSG by Axcora Technology - www.axcora.com
==================================================
Ready in 0.87s - 41 files - MEDUSA v2.4.6
Deploying...
Deployment successful
A failed build shows the error near the bottom. Common causes are listed below.
Common Build Failures (and Fixes)
command not found: python3
Some hosts use python instead of python3. Try swapping them.
Cloudflare Pages (uses python3):
pip install --break-system-packages python-frontmatter markdown PyYAML Jinja2 && python3 ssg.py
Netlify (uses python):
pip install python-frontmatter markdown PyYAML Jinja2 && python ssg.py
Vercel (uses pip3 and python3):
pip3 install --break-system-packages python-frontmatter markdown PyYAML Jinja2 && python3 ssg.py
No module named 'frontmatter'
The pip install step did not run. The build command must include pip install ... before python ssg.py, joined with &&.
No such file or directory: 'content/'
The content/ folder is missing from your repo. Check that it is not ignored by .gitignore.
TemplateNotFound
A template file is missing. Check the templates/ folder in your repo.
Permission denied
A file is not readable. Check file permissions or re-upload the file.
Build succeeds, but the site is blank
The output directory is wrong. Confirm it is set to output.
Rebuilding Manually
If you need to rebuild without a code change:
Cloudflare Pages
- Open your project
- Click Deployments
- Click Retry deployment on any previous deployment
Netlify
- Open your site
- Go to Deploys
- Click Trigger deploy → Deploy site
Vercel
- Open your project
- Go to Deployments
- Click the three-dot menu → Redeploy
Preview Deployments (Optional)
All three providers support preview deployments for branches and pull requests.
Enable in your provider's settings to get a temporary URL for each branch. Useful for testing before merging to main.
Scheduled Rebuilds (Optional)
To rebuild periodically (e.g., for scheduled content), use a deploy hook on each provider.
Cloudflare Pages
- Open your Pages project in the Cloudflare dashboard
- Go to Settings → Builds & deployments
- Click Add deploy hook
- Name it (e.g.,
scheduled-rebuild) and select the branch (main) - Copy the generated URL
You can now trigger a rebuild by sending an HTTP POST request to that URL — from a cron job, a CMS webhook, or a manual curl command.
Netlify
- Open your site
- Go to Site configuration → Build & deploy → Build hooks
- Click Add build hook
- Name it and select the branch
- Copy the URL
Trigger it the same way — any service that can send an HTTP POST request.
Vercel
- Open your project
- Go to Settings → Git → Deploy Hooks
- Create a hook for your production branch
- Copy the URL
Trigger it the same way.
Best Practices
- Keep
mainclean — it is your production branch - Use branches for tests — preview deployments catch issues before they go live
- Do not commit
output/— it is generated on every build - Monitor the first few builds — catch config issues early
- Enable notifications — Cloudflare, Netlify, and Vercel can email you on failure
Troubleshooting
Build succeeds but changes do not appear
- Refresh with
Ctrl + Shift + R - Wait 30–90 seconds and try again
- Check that the correct branch was deployed
Build takes longer than usual
- Large numbers of images or posts may slow the build
- Check the host status page for outages
- Contact support if it persists
Build fails with an unfamiliar error
- Copy the error message
- Check the Troubleshooting section in the Deploy guide
- Search the error online
- Open an issue on the Pycora GitHub repo
You Are Done!
You now have a fully working Pycora Pro site — built in Python, edited via Decap CMS, and deployed online.
Enjoy building. Own it forever.
What's Next?
- Explore the Content Creation Reference for field-by-field documentation
- Check the Developer Guide to extend Pycora Pro
- Need a custom project? Hire us on Fiverr