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 main
your-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 --squash
Only 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 site
Refresh 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 build
Note: 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-extra
The build will take ca. 3 minutes longer and create a considerably more voluminous artifact.