Skip to content

Commit 1ef6f6f

Browse files
authored
Merge pull request #14 from itk-dev/feature/update-readme-and-claude-md
docs: add README and update CLAUDE.md
2 parents 12f692b + 08e4834 commit 1ef6f6f

2 files changed

Lines changed: 123 additions & 33 deletions

File tree

CLAUDE.md

Lines changed: 53 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,44 +10,61 @@ Research publishing site for ITKdev, built with VitePress and deployed to GitHub
1010
## Structure
1111

1212
```
13-
docs/ # VitePress source content root
14-
docs/.vitepress/config.mts # Site config (title, nav, search, meta)
15-
docs/.vitepress/sidebar.mts # Sidebar and nav definitions
16-
docs/.vitepress/theme/index.ts # Custom theme entry
17-
docs/.vitepress/theme/custom.css # ITK Dev brand colors + custom styles
18-
docs/.vitepress/theme/DocLayout.vue # Layout with author info + password gate
19-
docs/.vitepress/theme/PasswordGate.vue # Client-side password protection component
20-
docs/.vitepress/theme/usePasswordAuth.ts # Auth composable (SHA-256 + sessionStorage)
21-
docs/index.md # Landing page (VitePress home layout)
22-
docs/about.md # About ITKdev Research
23-
docs/public/robots.txt # SEO control (noindex)
24-
docs/public/projects/<name>/mocks/ # Interactive HTML prototypes (static assets)
25-
docs/projects/<project-name>/ # Each research project
26-
index.md # Main report
27-
mocks.md # Mocks listing page
28-
images/ # Screenshots and figures
29-
package.json # Node dependencies
30-
docker-compose.yml # Docker dev environment
31-
Taskfile.yml # Task automation (dev, build, lint)
32-
.github/workflows/deploy.yml # Auto-deploy on push to main
33-
.github/workflows/verify_build.yml # PR build verification
13+
docs/ # VitePress source content root
14+
docs/.vitepress/config.mts # Site config (title, nav, search, base path, meta)
15+
docs/.vitepress/sidebar.mts # Sidebar and nav definitions per project
16+
docs/.vitepress/theme/index.ts # Custom theme entry (extends default)
17+
docs/.vitepress/theme/custom.css # ITK Dev brand colors + custom styles
18+
docs/.vitepress/theme/DocLayout.vue # Layout with author info, password gate, custom home features
19+
docs/.vitepress/theme/PasswordGate.vue # Client-side password protection component
20+
docs/.vitepress/theme/HomeFeatures.vue # Custom home page feature cards with "Last edited" dates
21+
docs/.vitepress/theme/projectDates.data.js # Build-time data loader — reads git timestamps per project
22+
docs/index.md # Landing page (VitePress home layout with feature cards)
23+
docs/about.md # About ITKdev Research
24+
docs/public/robots.txt # SEO control (noindex)
25+
docs/public/projects/<name>/mocks/ # Interactive HTML prototypes (static assets)
26+
docs/projects/<project-name>/ # Each research project
27+
index.md # Main report / overview
28+
mocks.md # Mocks listing page
29+
images/ # Screenshots and figures (optional)
30+
package.json # Node dependencies (VitePress + Mermaid)
31+
.nvmrc # Node version pin (22 LTS)
32+
docker-compose.yml # Docker dev environment (Node + Nginx + Traefik)
33+
Taskfile.yml # Task automation (dev, build, lint)
34+
.github/workflows/deploy.yml # Auto-deploy on push to main
35+
.github/workflows/verify_build.yml # PR build verification
3436
```
3537

38+
## Current projects
39+
40+
| Folder | Project | Protected |
41+
|--------|---------|-----------|
42+
| `climate-nudging` | Climate Awareness Nudging | No |
43+
| `salary-negotiation` | Lønforhandlingssystem | Yes |
44+
| `agentic-orchestration` | Agentic Orchestration Studio | No |
45+
| `deltag-aarhus` | deltag.aarhus.dk | No |
46+
| `wcag-contrast-checker` | WCAG Contrast Checker | No |
47+
| `deltag-aarhus-timeline` | Deltag Aarhus — Projekttidslinje | No |
48+
| `book-aarhus` | Book Aarhus | No |
49+
| `opkraevningsoverblik` | Opkrævningsoverblik | No |
50+
3651
## Conventions
3752

3853
- All content is written in Markdown
39-
- Interactive mocks are self-contained HTML files stored in `docs/public/projects/<name>/mocks/` so VitePress serves them as raw static assets
40-
- Images are PNG screenshots stored alongside project markdown in `images/`
41-
- Every project document starts with a project label: `<small>**Project:** Project Name</small>`
54+
- Interactive mocks are self-contained HTML files in `docs/public/projects/<name>/mocks/` — VitePress serves them as raw static assets without processing
55+
- Every project document starts with: `<small>**Project:** Project Name</small>`
4256
- Use VitePress custom containers for callouts: `::: info Title` / `::: warning Title`
43-
- Mock links use absolute paths from the public root: `/projects/<name>/mocks/file.html`
44-
- Mock buttons use the `mock-button` CSS class: `<a href="..." class="mock-button" target="_blank">Text ↗</a>`
57+
- Mock links must include the base path prefix and open in a new tab:
58+
```html
59+
<a href="/research-projects/projects/<name>/mocks/file.html" class="mock-button" target="_blank">Text ↗</a>
60+
```
4561
- Theme uses ITK Dev brand colors (teal/cyan) with dark/light mode
4662
- Site has `noindex, nofollow` meta tags and `robots.txt` to prevent crawling
63+
- Home page feature cards automatically show "Last edited" dates from git history
4764

