Skip to content

VitePress Configuration

VitePress provides wast set of configuration options

Some examples are provided below.

Home page

  1. Place logo and favicon in /apps/wiki/public folder and reference in /apps/wiki/.vitepress/config.ts like this:
ts
export default defineConfig({
  title: "My Site",
  description: "My Site",
  head: [['link', { rel: 'icon', href: '/favicon.ico' }]],
  themeConfig: {
    // https://vitepress.dev/reference/default-theme-config
    logo: "/logo.png",
  1. Enhance home page by modifying and styling home page
./apps/wiki/index.md
md
---
# https://vitepress.dev/reference/default-theme-home-page
layout: home

hero:
  name: 'Bullshit Bingo'
  tagline: Release the Energy to Focus on Business
  image:
    src: ./logo.png
    alt: Bullshit Bingo
  actions:
    - theme: brand
      text: Introduction
      link: /introduction/
    - theme: alt
      text: Guide
      link: /guide/
    - theme: alt
      text: Features
      link: /features/

features:
  - title: Why?
    link: /introduction/vision
    details: Create a vision, Understand the problem, Draw roadmap
  - title: who?
    link: /introduction/skills
    details: Acknowledge skills, Develop Habits, Plan time
  - title: How?
    link: /introduction/design
    details: Do the design right, Choose architecture, Keep high standards
---

 

# Why do we need yet another web application?

> We don't need yet another web application. We need time. Time to do things that are of high value to us. And if any of these things need a web application, this is the right place to start

### With the **Simplicity**, **Scalability**, and **Security** in mind

- "do you really need this" instead of "how you need this"
- only the bare minimum of traffic between user's device and server
- navigation guards on the firs line

### Built on the top of amazing technologies, connecting

- as enterprise as it can get [Oracle Data base](https://www.oracle.com/database/)
- true open source community driven [Vue Ecosystem](https://vuejs.org/)
./apps/wiki/.vitepress/theme/style.css
css
/**
 * Customize default theme styling by overriding CSS variables:
 * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
 */

/**
 * Colors
 *
 * Each colors have exact same color scale system with 3 levels of solid
 * colors with different brightness, and 1 soft color.
 *
 * - `XXX-1`: The most solid color used mainly for colored text. It must
 *   satisfy the contrast ratio against when used on top of `XXX-soft`.
 *
 * - `XXX-2`: The color used mainly for hover state of the button.
 *
 * - `XXX-3`: The color for solid background, such as bg color of the button.
 *   It must satisfy the contrast ratio with pure white (#ffffff) text on
 *   top of it.
 *
 * - `XXX-soft`: The color used for subtle background such as custom container
 *   or badges. It must satisfy the contrast ratio when putting `XXX-1` colors
 *   on top of it.
 *
 *   The soft color must be semi transparent alpha channel. This is crucial
 *   because it allows adding multiple "soft" colors on top of each other
 *   to create a accent, such as when having inline code block inside
 *   custom containers.
 *
 * - `default`: The color used purely for subtle indication without any
 *   special meanings attached to it such as bg color for menu hover state.
 *
 * - `brand`: Used for primary brand colors, such as link text, button with
 *   brand theme, etc.
 *
 * - `tip`: Used to indicate useful information. The default theme uses the
 *   brand color for this by default.
 *
 * - `warning`: Used to indicate warning to the users. Used in custom
 *   container, badges, etc.
 *
 * - `danger`: Used to show error, or dangerous message to the users. Used
 *   in custom container, badges, etc.
 * -------------------------------------------------------------------------- */

:root {
  --vp-c-default-1: var(--vp-c-gray-1);
  --vp-c-default-2: var(--vp-c-gray-2);
  --vp-c-default-3: var(--vp-c-gray-3);
  --vp-c-default-soft: var(--vp-c-gray-soft);

  --vp-c-brand-1: var(--vp-c-indigo-1);
  --vp-c-brand-2: var(--vp-c-indigo-2);
  --vp-c-brand-3: var(--vp-c-indigo-3);
  --vp-c-brand-soft: var(--vp-c-indigo-soft);

  --vp-c-tip-1: var(--vp-c-brand-1);
  --vp-c-tip-2: var(--vp-c-brand-2);
  --vp-c-tip-3: var(--vp-c-brand-3);
  --vp-c-tip-soft: var(--vp-c-brand-soft);

  --vp-c-warning-1: var(--vp-c-yellow-1);
  --vp-c-warning-2: var(--vp-c-yellow-2);
  --vp-c-warning-3: var(--vp-c-yellow-3);
  --vp-c-warning-soft: var(--vp-c-yellow-soft);

  --vp-c-danger-1: var(--vp-c-red-1);
  --vp-c-danger-2: var(--vp-c-red-2);
  --vp-c-danger-3: var(--vp-c-red-3);
  --vp-c-danger-soft: var(--vp-c-red-soft);
}

/**
 * Component: Button
 * -------------------------------------------------------------------------- */

:root {
  --vp-button-brand-border: transparent;
  --vp-button-brand-text: var(--vp-c-white);
  --vp-button-brand-bg: var(--vp-c-brand-3);
  --vp-button-brand-hover-border: transparent;
  --vp-button-brand-hover-text: var(--vp-c-white);
  --vp-button-brand-hover-bg: var(--vp-c-brand-2);
  --vp-button-brand-active-border: transparent;
  --vp-button-brand-active-text: var(--vp-c-white);
  --vp-button-brand-active-bg: var(--vp-c-brand-1);
}

/**
 * Component: Home
 * -------------------------------------------------------------------------- */

:root {
  --vp-home-hero-name-color: transparent;
  --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #8a8d93 30%, #9155fd);
  --vp-home-hero-image-background-image: linear-gradient(-45deg, #8a8d93 50%, #9155fd 50%);
  --vp-home-hero-image-filter: blur(56px);
}

@media (min-width: 640px) {
  :root {
    --vp-home-hero-image-filter: blur(56px);
  }
}

@media (min-width: 960px) {
  :root {
    --vp-home-hero-image-filter: blur(68px);
  }
}

/**
 * Component: Custom Block
 * -------------------------------------------------------------------------- */

:root {
  --vp-custom-block-tip-border: transparent;
  --vp-custom-block-tip-text: var(--vp-c-text-1);
  --vp-custom-block-tip-bg: var(--vp-c-brand-soft);
  --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
}

/**
 * Component: Algolia
 * -------------------------------------------------------------------------- */

.DocSearch {
  --docsearch-primary-color: var(--vp-c-brand-1) !important;
}

/**
 * Markdown IT Video
 * -------------------------------------------------------------------------- */

.embed-responsive-16by9 {
  padding-top: 56.25%;
  position: relative;
  display: block;
}

.embed-responsive-item {
  position: absolute;
  top: 0;
  left: 0;
  border: 0px;
}

See more at VitePress - Default Theme Configuration.

Set top level navigation nav and multilevel navigation sidebar.

/apps/wiki/.vitepress/config.ts
ts
import { defineConfig } from 'vitepress'

// https://vitepress.dev/reference/site-config
export default defineConfig({
  title: 'My site',
  description: 'My site',
  themeConfig: {
    // https://vitepress.dev/reference/default-theme-config
    nav: [
      { text: 'My site', link: 'https://my.site' },
      { text: 'Apps', link: 'https://apps.my.site' },
      { text: 'Introduction', link: '/introduction/introduction' },
      { text: 'Guide', link: '/guide/getting-started/getting-started' },
    ],

    sidebar: {
      '/introduction/': [
        {
          text: 'Why?',
          items: [
            { text: 'Vision', link: '/introduction/vision' },
            //
          ],
        },
      ],
      '/guide/': [
        //
        {
          text: 'Wiki',
          items: [
            { text: 'Setting up VitePress', link: '/guide/wiki/setting-up-vitepress' },
            { text: 'VitePress configuration', link: '/guide/wiki/vitepress-configuration' },
            { text: 'Custom markdown', link: '/guide/wiki/custom-markdown' },
          ],
        },
      ],
    },

    socialLinks: [{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }],
  },
})

Local search can be enabled in /apps/wiki/.vitepress/config.ts

ts
export default defineConfig({
  title: "My site",
  description: "My site",
  themeConfig: {
    // https://vitepress.dev/reference/default-theme-config
    search: {
      provider: "local",
    },
    //
  },
  //
}