Skip to content

Documentation Hosting

Status: Active. Last updated April 13, 2026. Purpose: SOC 2 evidence for CC6.1 (Logical Access), CC6.6 (System Boundaries), CC7.1 (Infrastructure Management)


Overview

Internal documentation is hosted on Cloudflare Pages with Cloudflare Access (Zero Trust) for email-gated authentication. Docs are not public. Only approved team members can access them via one-time PIN email verification.

URL: https://docs.askflorence.health


Architecture

ComponentServicePurpose
Static site generatorVitePress 1.6.xBuilds markdown to static HTML with search + Mermaid
HostingCloudflare PagesDeploys from GitHub repo, global CDN
AuthenticationCloudflare Access (Zero Trust)Email-gated one-time PIN access
DNSCloudflareCNAME for docs.askflorence.health
SourceGitHub repo docs/ directorySingle source of truth, version controlled

Deployment

Automatic. Cloudflare Pages is connected to the GitHub repo. Every push to main triggers a rebuild and deploy.

SettingValue
GitHub repoaskflorencehealth/ask-florence
Production branchmain
Build commandcd docs && npm install && npm run build
Build output directorydocs/.vitepress/dist
Framework presetNone
Auto-deployYes (on every push to main)

No manual deployment needed. Edit a markdown file, push to main, docs update automatically within ~1 minute.

Access Control

Cloudflare Access Application

SettingValue
Application nameAskFlorence Docs
Application URLdocs.askflorence.health
TypeSelf-hosted
Session duration24 hours
Authentication methodOne-time PIN (email-based)
Application ID87b977b3-56f2-42fb-a680-e41643abbae4
CreatedApril 13, 2026

Access Policy

SettingValue
Policy nameAllowed team
ActionAllow
Include ruleEmails
Allowed emailstaha@askflorence.health, ian@askflorence.health, taha.abbasi@abbasiindustries.com

How Access Works

  1. User visits docs.askflorence.health
  2. Cloudflare Access intercepts the request
  3. User sees a login screen asking for their email
  4. If the email is in the allowed list, a one-time 6-digit PIN is sent
  5. User enters the PIN
  6. Access is granted for 24 hours (session-based)
  7. After 24 hours, re-authentication required

Adding New Users

  1. Go to Cloudflare Zero Trust dashboard (one.dash.cloudflare.com)
  2. Access controls > Policies > "Allowed team" > Configure
  3. Add the new email address to the Include > Emails list
  4. Save
  5. Update this document

Removing Users

  1. Remove their email from the Allowed team policy
  2. Their existing session expires within 24 hours (or revoke immediately via Access > Logs)
  3. Update this document

Local Development

To run docs locally:

bash
cd docs
npm install
npm run dev

Opens at http://localhost:5173 with hot reload, search, and Mermaid rendering.

To build locally (verify before pushing):

bash
cd docs
npm run build

Output goes to docs/.vitepress/dist/ (gitignored).

Technical Details

VitePress Configuration

  • Config: docs/.vitepress/config.ts
  • Dependencies: docs/package.json (separate from main app)
  • Mermaid: via vitepress-plugin-mermaid
  • Search: VitePress built-in local search (no external service)
  • Theme: Default VitePress theme with AskFlorence brand colors

Node Version

VitePress requires Node 18+. The main Next.js app runs on Node 25. Use fnm (Fast Node Manager) to switch if needed:

bash
fnm use 22   # for docs
fnm use 25   # for main app (default)

Known Limitations

  • vite and esbuild have moderate Dependabot alerts (dev-only build tools, not in production app). Dismissed as tolerable risk until VitePress 2.0 stable releases with vite 6+.
  • Email delivery to new askflorence.health Google Workspace may be delayed (domain reputation building). Use personal emails as fallback in the Access policy.

SOC 2 Control Mapping

ControlEvidence
CC6.1 (Logical Access)Email-gated access, named user policy, session expiry
CC6.3 (Access Removal)Documented removal process, 24-hour session max
CC6.6 (System Boundaries)Docs isolated on separate subdomain with separate auth
CC7.1 (Infrastructure)Hosting configuration documented, auto-deploy from repo
CC8.1 (Change Management)Git-based deployment, all changes tracked in commit history

Change Log

DateChangeBy
April 13, 2026Migrated from Jekyll/GitHub Pages to VitePress/Cloudflare PagesTaha Abbasi
April 13, 2026Added Cloudflare Access (Zero Trust) email-gated authTaha Abbasi
April 13, 2026Added taha.abbasi@abbasiindustries.com as fallback emailTaha Abbasi

AskFlorence Internal Documentation. Not for public distribution.