G-001Cover sheet · Open-source template for Cloudflare Workers
Every product starts from these drawings.
Orkide is a production-grade monorepo for Cloudflare: two Workers on one origin, typed end to end, with a blog, a portfolio and an admin already built. Derive a product from it and keep merging its fixes.
| Item | Part | Qty | What it does |
|---|---|---|---|
| 1 | Browser | 1 | Gets the HTML with its CSS inlined |
| 2 | Edge cache | 1 | Keeps each page, tagged by what it shows |
| 3 | Web Worker · Astro | 1 | Renders pages and owns every request |
| 4 | Service Binding | 1 | Hands /api over in process: no CORS, no hop |
| 5 | API Worker · Hono | 1 | Typed routes, roles and purge headers |
| 6 | D1 | 1 | Posts and projects, one row per language |
| 7 | R2 | 1 | Images and files |
| 8 | Queues | 2 | Jobs and their dead letters |
| 9 | Durable Object | 1 | Counts who is reading right now |
- Stack
- Astro · Hono · D1 · R2
- Languages
- EN · TR
- Revision
- 0fc90ff
- Plotted
- 2026-10-20
How this page reached you
From edge infrastructure to the last pixel
Edge·Request— ms
The nearest edge location
Your request lands at the closest Cloudflare data centre. Pages are cached there, tagged by what they show, and purged the moment a post changes.
Worker·First byte— ms
Two Workers, one origin
The web Worker renders the page with Astro. Calls to /api go to a second Worker through a Service Binding: in-process, so there is no CORS and no extra hop.
D1·Last byte— ms
One row per language
Posts, projects and taxonomies live in D1, translated row by row and keyed by UUIDv7. Media sits next to them in R2.
Browser·Interactive— ms
Inlined and hashed
The HTML arrives with its stylesheet inlined and every script hashed into the CSP. JavaScript loads only where something moves.
Pixel·First paint— ms
One pixel
Everything above exists to get this one right.
t+ milliseconds, measured on this page load in your browser.
What this site is made of
Inside Orkide
Orkide is this site and the template products start from: a production-grade Cloudflare monorepo, typed end to end and open source.
- 2Workers, one origin
- 10Packages every product shares
- 32Decisions in the ADR log
- 0kBFramework code on reading pages
General notes
- Edge
Two Workers, one origin
Astro renders at the edge and hands /api to a Hono Worker through a Service Binding. No CORS, no extra hop.
- Types
Typed end to end
Drizzle tables generate the Zod models, the validators refine them and the API client is typed from the routes. No data type is written by hand.
- Cache
Cached by tag
Every page is cached at the edge under the tags it shows, and every save in the admin purges exactly those.
- Readers
For people and agents
RSS, Atom and JSON feeds, a sitemap, llms.txt and a Markdown copy of every post and project.
- Admin
An admin that ships
Posts, projects, media, site content, inbox and analytics, with owner, editor and viewer roles and passkey sign-in.
- Skin
A skin you can swap
Tokens, fonts, motion and brand drawings live in one package, so a product changes its look without touching a page.
Build on it
Start a product from Orkide
Every product keeps Orkide as its upstream, so a fix or a feature made here merges into all of them.
Clone
Start from the template and keep it as the upstream remote.
git clone https://github.com/Ouzx/orkideRun
Both Workers run locally on Miniflare, with D1, R2 and queues.
pnpm install && pnpm devReskin
Edit the tokens, fonts and brand drawing; the pages stay as they are.
pnpm --filter @orkide/ui tokensMerge
Pull the template's fixes into your product. Your skin and your content stay yours.
git fetch upstream && git merge upstream/main
Contact
Request for information
Have a project, a question or just want to say hi? Send a message — I read every one.
- Dwg no.
- G-004
- Title
- Contact
- Drawn
- Oğuzhan Kandakoğlu
Write to the inbox. Replies come by email.
Get in touch