Skip to main content

Ever Works Minimal Directory Template

A minimal, static-rendered Astro template for AI-generated directory websites. It serves as a lightweight alternative to the full-featured Next.js directory-web-template.

Philosophy

This template is an intentionally blank canvas with headless, composable building blocks. AI agents (Claude Code, etc.) assemble and style these components into complete directory websites.

Key Features

  • Static-first: Astro 6 with static output, optional ISR via @astrojs/vercel
  • Plugin architecture: Almost every feature is a plugin that can be enabled/disabled
  • Git-first data: Content stored in YAML files within Git repositories
  • Headless components: 25 Astro + 8 Preact unstyled building blocks + 22 primitive components
  • AI-optimized: Clear naming, inline docs, explicit data contracts
  • Extreme performance: Zero unnecessary JS, Astro islands architecture

Tech Stack

LayerTechnology
FrameworkAstro 6 (static output)
BuildVite + Turborepo
LanguageTypeScript (strict)
Interactive IslandsPreact
CSSTailwind CSS v4 (AI-applied)
SearchPagefind (static)
DataYAML in Git repos
Package Managerpnpm 10
DeploymentVercel
TestingVitest (unit), Playwright (E2E)

Quick Start

git clone https://github.com/ever-works/directory-web-minimal-template
cd directory-web-minimal-template
pnpm install
pnpm dev

Monorepo Structure

/
├── apps/
│ ├── web/ — Astro static site (core template)
│ ├── web-e2e/ — Playwright E2E tests
│ ├── docs/ — Docusaurus documentation site
│ ├── sample-basic/ — Reference implementation (React UI Components directory)
│ ├── sample-git/ — Git adapter reference (5030 pages)
│ ├── sample-jobs/ — Job board directory sample
│ ├── sample-events/ — Tech events directory sample
│ └── sample-real-estate/ — Property listings directory sample
├── packages/
│ ├── core/ — Data layer, content reader, types, schemas
│ ├── ui/ — Headless UI components (25 Astro + 8 Preact + 22 primitives + 5 shadcn-style)
│ ├── plugins/ — Plugin system (runner, types, define-plugins)
│ ├── adapters/ — Data source adapters (git, filesystem)
│ ├── astro-integration/— Astro integration for plugin build lifecycle
│ ├── sync/ — Content synchronization (webhooks, polling, ISR)
│ ├── plugin-seo/ — SEO plugin (meta tags, JSON-LD)
│ ├── plugin-pagination/— Pagination plugin
│ ├── plugin-filters/ — Filters plugin
│ ├── plugin-search/ — Search plugin (Pagefind)
│ ├── plugin-sort/ — Sort plugin
│ ├── plugin-sitemap/ — Sitemap plugin
│ ├── plugin-rss/ — RSS/Atom feed plugin
│ ├── plugin-breadcrumbs/— Breadcrumbs plugin
│ ├── plugin-analytics/ — Analytics plugin (Plausible, Umami, Fathom, GA4)
│ ├── plugin-related-items/ — Related items scoring plugin
│ ├── tsconfig/ — Shared TypeScript configurations
│ └── eslint-config/ — Shared ESLint configuration
└── docs/ — Documentation source (Markdown)