Marketing and documentation website for the Capyseo SEO toolkit.
Visit Site · GitHub · Report Issue
Part of the Capyseo toolkit.
Beautiful, modern web presence for Capyseo — chill SEO for every framework. Features integrated documentation, responsive design, dark mode, and full-text search.
capyseo.dev is more than just a marketing site—it's a showcase of Capyseo capabilities. This site uses and demonstrates:
The SEO analysis engine powers the documentation system with:
Deep SvelteKit integration providing:
vite buildWhile capyseo.dev focuses on the developer experience, the CLI demonstrates:
The site automatically fetches markdown documentation from the capyseo-docs repository at build time. This means:
# Fetch and process all docs
bun run fetch-docs
# Runs automatically during dev/build
bun run dev
Code blocks automatically adapt to light/dark mode:
Client-side fuzzy search across entire documentation:
See: src/lib/docs/search.svelte.ts
Automatic theme detection chain:
Flash prevention ensures no white flash for dark mode users.
Capybara Brown is the primary color, complemented by a warm, accessible palette:
--capybara-500: oklch(0.55 0.11 42); /* Main brand color */
--capybara-50: oklch(0.97 0.01 55); /* Very light */
--capybara-950: oklch(0.18 0.03 34); /* Very dark */
All colors use OKLCH color space for:
src/
├── app.css # Design system, colors, prose
├── lib/
│ ├── components/
│ │ ├── layout/ # Header, Footer
│ │ ├── shared/ # Logo, ThemeToggle
│ │ ├── docs/ # Sidebar, TOC, CodeBlock, etc.
│ │ └── ui/ # shadcn components
│ ├── docs/
│ │ ├── navigation.ts # Navigation helpers
│ │ ├── search.svelte.ts # MiniSearch integration
│ │ └── types.ts # TypeScript interfaces
│ └── utils/
│ └── index.ts # cn() helper
├── routes/
│ ├── +layout.svelte # Root layout
│ ├── +page.svelte # Homepage
│ ├── docs/
│ │ ├── [email protected] # Docs layout (reset parent)
│ │ ├── +page.svelte # Docs index
│ │ └── [...slug]/
│ │ ├── +page.svelte # Docs page renderer
│ │ └── +page.ts # Dynamic routing
│ ├── features/
│ ├── pricing/
│ ├── about/
│ └── sponsor/
├── app.html # HTML template with theme script
└── content/
└── docs.json # Generated manifest (41 pages)
scripts/
└── fetch-docs.ts # Build-time doc fetcher
The Vite plugin analyzes all pages during build to enforce SEO quality:
// vite.config.ts
import { sveltekit } from '@sveltejs/kit/vite';
import { capyseo } from '@capyseo/sveltekit/vite';
export default {
plugins: [
sveltekit(),
capyseo({
minScore: 85, // Enforce minimum SEO score
failOnError: true, // Fail build on errors
exclude: ['/admin/*'], // Skip non-public routes
}),
],
};
Server hooks provide instant SEO validation while you develop:
// src/hooks.server.ts
import { createCapyseoHandle } from '@capyseo/sveltekit/hooks';
export const handle = createCapyseoHandle({
logLevel: 'issues', // Only show pages with problems
});
Example output during development:
[capyseo] /docs/getting-started (Score: 92/100)
! [open-graph] Missing og:image
! [twitter-card] Missing twitter:image
Optional AI integration for meta descriptions and alt text:
capyseo({
aiProvider: 'gemini',
aiApiKey: process.env.GEMINI_API_KEY,
onReport: (reports) => {
console.log(`✅ All ${reports.length} pages SEO-checked with AI suggestions`);
},
})
Use the core analyzer for custom workflows:
import { SEOAnalyzer } from '@capyseo/core';
const analyzer = new SEOAnalyzer();
const report = await analyzer.analyzePage(html, 'https://capyseo.dev/docs');
// Get structured results
console.log(`Score: ${report.score}/100`);
console.log(`Issues: ${report.issues.length}`);
// Find specific problems
const missingMeta = report.issues.filter(i => i.rule === 'meta-description');
# Clone the repository
git clone https://github.com/Capyseo/capyseo.dev
cd capyseo.dev
# Install dependencies
bun install
# Start dev server (includes fetch-docs)
bun run dev
# Visit http://localhost:5173
# Build static site
bun run build
# Preview production build
bun run preview
# Output is in ./build/
# Check Svelte types
bun run check
# Watch mode
bun run check:watch
To work with documentation locally:
../capyseo-docsbun run fetch-docs to sync docsbun run devWhen you push to capyseo-docs, a GitHub Actions workflow:
Edit CSS custom properties in src/app.css:
:root {
--primary: oklch(0.45 0.11 40);
--capybara-500: oklch(0.55 0.11 42);
/* ... more colors */
}
.dark {
--primary: oklch(0.75 0.1 48);
/* ... dark mode colors */
}
Fonts are loaded in src/app.css:
@font-face {
font-family: 'Abril Fatface';
src: url('/fonts/abril-fatface-v23-latin-regular.woff2') format('woff2');
}
Add new fonts to static/fonts/ and register in src/app.css.
Edit src/lib/components/shared/ThemeToggle.svelte to customize the button appearance.
Contributions are welcome! Here's how to help:
type(scope): description
feat(docs): add dark mode toggle
fix(search): improve fuzzy matching
docs(readme): update installation steps
None at the moment! Found one? Open an issue.
MIT © Capyseo
| Project | Description |
|---|---|
| Capyseo Core | SEO analysis engine |
| Capyseo CLI | Command-line interface |
| Capyseo Docs | Documentation source |
| Capyseo SvelteKit | SvelteKit adapter |