Structure drifts
Fields, naming, and categories diverge as more people contribute.
Open-source framework for maintained knowledge spaces
Grove turns community submissions into structured, searchable, and maintainable knowledge spaces—using portable files, Git-based review, and static publishing.
●data/records/immich.yml
kind: project
name: Immich
category: media
repoUrl:
https://github.com/immich-app/immich●Grove
●Generated output
One reviewed record, ready for people, search engines, and AI systems.
Measured on this landing page’s production build. Custom content and third-party integrations can affect individual scores.
pnpm dlx @grove-dev/cli@latest new my-spaceThe maintenance problem
A README or small static site works until the collection becomes shared infrastructure. Growth turns publishing into recurring maintenance work.
Fields, naming, and categories diverge as more people contribute.
Archived projects and old releases remain visible without a repeatable refresh.
Maintainers normalize every submission before they can judge its value.
Search, filters, routes, metadata, and sitemaps become another app to maintain.
A README is readable, but it is not a predictable record set or generated context.
Quality depends on someone remembering what needs review and why.
How Grove works
Grove automates repeatable checks and generation. It does not automate editorial judgment.
✓ A community suggestion
data/records/<slug>.yml
$ pnpm exec grove import <awesome-list-url>✓ An unstructured candidate
A typed project, resource, or entity
$ kind: project
category: self-hosted✓ Records + taxonomy files
Actionable validation results
$ pnpm exec grove validate --strict✓ A project with a repository URL
Current repository metadata
$ pnpm exec grove sync github✓ A proposed record change
Accepted, revised, or rejected change
$ git diff data/records/immich.yml✓ Reviewed records
Static, cacheable output
$ pnpm exec grove generate && pnpm build✓ A growing, aging collection
A focused maintenance report
$ pnpm exec grove cleanup stale --reportOne source, multiple outputs
Grove generates a website for people, crawlable pages and a sitemap for search engines, structured JSON for other tools, and predictable context files for AI systems.
It does not promise rankings or AI visibility. It produces stable, inspectable formats from the same reviewed source.
record.yml
name: Immich
kind: project
category: media
Website
Static pages
Search
sitemap.xml
AI
llms.txt
Tools
records.json
Production reference
Open Apps is a live directory with file-backed records, repository refresh, search, filters, detail pages, a sitemap, and AI-readable outputs. Grove turns that operating model into a reusable framework.
The live repository still carries local versions of this logic. Migration to the published Grove packages is the next reference-space milestone.
What Grove can power
Grove is not only a directory template. Its record model supports three typed blueprints; the polished default frontend is available for project directories today.
Developer tools, open-source apps, packages, services, or internal systems.
Guides, comparisons, explainers, learning collections, and curated links.
Organizations, products, communities, schools, and local ecosystem actors.
Import a Markdown collection, then add structure, review, and static discovery.
Architecture and status
Core owns the source model and generated data. UI owns framework-neutral primitives. An adapter renders the site. Your repository keeps the content, brand, and editorial rules.
Supported today
Astro
V1 supported renderer
Planned adapters
SvelteKit
Skeleton · planned V1.1
Next.js
Skeleton · planned V1.2
The CLI refuses --framework {svelte|nextjs}until the adapter ships components, layouts, and a working template.
Package boundaries
@grove-dev/core
Schema + lifecycle
@grove-dev/ui
Headless primitives
@grove-dev/cli
Scaffold + commands
Inspect the example, read the architecture, and build a space from plain files. No CMS or runtime database required.