feat(cms): U1 content model + migration scaffold for blog/news/events

Establish content/ as the source of truth for editable content and
back-fill it from the existing detail pages, per U1 of the no-code CMS
plan.

- docs/content-model.md: front-matter schema (EN/MK/SI), body_format
  html-vs-markdown, content/events -> projects/ output mapping.
- tools/migrate_pages_to_content.py: bs4/yaml extractor; pulls title,
  subtitle, category, ISO date (from ARTICLE_DATES), hero image+caption;
  preserves the article body PLUS trailing sibling sections (event
  galleries) verbatim as body_format: html. Reports unparseable pages
  instead of emitting half-formed files.
- content/**: 51 files (17 entries x EN/MK/SI), 0 skips.
- tools/tests/test_migrate_roundtrip.py: 12 characterization tests
  (structured fields, news-has-no-subtitle, event gallery/lightbox
  preserved, Cyrillic UTF-8 round-trip, every page parses).
- .gitignore: ignore __pycache__/ and *.pyc.

U1 is unblocked and standalone. U2 (render content -> pages) is next;
U5/U6 remain blocked on Open Question Q1 (Gitea<->GitHub topology).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
popovskikandClaude Opus 4.8 committed 2026-08-08 16:18:29 +02:00
1 parent 6204db5f0c
commit 9ddd0f88ef
55 files changed
+4572

No files matched your search

@@ -0,0 +1,26 @@
---
type: news
slug: proof-of-means-updated-2026
lang: en
source_folder: news
title: Proof-of-means amount updated to €507,43 per month
date: '2026-08-01'
date_line: Published 1 August 2026
hero:
src: /images/news-proof-of-means.webp
alt: A cash box filled with euro coins and banknotes
width: '1600'
height: '1067'
caption_html: <span class="fig-illustrative"><i aria-hidden="true" class="fas fa-circle-info"></i> Illustrative image</span> · Image by <a href="https://pixabay.com/users/alexas_fotos-686414/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1642989" rel="noopener" target="_blank">Alexa</a> from <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1642989" rel="noopener" target="_blank">Pixabay</a>
body_format: html
---
<div class="news-article-body">
<p>If you are applying for or renewing a student residence permit in Slovenia, you must prove you have enough money to support yourself. That requirement is tied to Slovenia’s basic minimum income (osnovni znesek minimalnega dohodka).</p>
<p>From 1 April 2026 this basic minimum income is €507,43 per month. This is the amount you should be ready to show for the whole academic year, most commonly through a parent’s written statement of support, or through other accepted proof such as a scholarship, bank funds, or student-work earnings.</p>
<p>Because the figure follows the minimum income, it can change again. Always confirm the current official amount with your upravna enota (administrative unit) before you submit, and ask how they calculate the period and which evidence they accept.</p>
</div>
<div class="news-source">
<span class="news-source-label"><i aria-hidden="true" class="fas fa-up-right-from-square"></i> Official source</span>
<a href="https://www.gov.si/teme/denarna-socialna-pomoc/" rel="noopener" target="_blank">gov.si, Financial social assistance</a>
</div>
<a class="btn btn-secondary news-article-cta" href="../../student-welcome-guide/student-residence-permit/">Read the residence permit guide</a>