Skip to content
◆ Headless Odoo · Astro on Cloudflare

Odusite Docs

The entire public website and customer portal of Odoo 19, re-created as a fast, modular, themable Astro site on Cloudflare Workers. Odoo stays the backend — a headless CMS reached only through a token-secured REST API.

  • Token-secured REST API


    The browser never talks to Odoo. The Astro Worker calls /odusite/v1/... server-to-server, authenticated with the X-Odusite-Token header.

    Architecture

  • Modular Blocks


    Blog, shop, portal, events, jobs, forum, courses and more — each a build-time block that a disabled site ships zero JS and zero routes for.

    Site Blocks

  • Themable by Tokens


    Every colour and spacing flows through the theme layer's design tokens. Default theme is a polished dark theme; swap it without touching blocks.

    Configuration

  • Headless Commerce


    Catalog, cart and checkout run against a draft sale.order. Payments go straight to the provider (Stripe first); Odoo stays the source of truth.

    Shopping

  • JWT Portal


    Sign-up with email double opt-in, orders, quotations, invoices and projects — all behind short-lived JWTs issued by Odoo. No session cookies.

    Customer Portal

  • Edge-cached SSR


    Marketing pages prerender at the edge; catalog, cart and portal render on demand. Odoo webhooks invalidate exactly the pages that changed.

    Site Deployment

What Odusite is

Odusite re-creates the Odoo 19.0 public website and customer portal as a standalone Astro site deployed on Cloudflare Workers, with Odoo acting as a headless CMS/backend. Odoo's own rendering — QWeb, website snippets, the website builder — is not used. Everything the visitor sees is authored and served by the Astro frontend.

The two halves talk over a single, deliberate seam:

  • addons/odusite_* — Odoo 19 addons. Each depends on a standard module (sale, website_blog, crm, …) and exposes REST controllers under /odusite/v1/.... Everything shared — token check, JSON envelope, pagination, image URLs, webhooks — lives in odusite_base.
  • site/ — the Astro frontend: hybrid SSR on Cloudflare Workers, grouped into build-time blocks and styled entirely through a theme layer.

Every request from the site to Odoo carries X-Odusite-Token; portal actions add a user JWT in Authorization: Bearer. Public reads are filtered exactly like the stock website controllers (is_published, multi-website domain, publish date), so no unpublished record ever leaks.

Start here