Skip to content

Commit 113d3cd

Browse files
authored
Merge pull request #31 from ethereum/test_guide
Guide v0: persona-routed iptf-map projection
2 parents e8ffbb7 + 1ef48e2 commit 113d3cd

224 files changed

Lines changed: 19301 additions & 4059 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/launch.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"version": "0.0.1",
3+
"configurations": [
4+
{
5+
"name": "dev",
6+
"runtimeExecutable": "/Users/yanismeziane/.nvm/versions/node/v22.22.2/bin/npm",
7+
"runtimeArgs": ["run", "dev"],
8+
"port": 4321
9+
}
10+
]
11+
}

.github/workflows/deploy.yml

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ name: Deploy site
22
on:
33
push:
44
branches: [main]
5+
pull_request:
56
workflow_dispatch:
67

78
permissions:
@@ -10,7 +11,7 @@ permissions:
1011
id-token: write
1112

1213
concurrency:
13-
group: pages
14+
group: pages-${{ github.ref }}
1415
cancel-in-progress: false
1516

1617
jobs:
@@ -21,33 +22,22 @@ jobs:
2122
with:
2223
submodules: true
2324

24-
# Build Astro map
2525
- uses: actions/setup-node@v4
2626
with:
2727
node-version: 22
2828
cache: npm
29-
cache-dependency-path: map/package-lock.json
29+
3030
- run: npm ci
31-
working-directory: map
3231
- run: npm run build
33-
working-directory: map
3432

35-
# Build Jekyll site
36-
- uses: ruby/setup-ruby@v1
37-
with:
38-
ruby-version: '3.3'
39-
bundler-cache: true
4033
- uses: actions/configure-pages@v5
41-
- run: bundle exec jekyll build
42-
env:
43-
JEKYLL_ENV: production
44-
45-
# Merge: copy Astro output into Jekyll output
46-
- run: cp -r map/dist _site/map
47-
4834
- uses: actions/upload-pages-artifact@v3
35+
with:
36+
path: dist
4937

5038
deploy:
39+
# PR runs only validate the build; deploys happen on push to main.
40+
if: github.event_name != 'pull_request'
5141
runs-on: ubuntu-latest
5242
needs: build
5343
environment:

.gitignore

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1-
_site/
2-
.sass-cache/
3-
.jekyll-cache/
4-
.jekyll-metadata
5-
vendor/
6-
.bundle/
7-
Gemfile.lock
8-
9-
# macOS
1+
# Dependencies
2+
node_modules/
3+
4+
# Build artifacts
5+
dist/
6+
.astro/
7+
src/data/graph.json
8+
9+
# Local tooling
10+
.claude/worktrees/
11+
12+
# OS
1013
.DS_Store
1114

1215
# Excalidraw source files
1316
*.excalidraw
17+
src/data/glossary.json

CLAUDE.md

Lines changed: 55 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -2,116 +2,93 @@
22

33
## Project Overview
44

