Files
kennethreitz.org/pyproject.toml
T
kennethreitz 5cd48abb90 Port site to Responder (#8)
* Initial Responder port — core content serving working

Homepage, markdown pages, directory listings, image galleries
all rendering. Flask template compatibility via RequestWrapper
and FakeConfig shims.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Complete Responder port — all routes working

Ported all routes from Flask blueprints: archive, search, OG images,
RSS, sitemap, robots.txt, API endpoints, directory browser.
All 25+ routes returning 200.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Update Dockerfile for Responder, warm caches on import

CMD now runs engine_responder:api via uvicorn.
Cache warming happens on module import for production.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Rename engine_responder.py to engine.py

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Update colophon for Responder

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix essay pages, OG images, and PDF export

- Fix find_related_posts and find_adjacent_posts call signatures
- Fix OG image route to use path:path for nested paths
- Add PDF export route with WeasyPrint
- All test plan items passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 14:03:05 -04:00

49 lines
1.4 KiB
TOML

[project]
name = "tuftecms"
version = "0.1.0"
description = "A Flask-based CMS for thoughtful writing, inspired by Edward Tufte's design principles"
readme = "README.md"
requires-python = ">=3.14"
dependencies = [
"flask>=3.1.1",
"uvicorn[standard]>=0.32.0",
"asgiref>=3.8.0",
"mistune>=3.0.0",
"pyyaml>=6.0.0",
"weasyprint>=66.0",
"pillow>=11.3.0",
"gunicorn[gevent]>=21.0.0",
"responder>=3.2.0",
]
authors = [
{name = "Kenneth Reitz", email = "me@kennethreitz.org"}
]
license = {text = "MIT"}
keywords = ["cms", "flask", "markdown", "tufte", "sidenotes", "blog", "digital-garden"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.14",
"Framework :: Flask",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Software Development :: Libraries :: Application Frameworks",
]
[project.urls]
Homepage = "https://github.com/kennethreitz/tuftecms"
Repository = "https://github.com/kennethreitz/tuftecms"
Documentation = "https://github.com/kennethreitz/tuftecms#readme"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["tuftecms"]
[tool.hatch.build.targets.wheel.force-include]
"tuftecms/templates" = "tuftecms/templates"
"tuftecms/static" = "tuftecms/static"