Table of contents
Quick start - for the impatient
This chapter guides you very quickly from installation to a fully-running site. For more information, please refer to the rest of the documentation.
Step 1 - get pcms
You only need a single pcms binary to run a website. Check out the sections below for a brief description how you get one.
As pre-built binary
You can download a pcms binary from a pre-built release from github:
https://github.com/bylexus/pcms/releases
Download and extract the pcms binary that fits your OS and architecture.
As go source code
You can build pcms from the go source code:
- install the go build toolchain
- clone the
pcmssource code from git:
$ git clone https://github.com/bylexus/pcms.git
- build it:
$ cd pcms
$ make build # ==> build goes to bin/pcms
Step 2 - init your project
pcms comes with a built-in starter template, which makes it easy to get started.
Open a terminal, and create a new pcms skeleton:
$ pcms init [project-path]
$ cd [project-path]
$ pcms serve
And done! Your site is serving on http://localhost:3000/!
Step 3 - Generate content!
The site skeleton is already up and running - now it’s time to look at the folder structure and implement some content.
After initializing a skeleton app with pcms init, you get the following file structure
(content a bit redacted for brevity):
.
├── log
├── pcms-config.yaml # The main configuration file. Adapt as needed
├── site # your site's source files
│ ├── index.html
│ ├── favicon.png
│ ├── html-page
│ │ ├── index.html
│ │ └── sunset.webp
│ ├── markdown-page
│ │ ├── index.md
│ │ └── sunset.webp
│ └── static
│ └── css
│ └── main.css
└── templates # pongo2 templates for your html / markdown content
├── base.html
├── error.html
└── markdown.html
Your page’s content goes to the site folder: This folder contains all your source files, markdown and html partials,
static content and whatnot.
Inspect the folder structure to see how they work. It is really simple:
- the main config file is
pcms-config.yamlin the base directory. It stores all the important information to run your site. - The
site/folder contains your source files: html, markdown partials, static content etc. You mainly work in here to generate content. - The
templates/folder contains yourpongo2base templates for your site, if needed
YAML front matter
index.html and index.md files support a YAML front matter to define template variables: See site/markdown-page/index.md as an example:
---
template: "markdown.html"
title: "Markdown sample page"
shortTitle: "Markdown"
iconCls: "fab fa-markdown"
mainClass: "markdown"
metaTags:
- name: "keywords"
content": "pcms,cms"
- name: "description"
content": "Markdown sample page"
---
# Markdown Demo Page
[<i class="fas fa-home"></i> Back to home](/)
Your actual Route: /quickstart/index.html
Access to pongo2 syntax, e.g. actual time: 11.04.2026 14:57:39
Use an icon: <i class=""></i>
The YAML front matter is the start part beteween the --- separators, and (may) contain valid YAML content.
This content then will become available in your pongo2 templates via the Page.Metadata object.
For Markdown files, the only needed entry is template:, which defines the HTML template to be used from the templates/ folder
to generate the final HTML.
Step 4: Index and serve
pcms index builds the sqlite-based page index. Issue this if any of your page contents change to update the page index.
pcms serve starts the web server and processes your page files and other static content.
Step 5: … and beyond!
Please have a look at the other chapters for a more detailed description on how to configure
and use pcms.