OpenCV-style API reference, generated by Doxygen with the doxygen-awesome-css theme. Hosted on Cloudflare Pages.
docs/
├── Doxyfile # Doxygen config — input, theme, options
├── build.sh # one-shot: fetch theme, run doxygen → docs/site/html/
├── coverage.md # canonical Pine v6 coverage map (also referenced as a page)
├── pages/ # narrative markdown pages
│ ├── index.md # @mainpage — landing
│ ├── getting-started.md
│ ├── install.md
│ ├── integration-cmake.md
│ ├── lifecycle.md
│ ├── report-schema.md
│ ├── configuration.md
│ ├── magnifier.md
│ ├── timeframes.md
│ ├── ffi-python.md
│ ├── tutorial-macd.md
│ ├── abi-stability.md
│ └── coverage.md
├── _theme/
│ ├── header.html # custom HTML header
│ ├── footer.html
│ ├── custom.css # PineForge color overrides on top of doxygen-awesome
│ └── doxygen-awesome/ # fetched at build time (gitignored)
└── site/ # build output (gitignored)
└── html/
# Prereqs: doxygen, graphviz
brew install doxygen graphviz # macOS
# sudo apt install doxygen graphviz # Linux
bash docs/build.sh
python3 -m http.server -d docs/site/html 8080
# open http://localhost:8080/The first build fetches doxygen-awesome-css v2.3.4 (~150 KB) into
docs/_theme/doxygen-awesome/. Subsequent builds skip the download.
- Add Doxygen-style comments (
/** ... */) to public C ABI declarations ininclude/pineforge/pineforge.h— auto-extracted into the API reference. - Add narrative markdown pages under
docs/pages/. Register them inDoxyfile'sINPUTlist. Use{#anchor}after the# Titleso other pages can@ref anchorthem. - The mainpage is
pages/index.md(declared viaUSE_MDFILE_AS_MAINPAGE).
The .github/workflows/docs.yml workflow builds and deploys on every
push to main and every v* tag.
-
Create a Cloudflare Pages project (any name; default
pineforge-docs). Use Direct Upload as the connection method — no Git integration needed; the workflow pushes via Wrangler. -
In the repo, add these secrets and (optionally) a variable:
Kind Name Value Secret CLOUDFLARE_API_TOKENToken with Cloudflare Pages: Edit permission (create here). Secret CLOUDFLARE_ACCOUNT_IDFound in the right sidebar of the Cloudflare dashboard. Variable CF_PAGES_PROJECTPages project name. Optional — defaults to pineforge-docs. -
Push to
main(or run Actions → docs → Run workflow). The site appears athttps://<project>.pages.dev/.
Add a CNAME or A record in Cloudflare DNS, then map it under the Pages project's Custom domains tab. No build-side changes needed.
If you'd rather host on GitHub Pages instead, swap the
cloudflare/wrangler-action step for actions/deploy-pages@v4 plus
actions/upload-pages-artifact@v3 — the build output (docs/site/html)
is identical.