Skip to content

Framework Examples

Screenbook provides example projects demonstrating integration with popular frontend frameworks.

FrameworkDirectoryRouting
Next.js App Routerexamples/nextjs-app-router/File-based (src/app/**/page.tsx)
Vite + Reactexamples/vite-react/React Router (src/pages/**/index.tsx)

The Next.js example uses the App Router with colocated screen.meta.ts files:

src/app/
├── page.tsx
├── screen.meta.ts
├── dashboard/
│ ├── page.tsx
│ └── screen.meta.ts
└── settings/
├── page.tsx
└── screen.meta.ts
screenbook.config.ts
import { defineConfig } from "screenbook"
export default defineConfig({
metaPattern: "src/app/**/screen.meta.ts",
routesPattern: "src/app/**/page.tsx",
})
Terminal window
cd examples/nextjs-app-router
pnpm install
pnpm screenbook:build
pnpm screenbook:dev

The Vite example uses React Router with a pages directory structure:

src/
├── App.tsx # Route definitions
└── pages/
├── Home/
│ ├── index.tsx
│ └── screen.meta.ts
├── Dashboard/
│ ├── index.tsx
│ └── screen.meta.ts
└── Settings/
├── index.tsx
└── screen.meta.ts
screenbook.config.ts
import { defineConfig } from "screenbook"
export default defineConfig({
metaPattern: "src/pages/**/screen.meta.ts",
routesPattern: "src/pages/**/index.tsx",
})
Terminal window
cd examples/vite-react
pnpm install
pnpm screenbook:build
pnpm screenbook:dev

Both examples demonstrate:

  • Screen metadata: id, title, route, owner, tags, description
  • Navigation relationships: entryPoints, next
  • API dependencies: dependsOn
  • 100% coverage: All routes have corresponding screen.meta.ts files
screen.meta.ts
import { defineScreen } from "screenbook"
export const screen = defineScreen({
id: "dashboard",
title: "Dashboard",
route: "/dashboard",
owner: ["platform"],
tags: ["analytics", "dashboard"],
description: "Main dashboard showing analytics and metrics",
entryPoints: ["home"],
next: ["settings"],
dependsOn: ["AnalyticsAPI.getStats", "AnalyticsAPI.getRevenue"],
})

To integrate Screenbook with other frameworks:

  1. Identify your route file pattern (e.g., pages/**/*.vue for Nuxt)
  2. Configure routesPattern in screenbook.config.ts
  3. Create screen.meta.ts files alongside your routes
  4. Run screenbook build to generate metadata

See the Configuration guide for more options.