* Update documentation for ClassroomIO: change Fumadocs to Blume, revise MDX format conventions, and clarify sidebar navigation requirements. * docs: update README and scripts for improved preview and error handling * docs: update Discord link in configuration and documentation * docs: add token-auth route and update documentation formatting * Fix formatting in auto-comment-issues.yml * Fix JSON syntax by adding a comma * fix(docs): declare Blume's Astro build deps so Cloudflare build resolves them blume build generates an Astro project under apps/docs/.blume/ that imports astro, @astrojs/mdx, @tailwindcss/vite, tailwindcss, @tailwindcss/typography, @shikijs/twoslash and @scalar/astro. Under pnpm's isolated node_modules these are nested inside blume and not resolvable from the docs app, so a clean --frozen-lockfile build (Cloudflare) fails at 'Cannot find module astro/config'. Declare them directly in @cio/docs, pinned to blume's resolved versions. * refactor(docs): update API reference paths and documentation for clarity * fix: change platofrm url to docs home page * Refactor documentation for self-hosting ClassroomIO - Removed the Supabase Cloud setup guide as it is no longer needed. - Updated the Enterprise SSO documentation to include a reference link for SSO & licensing. - Added new documentation for Content Security Policy (CSP) configuration. - Created a new section for configuring SMTP for email notifications. - Introduced a comprehensive configuration index for self-hosted ClassroomIO, detailing environment variables and their usage. - Added documentation for optional integrations including Google OAuth, OpenAI, and Unsplash. - Documented the generation and usage of required secrets for ClassroomIO. - Created a section for SSO & licensing, detailing the requirements for Enterprise features. - Added object storage configuration documentation, covering both bundled MinIO and external S3-compatible services. - Documented versioning and upgrade processes for ClassroomIO. - Updated the Coolify and Docker self-hosting guides to streamline configuration references and upgrade instructions. - Enhanced the Railway self-hosting guide with links to relevant configuration sections. - Updated token authentication documentation to reference SSO & licensing. * Add comprehensive guides for ClassroomIO features and functionalities - Introduced a new guide for the Student Dashboard, detailing navigation and features available to students. - Added a guide on using Tags for organizing and filtering courses within ClassroomIO. - Created a guide on how to take attendance in courses, including marking attendance and related functionalities. - Developed a Terminology guide to clarify key terms used throughout ClassroomIO. - Implemented a Token Auth guide for signing users into ClassroomIO from external applications using JWT. - Added instructions for using math in the editor with LaTeX support. - Created a guide for customizing the welcome email sent to students upon enrollment in courses. - Added a guide explaining what ClassroomIO is and its key features. - Updated the home documentation to provide a clearer overview of ClassroomIO and its resources. - Enhanced self-hosted configuration documentation with a new guide for deploying ClassroomIO on Dokploy. - Updated links in the self-hosted configuration documentation for better navigation. - Added new images to support the Dokploy deployment guide. - Updated asset packaging script to handle redirects for the new guide structure. - Fixed footer link to point to the correct Getting Started guide. * chore: uprage version * feat(docs): add DigitalOcean deployment guide and flatten guides structure - Add a guide for deploying ClassroomIO on DigitalOcean using Docker Compose and Caddy for automatic HTTPS. - List DigitalOcean as a deployment option in the self-hosting index. - Move guides out of content/docs/guides into content/docs (student-dashboard, tags, terminology, token-auth, what-is-classroomio, audience, cohorts, community, course, enterprise-sso, mcp, organization, quickstart/*). - Rename home.mdx to index.mdx. - Update package-assets script to emit redirects for the old guides paths. --------- Co-authored-by: Rotimi Best <[email protected]>
docs
The ClassroomIO documentation site, built with Blume (Astro + Vite). Served at classroomio.com/docs.
Requirements
Node >= 22.12 (see .nvmrc). The rest of the monorepo is still on Node 20, so switch versions
before working here:
nvm use
Develop
pnpm dev # fetches the OpenAPI spec, then starts the dev server
pnpm build # builds to dist/, then packages to build/ for the worker
pnpm preview # builds, then serves through the worker on :4173
pnpm validate # checks internal links and heading anchors
Use pnpm preview before deploying anything that touches routing. pnpm dev serves pages straight
from Blume and never sees Cloudflare's asset server, so it cannot show you the _redirects rules, the
404 page, or the trailing-slash handling — only preview runs the site the way production does.
How it's served
The site is fully static. classroomio.com/docs/* is proxied by the marketing site
(apps/website/src/hooks.server.ts) to the cio-docs worker, which serves the build as static
assets — there is no server-side rendering.
Two things follow from being mounted at /docs:
- Links are authored root-relative (
/course-enrollment). Blume prepends the base at build time. - Images must be written with the base (
/docs/certificates-rules.webp). Blume deliberately does not rebase images, so an unprefixed path would 404.
scripts/package-assets.mjs moves dist/ under build/docs/ to match the served path and writes the
_redirects file (/docs → /docs/home, and the legacy /docs/how-to-guides/* → /docs/*).
API reference
/docs/api is the Scalar API reference, rendered at build time (the old /docs/api/reference path
301s here). scripts/fetch-openapi.mjs pulls the spec from R2 and injects the bearer auth scheme via
@cio/utils/openapi/public-api. Because it is static, a new spec reaches the site only on a rebuild —
.github/workflows/upload-openapi-spec.yml triggers one automatically.