Landscape2: Building Interactive Landscape Websites with a CLI

The Problem

Compiling and maintaining an "interactive landscape" website—think of the CNCF Landscape—can be a monumental headache. You're dealing with YAML files, logos, external data sources like GitHub and Crunchbase, and the need for a consistent, polished UI. Doing this manually or cobbling together a system with custom scripts is a surefire way to lose your weekends to debugging and data wrangling.

What This Does

Landscape2 is a CLI tool for generating static websites that look like the CNCF Landscape, but without needing to sell your soul to a SaaS platform. Feed it a handful of YAML files (docs/config/data.yml, settings.yml, games.yml, etc.), and it spits out a fully functional, polished website. The CLI lives in the crates/cli directory, with entry points like crates/cli/src/main.rs.

The tool isn’t just a glorified YAML parser—it pulls external data from sources like GitHub and Crunchbase if you feed it API tokens via environment variables (GITHUBTOKENS and CRUNCHBASEAPI_KEY). This lets you enrich your landscape with real-time stats (stars, contributors, funding data, etc.). It’s like having a personal assistant that does all the grunt work of gathering and organizing data for you.

Once the data is compiled and processed, the website is built using React components housed in the ui/ folder. This means your output isn’t just functional but also pretty (see docs/screenshots/). It even includes interactive features like modals (ui/common/src/components/ItemModalContent.tsx), tables, and responsive layouts.

Real-World Use

Imagine you’re tasked with creating a landscape website for open-source Kubernetes tools. You’d start by writing a data.yml for your items, a settings.yml to define the branding and layout, and perhaps a games.yml for some playful interaction. Here’s a snippet of a data.yml entry:

Once your files are ready, run:

If you've set up your GitHub and Crunchbase tokens, the tool will automatically pull in additional metadata about the projects, like contributors and funding rounds. The result? A fully baked, interactive landscape website ready to deploy.

The Bottom Line

Landscape2 is niche but solid. If you need to build a landscape-style site, it saves you from a mountain of manual work. That said, it’s overkill for smaller projects or those not reliant on complex data integration. For large-scale, data-driven websites, though? It’s a lifesaver. Just be prepared to wrestle with YAML and spend some time tweaking your configs. DevOps folks and open-source maintainers: this one’s for you.