5-
This is the IPTF (Institutional Privacy Task Force) website repository. It's a simple Jekyll-based GitHub Pages site deployed at https://iptf.ethereum.org/.
5+
This is the IPTF (Institutional Privacy Task Force) website repository. Astro static site deployed at https://iptf.ethereum.org/.
6+
7+
Map content (patterns, approaches, use-cases, vendors, domains, jurisdictions) is the projection of the [`iptf-map`](https://github.com/ethereum/iptf-map) repo, pinned as a submodule at `content/`. Blog writeups live in `src/posts/`.
68

79
## Tech Stack
810

9-
- **Jekyll**: Static site generator
10-
- **Minima theme**: Minimal Jekyll theme
11-
- **GitHub Pages**: Hosting and auto-deployment
12-
- **Markdown**: Content format
11+
- **Astro** (static site generator, Node 22)
12+
- **React** islands for the `/explore/*` D3 explorer views
13+
- **marked** for Markdown rendering
14+
- **Tailwind CSS v4**
15+
- **GitHub Pages** for hosting + auto-deploy from `main`
1316

1417
## Key Files
1518

16-
- `_config.yml`: Site configuration (title, description, theme, blog settings)
17-
- `index.md`: Homepage content
18-
- `blog.html`: Blog index page
19-
- `_posts/`: Published blog posts (filename: `YYYY-MM-DD-title.md`)
20-
- `_drafts/`: Draft posts not published to live site
21-
- `_layouts/`: Custom page layouts (post.html, default.html)
22-
- `_includes/`: Reusable components (head.html with Twitter cards)
23-
- `assets/images/`: Hero images and media
24-
- `CNAME`: Custom domain configuration (iptf.ethereum.org)
25-
26-
## Development Guidelines
27-
28-
### Content Editing
29-
30-
- Main content is in `index.md` (Markdown format)
31-
- Keep content focused on IPTF mission and contact information
32-
- Maintain professional, concise tone
33-
34-
### Configuration
19+
- `astro.config.mjs` — Astro config (site URL, integrations).
20+
- `content/` — iptf-map submodule.
21+
- `scripts/build-graph.mjs` — Reads iptf-map → `src/data/graph.json`.
22+
- `src/posts/` — Blog post markdown (filename: `YYYY-MM-DD-slug.md`).
23+
- `src/pages/` — Routes. `blog/[slug].astro` is the post detail page.
24+
- `src/layouts/``Guide.astro` (default), `Post.astro` (writeups).
25+
- `src/lib/` — Data access (`data.ts`), post loader (`posts.ts`), markdown renderer (`render.ts`).
26+
- `public/` — Static assets served verbatim (`assets/`, `CNAME`, `robots.txt`, `tee-protocol-page.html`).
27+
- `.github/workflows/deploy.yml` — GH Pages build + deploy.
3528

36-
- Site settings in `_config.yml`
37-
- Changes require Jekyll server restart when testing locally
38-
- Do not modify `CNAME` unless changing domain
29+
## Development
3930

40-
### Testing Locally
41-
42-
Run Jekyll server before committing changes:
4331
```bash
44-
bundle exec jekyll serve
32+
npm install
33+
npm run dev # http://localhost:4321
34+
npm run build # → ./dist
35+
npm test
4536
```
46-
View at `http://localhost:4000`
47-
48-
### Commit Conventions
4937

50-
Use semantic commit messages following conventional commits format:
38+
Requires Node 22.
5139

52-
- `feat:` New features or content additions
53-
- `fix:` Bug fixes or corrections
54-
- `docs:` Documentation changes
55-
- `chore:` Maintenance tasks, dependencies
56-
- `refactor:` Code restructuring without behavior changes
57-
- `style:` Formatting, whitespace changes
40+
## Source-of-truth rule
5841

59-
Examples:
60-
- `docs: add README and CLAUDE.md`
61-
- `feat: add new initiative section`
62-
- `fix: correct contact email`
42+
iptf-map main is the only source of truth for map content. Anything sourced from the submodule renders verbatim. Render sites are marked with `SOURCE: iptf-map field — do not alter` comments.
6343

64-
### Deployment
44+
UI chrome (landing copy, FAQ, blog index, post layout) is the site's own and stays curated.
6545

66-
- **Branch**: We deploy from `main` branch only (legacy `gh_pages` branch removed)
67-
- **Auto-deploy**: GitHub Pages automatically deploys on push to `main`
68-
- **Timeline**: Changes go live within 1-3 minutes
69-
- **No manual steps**: Simply push to `main` or merge PR
70-
- **Live site**: https://iptf.ethereum.org/
46+
## Commit conventions
7147

72-
## Typical Tasks
48+
Semantic / conventional commits:
7349

74-
- **Update homepage**: Edit `index.md`
75-
- **Create blog post**: Add `YYYY-MM-DD-title.md` to `_posts/`
76-
- **Create draft**: Add to `_drafts/` or use `published: false` frontmatter
77-
- **Add hero image**: Place in `assets/images/`, reference in post frontmatter
78-
- **Change site settings**: Edit `_config.yml`
50+
- `feat:` new features or content
51+
- `fix:` bug fixes
52+
- `docs:` documentation
53+
- `chore:` maintenance, dependencies
54+
- `refactor:` reorganization without behaviour change
7955

80-
## Blog Post Guidelines
56+
## Blog posts
8157

82-
### Frontmatter Template
58+
### Frontmatter template
8359

8460
```yaml
8561
---
86-
layout: post
8762
title: "Post Title"
88-
date: YYYY-MM-DD
63+
description: "Brief description (shown in social cards and the blog index)."
64+
date: 2026-01-09
8965
author: "Author Name"
90-
image: /assets/images/hero-name.jpg
91-
description: "Brief description for SEO and social cards"
66+
image: /assets/images/2026-01-09-slug/hero.png
9267
---
9368
```
9469

95-
### Hero Images
70+
The published URL derives from the title via Jekyll-compatible slugify. Hero images live under `public/assets/images/`. Set `published: false` to keep a post out of the live site.
71+
72+
### Hero images
9673

97-
- **Size**: 1200x600px (2:1 ratio) for optimal Twitter/X card display
98-
- **Location**: `assets/images/`
99-
- **Format**: JPG, PNG, or SVG
100-
- Always include alt text consideration in design
74+
- Recommended size: 1200x600px (2:1 ratio) for OG / Twitter cards.
75+
- Location: `public/assets/images/<date-slug>/`.
76+
- Format: JPG, PNG, WEBP, or SVG.
10177

102-
### Draft Workflow
78+
## Updating iptf-map content
10379

104-
1. Create draft in `_drafts/` folder (no date in filename)
105-
2. Preview locally: `bundle exec jekyll serve --drafts`
106-
3. When ready to publish: Move to `_posts/` with date prefix
107-
4. Alternatively: Use `published: false` in frontmatter
80+
```bash
81+
git submodule update --remote content
82+
git add content
83+
git commit -m "chore(content): bump iptf-map submodule"
84+
```
10885

109-
## Important Notes
86+
## Deployment
11087

111-
- This is a public-facing website representing Ethereum Foundation
112-
- Keep content accurate and professional
113-
- Test locally before pushing to main
114-
- Changes to main branch go live immediately
88+
- Deploy from `main` only.
89+
- Push or merge → GitHub Actions builds Astro and deploys to GH Pages.
90+
- Live within a few minutes.
91+
- Don't modify `public/CNAME` unless changing the domain.
11592

11693
## License
11794

Gemfile

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)