No description
Find a file
msa46 aa28e1ff21
Some checks failed
Deploy to GitHub Pages / build (push) Has been cancelled
Deploy to GitHub Pages / deploy (push) Has been cancelled
Open exam PDFs in new tabs
2026-09-18 09:20:36 +02:00
.github/workflows fix: resolve final Starlight migration review 2026-08-02 18:59:28 +02:00
docs docs: plan compact programme switch 2026-08-16 11:23:43 +02:00
public feat: add consent-gated Matomo controller 2026-08-15 15:03:00 +02:00
scripts fix: verify programme routes across deployment bases 2026-08-15 21:09:25 +02:00
src Open exam PDFs in new tabs 2026-09-18 09:20:36 +02:00
tests Open exam PDFs in new tabs 2026-09-18 09:20:36 +02:00
to-be-studied docs: record useful guides publication 2026-08-11 18:57:08 +02:00
.env.example docs: add deployment and maintainer workflow 2026-08-02 18:15:40 +02:00
.gitignore build: scaffold Incognito Starlight site 2026-08-02 16:09:52 +02:00
.nvmrc build: scaffold Incognito Starlight site 2026-08-02 16:09:52 +02:00
astro.config.mjs Open exam PDFs in new tabs 2026-09-18 09:20:36 +02:00
netlify.toml docs: add deployment and maintainer workflow 2026-08-02 18:15:40 +02:00
package-lock.json fix: verify programme routes across deployment bases 2026-08-15 21:09:25 +02:00
package.json fix: verify programme routes across deployment bases 2026-08-15 21:09:25 +02:00
README.md feat: integrate privacy-first Matomo analytics 2026-08-15 15:06:36 +02:00
tsconfig.json build: scaffold Incognito Starlight site 2026-08-02 16:09:52 +02:00

Incognito Wiki

This repository contains the public Incognito student wiki, built as a static site with Astro and Starlight. Forgejo hosts the authoritative private repository. Local commands are the source of truth: the project does not depend on Forgejo CI.

Local development

Use Node.js 22.12 or newer and the npm version bundled with Node. Hosted builds are pinned to Node.js 22.22.3. Install dependencies from package.json with:

npm install

Use the checked-in lockfile for a reproducible clean install with npm ci.

  • npm run dev starts the local development server.
  • npm run check runs Astro validation and the Node test suite.
  • npm run verify runs all checks, the content audit, a production build, and the internal-link check.

Maintaining content

Published pages live in src/content/docs/. Add or edit Markdown and MDX there. Navigation is explicit, so add, remove, or move the matching entry manually in src/config/sidebar.mjs whenever a published page changes.

Use these notice conventions exactly for migrated source material:

Historical or potentially outdated information:

:::caution[Historical information]
This information originated in the previous wiki and may be outdated.
:::

An intentionally empty page:

:::note[Awaiting content]
This page is awaiting content.
:::

The to-be-studied/ directory is research material, not publication content. Never move it or its contents into src/content/docs/ or public/ without a separate editorial review.

Reviewing the migration

Read docs/migration-report.md when reviewing migrated content. Its source inventory maps every selected DokuWiki source to its destination and records outdated notices, repaired or removed links, media decisions, and significant copy edits. Review the dedicated summaries after the table for unresolved or time-sensitive material, and update the relevant row and summary whenever a migration decision changes.

Deployment

SITE is the public origin and BASE is the path prefix. They are public build settings, not secrets; .env.example documents local defaults. Keep credentials and tokens out of these values and out of the repository.

For a custom domain hosted at its root:

SITE=https://wiki.example.org BASE=/ npm run build

For repository-subpath hosting such as GitHub Pages:

SITE=https://example.github.io BASE=/Incognito-Wiki npm run build

Netlify reads netlify.toml, runs npm run build, and publishes dist. Configure SITE and BASE as environment values for the selected production hostname and path.

The removable workflow at .github/workflows/deploy.yml optionally deploys the GitHub mirror to Pages after a push to main or a manual dispatch. Set the public repository variables SITE_URL and BASE_PATH on GitHub. The workflow is GitHub-specific; Forgejo ignores it, and removing the workflow or netlify.toml does not affect local development or verification.

Matomo analytics

The wiki uses self-hosted Matomo only after a visitor explicitly accepts analytics. The client is loaded from https://analytics.msvincognito.nl/, uses site ID 1, and disables analytics cookies. Visitors can decline without losing functionality and can reopen Privacy settings to withdraw consent.

Before deploying analytics changes, the Matomo administrator must verify:

  • IP anonymization is enabled;
  • raw logs and analytics reports use documented, proportionate retention periods;
  • administrator access is restricted and reviewed;
  • analytics data is not reused for advertising or cross-site profiling; and
  • the MSV Incognito privacy policy accurately states the controller, purpose, data categories, retention, withdrawal process, and data-subject rights.

The frontend consent gate is only one part of GDPR and ePrivacy compliance. Revisit the legal and server configuration when Matomo features or processing purposes change.