Replace the old CSV-upload-based CMS with an SSG architecture where templates live in git as .md.jinja files with YAML frontmatter and data comes directly from DuckDB serving tables. Only articles and published_scenarios remain in SQLite for routing/state. - Content module: discover, load, generate, preview functions - Migration 0018: drop article_templates + template_data, recreate articles + published_scenarios without FK references, add template_slug/language/date_modified/seo_head columns - Admin routes: read-only template views with generate/regenerate/preview - SEO pipeline: canonical URLs, hreflang (EN+DE), JSON-LD (Article, FAQPage, BreadcrumbList), Open Graph tags baked at generation time - Example template: city-cost-de.md.jinja for German city market data Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
28 lines
608 B
TOML
28 lines
608 B
TOML
[project]
|
|
name = "padelnomics"
|
|
version = "0.1.0"
|
|
description = "Plan, finance, and build your padel business"
|
|
readme = "../README.md"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"quart>=0.19.0",
|
|
"aiosqlite>=0.19.0",
|
|
"python-dotenv>=1.0.0",
|
|
"itsdangerous>=2.1.0",
|
|
"jinja2>=3.1.0",
|
|
"hypercorn>=0.17.0",
|
|
"paddle-python-sdk>=1.13.0",
|
|
"mistune>=3.0.0",
|
|
"resend>=2.22.0",
|
|
"weasyprint>=68.1",
|
|
"duckdb>=1.0.0",
|
|
"pyyaml>=6.0",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/padelnomics"]
|