Documentation and blog website built with Next.js and Fumadocs.
- Node.js 22 or higher recommended
- npm
- Install dependencies:
npm install- Run the development server:
npm run devThe site will be available at http://localhost:3000.
npm run dev- Start development servernpm run build- Build for productionnpm start- Start production servernpm run typecheck- Check TypeScriptnpm run test:blog- Check blog metadata, sharing images, and accessible results against a running server (defaulthttp://localhost:3000; override withBLOG_TEST_URL)npm run test:blog:build- After a production build, check that the standalone deployment contains the sharing-image fonts and prerendered PNGsnpm run test:seo- Check sitemap and crawler discovery against a running server (defaulthttp://localhost:3000; override withSEO_TEST_URL)
- Documentation: Add MDX files to
content/docs/ - Blog posts: Add MDX files to
content/blog/
app/(home)/blog/: routes, page layout/styles, listing components, and image endpointscomponents/blog/: MDX figures and the shared expandable figure componentlib/blog/: sharing-image renderer, metadata helpers, and shared configurationlib/site.ts: canonical public site URLcontent/blog/_data/: article data shared by figures and accessible tablespublic/blog/jev/: the five generated SVGs used by the Jev articlescripts/blog/: smoke tests and article-specific figure tooling
For Python setup, figure regeneration, and the non-mutating --check command,
see Jev figure tooling.
Blog metadata and 1200×630 sharing images are generated from article frontmatter.
seoDescription optionally overrides the search/social description without
changing the visible article subtitle. Results tables remain screen-reader
accessible without adding another visible results section.
Article sharing images are prerendered during the build. The renderer's Geist
font files are explicitly included in deployment traces in next.config.mjs.
Use npm run build && npm run test:blog:build to catch missing deployment assets;
a development server or next start with full dependencies can hide these errors.
app/sitemap.ts generates /sitemap.xml with public landing pages, all blog
articles, and the current problem catalog. Blog and catalog entries update
automatically on deployment. Cohort and contributor pages, redirects, disabled
documentation, image endpoints, and utility pages are excluded. Individual
problem pages remain included. No artificial modification dates are emitted.
app/robots.ts serves /robots.txt, allows public pages to be crawled, excludes
the API routes, and advertises the sitemap. After deploying, submit
https://www.sregym.com/sitemap.xml in the existing Google Search Console property.
The sitemap aids discovery; it does not guarantee indexing or rankings.