Uses layout: home and layout: page to disable VitePress's default documentation appearance, presenting a marketing site structure
vitepress-marketing — Vue Blog Template
By BootForm
A multi-page marketing site template built on VitePress, including a home page, blog, and submittable contact form, deployed automatically via GitHub Actions.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Includes a home page, blog list and sample posts, and a submittable contact form
Blog search runs in the browser, indexing by Markdown headings, with no external search service required
The repository includes a GitHub Actions workflow that automatically builds and deploys to GitHub Pages on push to main
AGENTS.md explains to AI coding agents how this template differs from a documentation site
Brand colors, site title, navigation, and logo are modified in a few centralized files
Template Details
This is a template that uses VitePress as a marketing site rather than a documentation site. It uses `layout: home` and `layout: page` to disable VitePress's default documentation sidebar and previous/next page footer, thereby presenting pages such as the home page, blog, and contact form. The repository includes `AGENTS.md` to explain this convention to AI coding agents.
The template requires Node.js 20 or higher, as well as basic terminal skills (git clone, npm install, npm run dev). Local development uses `npm run dev` for previewing; the build output is automatically built and deployed to GitHub Pages by the GitHub Actions workflow included in the repository on every push to main.
Content modifications are concentrated in a few files: `docs/.vitepress/config.mts` manages the site title, description, navigation, and social links; `docs/public/logo.svg` is the logo shared by the header and footer; `docs/.vitepress/theme/style.css` defines the brand colors; the hero and features in `docs/index.md` use YAML frontmatter rather than Vue components; blog posts are placed under `docs/blog/`, and adding a new post requires copying the example file and linking it in `blog/index.md`. Search runs entirely in the browser, indexing pages by Markdown headings, with no separate search service.
The contact form is a somewhat unusual part of a static site: the template points the form to BootForm's endpoint, requiring you to generate a unique UUID as the form ID and replace the placeholder; after the first submission, the form must be claimed within 48 hours, otherwise the staged messages will be deleted.
In terms of limitations: the template contains no server-side logic, and the form depends on an external service; third-party assets such as demo images, fonts, and icons need to be checked separately for licensing; if the repository name is not `vitepress-marketing`, or if a custom domain is used, the `base` configuration must be modified accordingly, otherwise the deployed styles will break.
Is it right for your project?
Use Cases
- Building a static marketing site with a home page, blog, and contact form for a product or small team
- Developers who want to write and build with VitePress but do not want the default documentation site layout
- Static sites that need to submit a contact form to an external form service and control the form ID themselves
- Multi-page sites hosted on GitHub Pages with automatic build and deployment via Actions
Suitable For
- Front-end developers familiar with Node.js 20+ and basic terminal commands (clone, install, dev)
- Projects that accept a static site with no server-side logic and a form dependent on a third-party service
- Users willing to modify base, logo, brand colors, and form ID according to the repository instructions
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Node.js 20 or higher, as well as terminal skills at the level of git clone, npm install, npm run dev
- 2
If the repository name is not vitepress-marketing, the base and favicon paths must be modified accordingly in docs/.vitepress/config.mts
- 3
The contact form requires generating a unique UUID to replace __YOUR_FORM_ID__ in docs/index.md, and the form must be claimed within 48 hours
- 4
GitHub Pages Source must be set to GitHub Actions, not deploy from a branch
- 5
When using a custom domain, base must be changed to '/' and a CNAME file added in docs/public/
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code of that version and does not mean external services or third-party assets are free.
Must comply with when using
- The code of this version may be used, modified, used commercially, and distributed for free.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses; they cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
- The contact form depends on the external service BootForm; the static site itself has no server-side logic, and form submissions must point to that external endpoint.
- You must generate a unique UUID as the form ID; do not reuse the example or someone else's ID.
- The form ID belongs to the first person to claim it; if not claimed in time, someone else may claim it first and receive all submissions.
- Claiming the form requires registering a free account; staged messages are delivered only after claiming.
- Staged messages are retained for only 48 hours before claiming, after which they are deleted.
- If the repository name is not vitepress-marketing, base and favicon paths must be modified accordingly, otherwise styles will break after deployment.
- When using a custom domain, base must be changed to '/', otherwise site asset paths will be incorrect.
- In-site search indexes by Markdown headings; posts without their own # heading will not be included in search results.
- To exclude a page from search results, set search: false in its frontmatter.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
We will use [BootForm](https://bootform.com), because you can point a form at it and it works immediately, with no account.
Original README
It is just a random UUID, and it has to be yours alone.
Original README
Whoever claims a > form ID first owns it, and everything sent to it goes to them.
Original README
Claiming creates a free account and delivers anything already sent.
Original README
Held messages are kept for 48 hours before they are deleted.
Original README
change `base: '/vitepress-marketing/'` (and the favicon path under `head`, in the same file) to match your repo's actual name
Original README
also change `base: '/vitepress-marketing/'` to `base: '/'` in `docs/.vitepress/config.mts`, commit, and push.
Original README
Search runs entirely in the browser (no service, no API key) and indexes each page by its Markdown headings, so a post with no `# Heading` of its own won't show up: give it one.
Original README
https://github.com/BootForm/vitepress-marketing/blob/main/LICENSEhttps://github.com/BootForm/vitepress-marketing/blob/main/README.mdKeep a page out with `search: false` in its frontmatter
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-10. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 85 / 100
- Technologies
- Vue · VitePress
- Website type
- Blog · Documentation · Corporate Website
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-10-10
- Screenshot last checked
- 2026-10-10
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Vue as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-10
Inspect the recorded source material
SHA-256: 9f642d050e33078396f5ec4c259f4a34fb32bbf184faebae3a32871fcedf016d
2026-10-10T06:07:59.996Z
Source file / repository# A marketing site built with VitePress, not a docs site This one is a step up from [first-website](https://github.com/BootForm/first-website) and [one-page-site](https://github.com/BootForm/one-page-site): several pages that share a design, a blog, and a real build step. It needs Node.js and a terminal, which those two don't. By the end you will have a home page, a blog with search, and a working contact form, built with [VitePress](https://vitepress.dev) and deployed automatically by GitHub Actions. **[See what you are building →](https://bootform.github.io/vitepress-marketing/)** ## Why this exists VitePress is usually reached for as a *documentation* tool, and its defaults show it: a sidebar, a "previous/next page" footer, prose-width articles. Ask an AI coding agent for a VitePress marketing site and it will, more often than not, hand you a docs site with the words changed, because that's almost all VitePress content looks like in its training data. This template is the fix. `layout: home` and `layout: page` (used throughout `docs/`) are what turn off the docs chrome; [`AGENTS.md`](./AGENTS.md) says so explicitly, so an agent editing this repo reads the rule instead of guessing. --- ## Before you start You need: - A free GitHub account. - [Node.js](https://nodejs.org) 20 or later installed on your computer. - Some comfort with a terminal. `git clone`, `npm install`, `npm run dev`, that level. Don't have some of this yet, or not sure how? [Setting up your computer](https://bootform.com/docs/computer-setup) walks through installing Git and Node.js, a basic terminal tutorial, and installing and using VS Code, from scratch. If any of that sounds like too much right now, [first-website](https://github.com/BootForm/first-website) needs none of it and still ends with a real site and a working form. --- ## Step 1: Make your own copy Click the green **Use this template** button at the top of this page, then **Create a new repository**. Name it `vitepress-marketing`, or whatever you like. > **Naming it something other than `vitepress-marketing`?** Open `docs/.vitepress/config.mts` and > change `base: '/vitepress-marketing/'` (and the favicon path under `head`, in the same file) to match your repo's actual name (`/your-repo-name/`). > Get this wrong and the deployed site looks completely unstyled, while `npm run dev` still works > fine locally, since the dev server never uses `base`. Then clone *your* new repository to your computer: ```bash git clone https://github.com/yourname/vitepress-marketing.git cd vitepress-marketing npm install ``` --- ## Step 2: Preview it locally ```bash npm run dev ``` Open the address it prints, usually `http://localhost:5173`. That's your site, running on your own computer. It still says Cedar & Vine. We'll fix that next. Leave this running in its own terminal window while you edit; it reloads automatically. --- ## Step 3: Make it yours Look for the lines marked `CHANGE ME`, across a few files: - **`docs/.vitepress/config.mts`**: your site's title and description, the nav links, your social links. - **`docs/public/logo.svg`**: your logo. Replace the file itself (any image format works, keep the filename `logo.svg` or update the two places that reference it, listed in `AGENTS.md`) and it updates in both the header and the footer, no other change needed. - **`docs/.vitepress/theme/style.css`**: your brand colour. One value, used everywhere: buttons, links, VitePress's own accent colour. - **`docs/index.md`**: the whole home page. The `hero` and `features` blocks at the top are plain YAML frontmatter, not Vue components: change the text, add or remove a feature, nothing to recompile by hand. - **`docs/blog/index.md`** and **`docs/blog/why-we-started.md`**: the example post. Add a new post by copying `why-we-started.md`, and link it from `blog/index.md`. Search picks up the new post by itself, as long as it keeps a `# Heading` of its own. Save a file and check the browser tab running `npm run dev`. It updates within a second or two. > **Picking a colour is the hard part.** If you have no idea, `--color-brand-500: #2563eb` (a > plain blue) is a safe default. Pick one colour; the darker/lighter shades around it in > `style.css` are just that one colour, adjusted. --- ## Step 4: Make the contact form actually work Here is the bit most tutorials skip. A static site has no program running behind it, so there is nowhere for a form to send anything. We will use [BootForm](https://bootform.com), because you can point a form at it and it works immediately, with no account. **4a. Generate your form ID.** It is just a random UUID, and it has to be yours alone. Open BootForm's own [UUID generator](https://bootform.com/uuidgenerator) and copy what it shows you (or run `crypto.randomUUID()` in any browser console). You'll get something like `11111111-1111-4111-8111-111111111111`, though a real one won't repeat digits like that. > **Use your own.** Do not use the one printed above, and do not use a friend's. Whoever claims a > form ID first owns it, and everything sent to it goes to them. Yours should be a fresh random one > that nobody else has seen. **4b. Paste it in.** In `docs/index.md`, find this line: ```html <form action="https://f.bootform.com/__YOUR_FORM_ID__" method="POST" class="mx-auto flex max-w-md flex-col gap-4"> ``` Replace `__YOUR_FORM_ID__` with your ID. Save, and the running preview picks it up. **4c. Try it, then claim it.** Fill in the form on your local preview and send it. You'll land on a page asking you to claim the form. Claiming creates a free account and delivers anything already sent. Do this **before** the site goes live publicly (step 5) so nobody else can claim your ID first. > **Don't leave it too long.** Held messages are kept for 48 hours before they are deleted. --- ## Step 5: Deploy it **5a. Push your changes:** ```bash git add -A git commit -m "Make it mine" git push ``` **5b. Turn on GitHub Pages, the Actions way** (different from `first-website`'s "deploy from a branch," because this site needs a build step): 1. In your repository, click **Settings → Pages**. 2. Under **Source**, choose **GitHub Actions** (not "Deploy from a branch"). That's it. This repo already ships a workflow (`.github/workflows/deploy.yml`) that builds the site and deploys it on every push to `main`. Check the **Actions** tab for progress; the first run takes a couple of minutes. Once it finishes, your site is live at `https://yourname.github.io/vitepress-marketing/`. **5c. Optional: a real domain.** The same DNS steps as [one-page-site's Step 5](https://github.com/BootForm/one-page-site#step-5-put-it-on-your-own-domain) apply here too: a `CNAME` file in `docs/public/`, DNS records at your registrar, then **Enforce HTTPS** in the same Pages settings. One extra step this template needs that `one-page-site` doesn't: a custom domain serves from the root, not a `/vitepress-marketing/` subpath, so also change `base: '/vitepress-marketing/'` to `base: '/'` in `docs/.vitepress/config.mts`, commit, and push. --- ## That's it You have a real, multi-page marketing site with a blog and a working contact form, built the way VitePress is meant to be used for this, not the docs-site defaults. ### Where to go next - [`site-skills`](https://github.com/BootForm/site-skills) if you use Claude Code: commands to add page sections, add a new kind of content (books, team members, events), change the theme and swap icons, all following this template's conventions. - [`site-sections`](https://bootform.github.io/site-sections/) for copy-paste page sections (heroes, pricing, FAQs, footers) that survive VitePress's own styles. | | | |---|---| | **A real blog engine** | [vitepress-blog](https://github.com/BootForm) when you want tags, dates and RSS, not a hand-maintained list. | | **A portfolio** | [vitepress-portfolio](https://github.com/BootForm) when you have case studies to show. | | **More form options** | File uploads, autoresponders, Discord and Slack: [bootform.com/docs](https://bootform.com/docs/). | ### Stuck? Open an [issue](https://github.com/BootForm/vitepress-marketing/issues) and say what happened. --- ## Frequently hit problems **`npm install` fails.** Check `node --version`; this needs Node.js 20 or later. **My changes aren't showing in `npm run dev`.** Check the terminal it's running in for an error. A typo in frontmatter YAML (the block between `---` lines) is the most common cause. **The Actions deploy fails.** Open the failed run in the **Actions** tab and read its log; it's almost always the same error `npm run build` would show locally. Run `npm run build` on your own computer first to catch it there, where it's faster to fix. **Search misses a post, or finds a page you don't want in the results.** Search runs entirely in the browser (no service, no API key) and indexes each page by its Markdown headings, so a post with no `# Heading` of its own won't show up: give it one. Keep a page out with `search: false` in its frontmatter, as `docs/blog/index.md` does. **The form shows raw text instead of a nice page.** You are seeing the response as JSON. That is normal for now. Once you claim the form you can set a redirect so people land back on your site. ## Licence MIT. Do whatever you like with it, including using it for a real business.
Explore similar templates
Compare previews and descriptions within the same stack and category.

hexo-theme-vexo
Vexo is a Hexo blog theme inspired by the Vue.js official website, offering responsive layout, article table of contents, sharing QR codes, SEO configuration, Baidu Analytics, and switchable comment systems including Gitment, Utterances, Youyan, and Disqus. Local search requires installing hexo-generator-searchdb.
Vue · Blog

shadcn-vue-landing-page
A Vue + Shadcn-Vue + TypeScript + Tailwind landing page template with sections like Navbar, Hero, Pricing, FAQ, Team, and Contact, plus dark mode and responsive layout.
Vue · Corporate Website

vuepress-theme-simple
A minimalist blog theme for VuePress 1.x that replaces the homepage README with an article list sorted by Git commit time or FrontMatter date.
Vue · Blog

vuepress-theme-seeker
Seeker is a VuePress blog theme built around "colorful minimalism": each refresh randomly generates a color scheme, and the footer randomly shows classical Chinese poetry.
Vue · Blog

vitepress-template
A VitePress-based template for static sites and blogs, built with Vue and Vite, with pnpm dev/build/serve scripts and support for using Vue components and setup syntax sugar directly in Markdown.
Vue · Blog

dasos
dasos is an App landing page template built with Vue and Tailwind CSS, scaffolded with vue-cli. It includes Features, Testimonials, Download App, and Contact sections, and integrates vuefire and firebase for database connectivity, along with vue-carousel and vue-scrollto.
Vue · Corporate Website
