Public documentation for Kopexa’s ISMS/GRC platform (ISO 27001, GDPR, DORA, NIS2, …). It includes end‑user guides and developer docs. Built with Next.js App Router, Fumadocs, TypeScript, and Tailwind CSS.
- Website: http://kopexa.com
- Documentation: https://docs.kopexa.com
Development server:
pnpm install
pnpm devOpen http://localhost:3000 to view the site.
- Environment variables (common):
NODE_ENV— production/developmentNEXT_TELEMETRY_DISABLED— set to1to disable Next telemetryPORT— defaults to3000(container)HOSTNAME— defaults to0.0.0.0(container)- Optional:
NEXT_PUBLIC_SITE_URLfor absolute links if needed
- i18n: see
src/lib/i18n.tsto add or adjust supported languages. - Content source and schemas:
source.config.ts(Fumadocs MDX collections and frontmatter/meta schemas).
src/app/(home): Landing and marketing pagessrc/app/[lang]/docs: Documentation routes (Fumadocs)content/: MD/MDX content for the docssrc/components/: UI components for the docs sitesrc/lib/: Shared utilities (i18n, layout, sources)
Key files:
source.config.ts: Fumadocs source + schemasrc/lib/layout.shared.tsx: Shared layout options (links, nav)src/app/api/search/route.ts: Search APIsrc/app/api/healthz/route.ts: Liveness probe (Kubernetes)src/app/api/readyz/route.ts: Readiness probe (Kubernetes)
This repo includes a production-ready Dockerfile using Next.js standalone output.
Build locally:
docker build -t ghcr.io/<owner>/<repo>:dev .Run the container:
docker run --rm -p 3000:3000 ghcr.io/<owner>/<repo>:devThe container listens on port 3000 and binds to 0.0.0.0. Entry command runs node server.js produced by Next.js standalone build.
docs.kopexa.com is deployed automatically on every push to main by Coolify (self-hosted on the Kopexa OVH cluster). Coolify watches this repository, builds the Dockerfile, and rolls the container out. A merge to main is sufficient to go live; no GitHub release is required.
The Docker image:
- Standalone Next.js build,
EXPOSE 3000, listens on0.0.0.0 - Health endpoints (used by Coolify):
- Liveness:
GET /api/healthz - Readiness:
GET /api/readyz
- Liveness:
GitHub Actions in this repo are advisory only. They give developers fast feedback but do not gate or trigger the production deploy (Coolify does that, see above).
- PR checks:
.github/workflows/pr.ymlruns lint, typecheck and build (.github/workflows/lint.yml,.github/workflows/build.yml) - Release Docker image to GHCR (versioned):
.github/workflows/release.yml, triggered when a GitHub Release is published via release-please - Security scan:
.github/workflows/docker-security-scan.yml - Versioning: SemVer via release-please + GitHub Releases/Tags. The published image at
ghcr.io/kopexa-grc/docs:<version>exists for downstream consumers; it is not whatdocs.kopexa.comruns.
We welcome fixes and improvements to keep docs accurate and helpful. For larger changes, please open an issue or draft PR first.
- Branch naming:
feat/...,fix/...,chore/...,docs/... - Commits: Conventional Commits (e.g.,
docs: update spaces guide) - Lint/Format:
pnpm lintandpnpm format(Biome) - Typecheck:
pnpm typecheck(TypeScript) - Local tasks: see
Taskfile.dist.yml(task dev,task lint,task docker:build IMAGE_TAG=...)
Kopexa Docs are powered by:
- Next.js (App Router) — https://nextjs.org/
- Fumadocs — https://fumadocs.dev/
- React — https://react.dev/
- TypeScript — https://www.typescriptlang.org/
- Tailwind CSS — https://tailwindcss.com/
- Lucide Icons — https://lucide.dev/
Thanks to the FOSS community for making this stack possible.
- Code (application, components, config): MIT License
- Content under
./content/: Proprietary — see content/LICENSE
- More multi-language content
- Additional framework guides (TISAX, ISO 27017, …)
- Search improvements and content structure refinements