Appearance
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project overview
Relaton.org is the documentation website for the Relaton project — a unified bibliographic data model and tooling for citing technical standards (ISO, IEC, ITU, NIST, IEEE, etc.). The site is built with VitePress + Vue 3 + TypeScript and deployed to GitHub Pages.
Build and serve commands
bash
# Install dependencies
npm install
# Dev server with hot reload
npm run dev
# Production build
npm run build
# Preview production build
npm run previewContent architecture
Content is written in Markdown (.md), organized by section directories:
| Section | Directory | Purpose |
|---|---|---|
| Home | index.md | Landing page with <HomePage /> component |
| Model | model/ | Information model docs (16 pages: overview, 14 entities, diagrams) |
| Flavors | flavors/ | Citation guides per SDO — dynamic routes via [flavor].paths.ts |
| Specs | specs/ | Specification documents (relaton-yaml, relaton-render, cli, ruby, asciibib) |
| Software | software/ | Gem pages — dynamic routes via [gem].paths.ts |
| Blog | blog/ | Blog posts with <BlogByline /> component |
| API | api/index.md | Interactive API demo with <ApiDemo /> |
| About | about.md | About page |
Key configuration
.vitepress/config.ts— VitePress config: nav, sidebars, head, themeConfig, sitemap.vitepress/theme/index.ts— Theme entry point, registers all Vue components.vitepress/theme/custom.css— Swiss Style design system (CSS custom properties).vitepress/data/types.ts— TypeScript interfaces (Flavor, SoftwareGem, BlogPost).vitepress/data/flavors.ts— 27 flavor entries with metadata.vitepress/data/software.ts— 32 gem entries with metadata.vitepress/posts.data.ts— Blog content loader usingcreateContentLoader
Vue components
All in .vitepress/theme/components/:
HomePage.vue— Landing page with hero, stats, ISO 690 mapping, flavor grid, blog previewFlavorGrid.vue— Searchable/filterable grid of supported organizations (used on home and /flavors/)FlavorPage.vue— Dynamic flavor detail page with citation guide contentSoftwareGrid.vue— Searchable/filterable grid of all gemsSoftwarePage.vue— Dynamic gem detail page with installation and quick startBlogIndex.vue— Blog listing pageBlogByline.vue— Author/date display on blog postsModelDiagram.vue— UML diagram display componentApiDemo.vue— Interactive Relaton API demo
Dynamic routes
flavors/[flavor].paths.ts— Generates 27 flavor pages fromflavors.ts, loads citation guide content fromflavors/content/{id}.mdsoftware/[gem].paths.ts— Generates 32 gem pages fromsoftware.ts
CI/CD
Two GitHub Actions workflows:
- build_deploy.yml — builds with VitePress (
npm run build) and deploys to GitHub Pages on push tomain - links.yml — builds site then runs lychee link checker on
.vitepress/dist/**/*.html
Adding a new Relaton flavor
- Add an entry to
.vitepress/data/flavors.ts(withid,label,fullName,category,gem,sources,repoUrl) - Add a corresponding entry to
.vitepress/data/software.ts(withid,name,displayName,repoUrl,description,category,flavorId) - Create a citation guide in
flavors/content/<id>.md(ifcitationGuide: true) - Add any sidebar links in
.vitepress/config.tsif needed