Landing pages, zero fuss.
Four templates — landing page, docs, product, and SaaS app — each scaffolded by one CLI command. Dark theme, Tailwind CSS v4, and GitHub Pages workflow included.
Scaffold
npx @mcptoolshop/site-theme init --template app
Edit
site/src/config/site.config.ts
Deploy
git push # GitHub Actions handles the rest
What you get
Everything a project landing page needs, pre-wired.
Four templates
Landing page, docs, product marketing, and multi-tenant SaaS app. Pick one, scaffold, build — done.
Dark by default
Semantic design tokens (bg-surface, text-heading, border-edge) ready to use. Override any token to reskin the whole theme.
GitHub Pages ready
The init CLI writes .github/workflows/pages.yml automatically. Push and set the source — done.
SaaS architecture
App template ships with RBAC, feature flags, workspace routing, and 31 static pages — credible SaaS foundation out of the box.
Zero surprise setup
CSS imports, @source paths, base paths, and CI workflows are all pre-wired by the CLI. No manual config hunting.
Fully customizable
Every color, radius, and spacing value is a CSS custom property. Override in @theme — no config file needed.
Templates
Pick a starting point. Every template is CI-tested and builds clean.
| Template | Description | Pages |
|---|---|---|
| default | Project landing page with hero, features, and code examples | 1 |
| docs | Documentation site with sidebar navigation and content sections | 1 |
| product | Marketing page with pricing, testimonials, and CTAs | 1 |
| app | Multi-tenant SaaS dashboard with RBAC, feature flags, and workspace routing | 31 |
Quick start
From zero to deployed in minutes.
Scaffold
npx @mcptoolshop/site-theme init
cd site && npm install
npm run dev Edit your content
// site/src/site-config.ts
export const config: SiteConfig = {
title: '@mcptoolshop/my-tool',
description: 'What my tool does.',
logoBadge: 'MT',
brandName: 'my-tool',
hero: { /* ... */ },
sections: [ /* ... */ ],
}; Override design tokens
/* site/src/styles/global.css */
@import "tailwindcss";
@import "@mcptoolshop/site-theme/styles/theme.css";
@source "../../node_modules/@mcptoolshop/site-theme";
@theme {
--color-accent: #60a5fa; /* blue accent */
--color-surface: #0a0a1a; /* dark navy */
--color-action: #60a5fa;
} Deploy to GitHub Pages
# 1. Push to GitHub
git push
# 2. Repo → Settings → Pages → Source → "GitHub Actions"
# 3. Push any change to site/ to trigger a deploy Components
Import individually from the package.
BaseLayout(title, description, logoBadge, brandName, nav, repoUrl, npmUrl?, footerText)
Full page shell with sticky header (logo badge, nav links, GitHub/npm buttons) and footer. Wrap all your sections in this.
Hero(badge, headline, headlineAccent, description, primaryCta, secondaryCta, previews?)
Gradient hero with status badge, large headline, CTA buttons, and optional code preview cards.
Section(id, title, subtitle?)
Anchor section with heading and optional subtitle. Wraps any content as a slot.
FeatureGrid(features: { title, desc }[])
3-column responsive card grid. Each card has a bold title and a short description.
DataTable(columns: string[], rows: string[][])
Grid-based bordered table. First cell in each row is styled as a header.
CodeCardGrid(cards: { title, code }[])
2-column grid of dark code block cards. Ideal for install/usage examples.
ApiList(apis: { signature, description }[])
Full-width stacked API reference cards. Signature in monospace, description below.
Design tokens
Override any token in global.css via @theme.
| Token | Default | Used for |
|---|---|---|
| --color-surface | #09090b | Page background |
| --color-surface-raised | #18181b | Elevated elements, code blocks |
| --color-edge | #27272a | Primary borders |
| --color-heading | #fafafa | Headings, primary text |
| --color-body | #e4e4e7 | Body / secondary text |
| --color-dim | #a1a1aa | Labels, captions |
| --color-accent | #34d399 | Status indicator dot |
| --color-action | #fafafa | Primary button background |
| --color-action-text | #09090b | Primary button text |