A minimal static site generator written in typed Python. This README is for developers contributing to Mackerel. For end-user documentation, see docs.
Clone the repo and set up dependencies:
git clone https://github.com/pkolios/mackerel.git
cd mackerel
uv syncRun tests:
make testLint & type check:
make lintBuild docs:
make docssrc/mackerel/
├── build.py # Build logic
├── cli.py # CLI (init, build, develop)
├── config.py # Configuration loading
├── parsers.py # Front matter parsing
├── renderers.py # Markdown + Jinja2 rendering
├── site/ # Starter site (templates + content)
└── types.py # Typed core types & protocols
- Functional Core, Imperative Shell: Business logic is pure and typed, orchestration happens in CLI.
- Minimal dependencies: Keeping the cli installation time as fast as possible.
- Fork the repo & create a branch.
- Write tests for new features.
- Ensure
make lint testpasses. - Submit a PR.
We follow strict typing (mypy, pyright) and ruff for linting.
Docs are in docs/.
See CHANGELOG.md.
MIT © Paris Kolios