The VeriPath website uses a static site architecture powered by Decap CMS for content management and nginx for serving.
| Component |
Technology |
Purpose |
| Content editor |
Decap CMS v3 |
Browser-based markdown editor for staff |
| Content storage |
Forgejo (Git) |
All content stored as markdown files with YAML frontmatter |
| Rendering |
Node.js build script (build.mjs) |
Converts markdown → static HTML at deploy time |
| Web server |
nginx |
Serves static HTML, proxies API/auth services |
| Auth |
Keycloak + Node.js auth service |
OIDC login for staff, nginx auth_request gate |
| API proxy |
Node.js proxy server |
Translates Decap CMS proxy protocol → Forgejo API |
- No runtime framework — Nuxt was removed. All pages are pre-built HTML.
- Content in Git — Every publish creates a commit in Forgejo. Full history, rollback, review.
- Auth-gated areas —
/admin/, /internal/, /guides/ require Keycloak login.
- Auto-deploy — Forgejo push webhook triggers
/opt/deploy-veripath-site.sh.
| Collection |
Path |
Access |
| Pages |
content/pages/ |
Public |
| Policies (public) |
content/policies/ with visibility: public |
Public |
| Policies (internal) |
content/policies/ with visibility: internal |
Staff only |
| Blog |
content/blog/ |
Public |
| Business Plan |
content/business-plan/ |
Staff only |
| User Manuals |
content/user-manuals/ |
Any authenticated user |
| User Guide |
content/user-guide/ |
Public |
Editor (browser) → Decap CMS → /api/decap-proxy (proxy server) → Forgejo API
↓
(commit pushed)
↓
Forgejo webhook
↓
deploy-veripath-site.sh
↓
nginx serves updated HTML