The official website for the Green Software Foundation, built with Astro 5, React 19, and Tailwind CSS 4.
npm install
npm run dev # Dev server on localhost:4322The homepage is at /. The component playground is at /playground/.
npm run build # Build with cached data
npm run build:full # Fetch Notion data, then build (used by Netlify)
npm run fetch-notion # Fetch fresh data from Notion (requires NOTION_API_KEY in .env)Deployed on Netlify. Node 22 (set in .nvmrc and netlify.toml).
All work happens on feature branches and merges into main via pull request. Every PR gets a Netlify deploy preview. Use merge commits (not squash) when merging.
Content that isn't ready to go live uses published: false in frontmatter — the page renders at its URL for preview, but is hidden from all listings, search, and sitemap.
The site has three layers of documentation: system docs (how the data pipeline and infrastructure work), component docs (reusable elements that appear across pages), and page docs (what each page shows and where its data comes from).
- Content Management (CMS) — logging in, publishing workflow, draft mode, translations
- CLAUDE.md — full project context: architecture, component library, design tokens
- Notion data pipeline — databases, output files, assets, refresh process, known limitations
- Search (PageFind) — static indexing, which pages are indexed, testing locally
- Google Analytics — GA4 setup, custom events, testing
- Logo marquee — data source, sort order, how to add/hide logos
- Article carousels — tags reference, featured flag, 3-article minimum
- People & teams — people.json structure, TeamGrid, photo resolution
- Articles — article listing, detail pages, frontmatter, translations, draft mode
- Research & White Papers — whitepapers, consultation responses, working groups
- Standards — individual standard pages (SCI, RTC, etc.)
- Press & Media — member counts, leadership, timeline, press mentions
- Governance — steering committee, staff, chairs/leads, org leads
- Policy & Research — engagement, partnerships, research papers
- Community — podcasts, meetups, events
- Education — courses, learning resources
- Membership — logo marquee, fee tables, member stories
- Stories — frontmatter schema, contributor photos, related articles
- Assemblies — status values, application form, completed assemblies
- Static pages — About, Brand, Contact, Certification, Newsletter
| Directory | Contents |
|---|---|
src/pages/ |
Astro page files |
src/components/ |
Parameterised Astro components |
src/components/react/ |
React islands (interactive components) |
src/components/ui/ |
UI primitives (shadcn/ui + Radix) |
src/content/ |
Articles, stories, and research (Markdown) |
src/data/ |
JSON data files (fetched from Notion) |
public/assets/ |
Static assets (images, logos, team photos) |
scripts/ |
Build and data-fetch scripts |
docs/ |
Documentation and how-to guides |