Discover a vast collection of free, high-quality illustrations designed specifically for documentation, frameworks, and design systems. Enhance your projects with our easily accessible and professionally crafted illustrations.
This is a Jekyll static site. The production host is moving from Vercel to a Cloudflare Worker with static assets (not legacy Pages). Vercel config is kept until cutover.
bundle install
npm install
npm run devnpm run dev builds Jekyll into _site/ and serves it with wrangler dev (default http://localhost:8787).
In the Cloudflare dashboard, create a Worker named saas-ui-illustrations and connect this GitHub repo.
| Setting | Value |
|---|---|
| Worker name | saas-ui-illustrations |
| Production branch | main |
| Build command | npm run build |
| Deploy command | npx wrangler deploy |
| Root directory | / (repo root) |
| Account ID | leave unset in the repo; pick the account in the dashboard |
Workers Builds already has Ruby, Bundler, and Node. It will bundle install from the Gemfile and npm ci from package.json before the build command.
Do not add a custom domain yet. DNS for saas-ui.dev is not on Cloudflare. After it is, attach illustrations.saas-ui.dev in Worker → Settings → Domains & Routes (or uncomment routes in wrangler.jsonc).
.github/workflows/deploy-cloudflare.yml builds on every PR and can deploy on push to main. Add repository secrets CLOUDFLARE_API_TOKEN (Edit Cloudflare Workers) and CLOUDFLARE_ACCOUNT_ID. Until those exist, the deploy job skips instead of failing.
There is no vercel.json. Vercel was serving Jekyll _site with default headers. Wrangler matches that:
- Assets directory:
_site - Unknown paths: nearest
404.htmlwith HTTP 404 - HTML paths:
html_handling: auto-trailing-slashso/servesindex.html(required;none404s the homepage) - CORS
Access-Control-Allow-Origin: *and HSTS via_headers(copied into_siteat build time)
