feat: SSG-inspired pSEO CMS — git templates + DuckDB direct reads
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>
This commit is contained in:
18
CHANGELOG.md
18
CHANGELOG.md
@@ -6,6 +6,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Changed
|
||||
- **pSEO CMS: SSG architecture** — templates now live in git as `.md.jinja` files with YAML
|
||||
frontmatter (slug, data_table, url_pattern, etc.) instead of SQLite `article_templates` table;
|
||||
data comes directly from DuckDB serving tables instead of intermediary `template_data` table;
|
||||
admin template views are read-only (edit in git, preview/generate in admin)
|
||||
- **pSEO CMS: SEO pipeline** — article generation bakes canonical URLs, hreflang links (EN + DE),
|
||||
JSON-LD structured data (Article, FAQPage, BreadcrumbList), and Open Graph tags into each
|
||||
article's `seo_head` column at generation time; articles stored with `template_slug`, `language`,
|
||||
and `date_modified` columns for regeneration and freshness tracking
|
||||
|
||||
### Removed
|
||||
- `article_templates` and `template_data` SQLite tables (migration 0018) — replaced by git
|
||||
template files + direct DuckDB reads; `template_data_id` FK removed from `articles` and
|
||||
`published_scenarios` tables
|
||||
- Admin template CRUD routes (create/edit/delete) and CSV upload — replaced by read-only views
|
||||
with generate/regenerate/preview actions
|
||||
- `template_form.html` and `template_data.html` admin templates
|
||||
|
||||
### Changed
|
||||
- **Extraction: one file per source** — replaced monolithic `execute.py` with per-source
|
||||
modules (`overpass.py`, `eurostat.py`, `playtomic_tenants.py`, `playtomic_availability.py`);
|
||||
|
||||
Reference in New Issue
Block a user