Source for primmel.org — the public website for Primmel, a typed, machine-readable language for representing SMART standards (ISO, BSI, OIML) as executable programs.
Built with Astro 7 + Vue 3 + Tailwind 4.
npm install
npm run dev # dev server (auto port)
npm run build # build + pagefind + OG images → dist/
npm run preview # preview production build| Command | Description |
|---|---|
npm run dev |
Start dev server |
npm run build |
Build site + search index + OG images |
npm run preview |
Preview the production build locally |
npm run check |
TypeScript + Astro type checking (0 errors) |
npm test |
Vitest unit specs (33 tests) |
npm run check:links |
Validate all internal links (28 pages) |
npm run check:a11y |
axe-core WCAG 2 AA accessibility audit |
npm run test:visual |
Playwright visual regression tests |
- Static site — Astro 7 with content collections (Zod schemas)
- Vue islands — ScrollProgress, ThemeToggle, SearchButton, CodeEnhancements, ModelBrowser
- Tailwind 4 — CSS-first @theme tokens, single
app.cssentry point - Model-driven —
.prlfiles parsed at build time → process flow SVGs, model trees - Zero-JS by default — Vue islands hydrate selectively (
client:load,client:idle,client:visible)
See CLAUDE.md for the full architecture guide.
Three typed collections with derived navigation (no hardcoded sidebar config):
| Collection | Pages | Content |
|---|---|---|
architecture |
11 | Overview + 5 pillars + 5 audiences |
examples |
7 | 6 model walkthroughs + index |
docs |
7 | Language reference |
src/
├── content/ Typed markdown collections
├── layouts/ BaseLayout → DocLayout / PageLayout (OCP)
├── components/ nav/, ui/, home/, diagrams/
├── lib/ collections, navigation, model-parser, page-helpers, reading-time
├── styles/ app.css (single entry: Tailwind + global styles)
├── pages/ File-based routes
└── consts.ts Site-wide config (SSoT)
| Layer | Tool | Coverage |
|---|---|---|
| Unit | Vitest | model-parser, reading-time, collections (33 tests) |
| Type safety | astro check | 0 errors, 0 warnings, 0 hints |
| Accessibility | axe-core | 28 pages pass WCAG 2 AA |
| Link integrity | Custom script | All internal links validated |
| Contract | Playwright | 28 pages × status/title/OG checks |
| Visual | Playwright | 10 pages × light/dark baselines |
Push to main triggers .github/workflows/deploy-pages.yml:
- verify — type check + unit specs + build
- build — Astro build → GitHub Pages artifact
- deploy — publish to
primmel.org
See CONTRIBUTING.md for how to add pages, customize theming, and use Vue islands.
Copyright © Ribose. All rights reserved.