cppmanlite
Lightweight serverless C++ documentation lookup — a pure Python package and static site powered by cppreference.com.
Features
- Pure Python — no C dependencies, works in CPython, Pyodide, Jupyter
- Static site — served from GitHub Pages or any static host
- Client-side search — lunr.js fuzzy search over a ~1MB index
- On-demand page loading — fetches from cppreference.com or local bundle
- Auto-updating — GitHub Action refreshes the index monthly
- Kubernetes-ready — Helm chart included for
/cppmanliteroute
Python package
pip install cppmanlite
import cppmanlite
# Search for C++ documentation
cppmanlite.search("vector")
# [{'title': 'std::vector', 'url': 'cpp/container/vector.html', ...}, ...]
# Display a page (renders HTML in Jupyter, plain text in terminal)
cppmanlite.man("std::vector")
# Alias
cppmanlite.help("sort")
Works in Pyodide (Python in the browser) — no compiled dependencies required.
Static site
The site/ directory contains a standalone search UI:
index.html— search box + results + page readerapp.js— lunr.js search + on-demand page fetchingstyle.css— dark/light theme
Deployed to GitHub Pages at: https://dive4dec.github.io/cppmanlite/
Docker / Kubernetes
docker build -t cppmanlite:v1 .
Multi-stage build: downloads the cppreference HTML archive, strips boilerplate, builds a search index, and serves everything via nginx.
helm install cppmanlite ./chart -n cppmanlite
Serves at https://socratic.cs.cityu.edu.hk/cppmanlite/
How it works
-
Index building (
scripts/build_index.py): Downloads the cppreference HTML book archive, extracts page titles + snippets, fixes relative URLs, and writes a compact JSON index (~1.2MB for 6,000+ pages). -
Search: lunr.js builds a client-side full-text search index from the JSON. Results show title, URL path, and a content snippet.
-
Page reading: When a user clicks a result, the reader fetches the page — either from a local
docs/bundle (Docker/K8s deployment) or directly from cppreference.com (GitHub Pages). -
Auto-update: A GitHub Action runs monthly, downloads the latest cppreference archive, rebuilds the index, and deploys to GitHub Pages.
Data source
Documentation from cppreference.com, licensed under CC-BY-SA 3.0 / GFDL. The HTML book archive is published by PeterFeicht/cppreference-doc.
License
MIT — see LICENSE.
Release files for cppmanlite 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cppmanlite-0.1.7.tar.gz | 704.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cppmanlite-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.4 MB
Release files / cppmanlite-0.1.7.tar.gz
| Download URL | cppmanlite-0.1.7.tar.gz |
|---|---|
| Size | 704.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
954869f92a271adb1c553a10e915a1d5dc3ba7ca4430e850206f2d4efda63bfd
|
|
BLAKE2b-256 checksum How to use checksums |
93dd9e6fe0ce3d24aee8984f56fb1f342b1042e296e7220cc8a2d2bfed16cd75
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.5
|
Release files / cppmanlite-0.1.7-py3-none-any.whl
| Download URL | cppmanlite-0.1.7-py3-none-any.whl |
|---|---|
| Size | 720.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
17333713a93aa75c0c2d48c8effde274e0df208d67e32626cf09d6256b18db97
|
|
BLAKE2b-256 checksum How to use checksums |
d23da17ca86f7e272820ffd7cea45f5de4902997f61ea4002d07a3736adb1ef1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.5
|