Terminal-style conference website. Edit one Markdown file, get a working site.
Source repository: cli-minisite
- Edit config
vim config.yml # Set your conference details - Edit
content.mdwith your conference content - Push to GitHub
- GitHub Actions automatically builds and deploys to GitHub Pages
- π₯οΈ Terminal-style interface with command prompt
- π Single Markdown file drives all content
- π Direct URL access with hash routing
- π± Mobile-friendly with fallback navigation
- π₯ All contents printable/downloadable in document form
- π Automated build and deployment with GitHub Actions
You can also access sections directly:
#/about#/program#/venue#/hotels
Setting up an instance is based on including the template as subtree. Follow the script below to get started.
# 1. Create a new repository for your conference
mkdir my-conference-2026
cd my-conference-2026
git init
# 2. Create your configuration files
cat > config.yml << 'EOF'
# Conference Configuration
conference:
title: "My Conference 2026"
subtitle: "Conference subtitle"
# ... (copy structure from example-config.yml)
EOF
cat > content.md << 'EOF'
## About
Conference description here...
## Program
Conference program details...
EOF
# 3. Add the template as a Git subtree
git remote add cli-template https://github.com/pdaengeli/cli-minisite.git
git fetch cli-template main
git read-tree --prefix=template -u cli-template/main:template
# 4. Create root package.json
cat > package.json << 'EOF'
{
"name": "my-conference-2026",
"version": "1.0.0",
"private": true,
"scripts": {
"build": "cd template && npm install && node build.js"
}
}
EOF
# 5. Add .gitignore
cat > .gitignore << 'EOF'
# Generated files
index.html
config.js
sections.json
temp.md
node_modules/
template/node_modules/
*.backup
*.bak
EOF
# 6. Build and test locally
npm run build
# 7. Commit and push
git add -A
git commit -m "Initial conference site setup"
git remote add origin <your-repo-url>
git push -u origin mainyour-conference-repo/
βββ config.yml # Conference configuration
βββ content.md # Conference content (markdown)
βββ package.json # Build script delegator
βββ .gitignore # Ignore generated files
βββ template/ # Template files (via subtree)
βββ build.js
βββ css/
βββ js/
βββ package.json
Before or immediately after your first push, enable GitHub Pages:
- Go to Settings β Pages
- Under Source, select GitHub Actions
- The site will build and deploy automatically on every push to
main
To pull template updates (CSS, JS, build system) without touching your conference content:
git subtree pull --prefix template cli-template main --squashOnly edit: config.yml and content.md. The template directory is managed via Git subtree.
Creating new sections, e.g. for registration or calls for contributions, requires two short steps:
-
Add the new section(s) to
config.yml+ - id: "cfp" + label: "CFP" + icon: "π£" + - id: "register" + label: "Register" + icon: "βοΈ"
-
Add sections with corresponding titles to
content.md+ ## Register + + Registration for API Editions 2026 will open on **January 15, 2026**.
Type these commands in the terminal:
about- Conference informationclear- Clear the terminalhelp- Show all available commandshome- Clear the terminalhotels- Accommodation informationprogram- Schedule and talksvenue- Location details
The set of available commands depends on the sections defined in the configuration and content files.
Make sure you have Pandoc installed.
- Add the template remote (only needed once):
git remote add cli-template https://github.com/pdaengeli/cli-minisite.git
git fetch cli-template main- Create a
package.jsonfile in your repository root:
{
"name": "your-conference-name",
"version": "1.0.0",
"private": true,
"scripts": {
"build": "cd template && npm install && node build.js"
}
}- Build and run:
npm install
npm run build- Serve locally:
python -m http.server 8000
# Or: npx http-server -p 8000Then open http://localhost:8000
Edit conference content and rebuild:
vim content.md # Edit content
vim config.yml # Edit configuration
npm run build # Rebuild the siteRefresh browser to see the changes.
When there are updates to the template (CSS, JS, build system), it makes sense to update the local copy:
# Backup current template
cp -r template template.backup
# Download the latest template
curl -L https://github.com/pdaengeli/cli-minisite/archive/refs/heads/main.tar.gz | tar xz
# Copy the updated template directory
cp -r cli-minisite-main/template/* template/
# Clean up
rm -rf cli-minisite-main
# Rebuild with the new template
npm run buildNote: GitHub Actions automatically uses the latest template when building, so local template updates are optional.
The build creates a PDF reflecting the whole content.md if the Pandoc instance has access to LaTeX. In the GitHub action this is not set up for performance reasons.
Add it in an additional step if needed for the conference page:
- name: Install LaTeX for PDF generation
run: |
sudo apt-get update
sudo apt-get install -y texlive-xetex texlive-fonts-recommended texlive-latex-extraThe build will take ca. 3 minutes longer and create a considerably more voluminous artifact.