4865
## Password-protecting a project
4966

50-
Add frontmatter to any markdown file to require a password:
67+
Add frontmatter to every markdown file in the project:
5168

5269
```yaml
5370
---
@@ -59,34 +76,37 @@ passwordGroup: "project-name"
5976

6077
Generate the hash: `echo -n "your-password" | shasum -a 256 | cut -d ' ' -f 1`
6178

62-
Pages sharing the same `passwordGroup` only prompt once per browser session.
79+
Pages sharing the same `passwordGroup` only prompt once per browser session. The password gate hides the sidebar and outline while locked.
6380

64-
**Note:** This is client-side protection only. Content is in the HTML source. Adequate for casual access control, not for sensitive data.
81+
**Note:** Client-side protection only. Content is in the HTML source. Adequate for casual access control, not for sensitive data.
6582

6683
## Adding a new research project
6784

6885
1. Create `docs/projects/<project-name>/` with at least an `index.md`
6986
2. Add `<small>**Project:** Project Name</small>` at the top of each document
70-
3. Add the project sidebar and nav entries in `docs/.vitepress/sidebar.mts`
71-
4. Add a feature card on `docs/index.md` (VitePress features array in frontmatter)
87+
3. Add a sidebar section in `docs/.vitepress/sidebar.mts`
88+
4. Add a feature card in `docs/index.md` frontmatter (the `link` field must match the sidebar path — the `projectDates.data.js` loader uses it to look up git timestamps)
7289
5. If the project has mocks:
7390
- Create a `mocks.md` listing page in the project folder
7491
- Place mock HTML files in `docs/public/projects/<project-name>/mocks/`
75-
- Link to mocks with absolute paths: `/projects/<project-name>/mocks/file.html`
92+
- Link to mocks with the base path prefix: `/research-projects/projects/<name>/mocks/file.html`
93+
- Use `target="_blank"` on all mock links to bypass VitePress's client-side router
94+
6. Update `CHANGELOG.md`
7695

7796
## Building locally
7897

7998
### With Docker (recommended)
8099

81100
```bash
82-
task dev # Start dev server via Docker + Traefik
101+
task dev # Start dev server via Docker + Traefik at http://research.local.itkdev.dk
83102
task build # Build static site
84103
task open # Open in browser
85104
```
86105

87106
### Without Docker
88107

89108
```bash
109+
nvm use # Switch to Node 22 (from .nvmrc)
90110
npm install
91111
npm run docs:dev # Dev server at http://localhost:5173
92112
npm run docs:build # Build to _site/

README.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# ITKdev Research
2+
3+
Research publishing site for [ITKdev](https://github.com/itk-dev) — a development team at Aarhus Kommune.
4+
5+
**Live site:** https://itk-dev.github.io/research-projects/
6+
7+
## What is this?
8+
9+
We publish research, prototypes, and evaluations on topics relevant to our work. Each project includes written findings and interactive HTML mocks that demonstrate proposed solutions.
10+
11+
## Projects
12+
13+
| Project | Description |
14+
|---------|-------------|
15+
| **Climate Awareness Nudging** | How to nudge AI users toward climate awareness without guilt-tripping or blocking workflows |
16+
| **Lønforhandlingssystem** | Structured salary negotiation system replacing Excel-based processes (password-protected) |
17+
| **Agentic Orchestration Studio** | Open-source platform for mapping, automating, and orchestrating business processes |
18+
| **deltag.aarhus.dk** | Hearing detail page prototype for citizen participation with 784 simulated responses |
19+
| **WCAG Contrast Checker** | Color accessibility tool for WCAG AA/AAA compliance analysis |
20+
| **Deltag Aarhus — Projekttidslinje** | Interactive citizen engagement project timeline |
21+
| **Book Aarhus** | Resource booking app prototype for rooms and facilities |
22+
| **Opkrævningsoverblik** | Consolidated overview of municipal charges for citizens |
23+
24+
## Development
25+
26+
### Prerequisites
27+
28+
- Node.js 22 (see `.nvmrc`)
29+
- Docker + Traefik (for `task dev`)
30+
31+
### Quick start
32+
33+
```bash
34+
npm install
35+
npm run docs:dev
36+
```
37+
38+
Open http://localhost:5173
39+
40+
### With Docker
41+
42+
```bash
43+
task dev # Start via Docker + Traefik at http://research.local.itkdev.dk
44+
task build # Build static site
45+
task open # Open in browser
46+
```
47+
48+
### Other commands
49+
50+
```bash
51+
npm run docs:build # Build to _site/
52+
npm run docs:preview # Preview built site
53+
task lint:check # Check markdown standards
54+
```
55+
56+
## Deployment
57+
58+
Push to `main` — GitHub Actions builds with VitePress and deploys to GitHub Pages automatically.
59+
60+
## Tech stack
61+
62+
- [VitePress](https://vitepress.dev/) — static site generator
63+
- ITK Dev brand theme with dark/light mode
64+
- Client-side password protection for sensitive projects
65+
- Docker + Nginx + Traefik dev environment
66+
- GitHub Actions CI/CD
67+
68+
## Contributing
69+
70+
See [CLAUDE.md](CLAUDE.md) for project conventions and instructions on adding new projects.

0 commit comments

Comments
 (0)