Сайт-резюме kirbear
Личный сайт-резюме, где контент лежит в Markdown-файлах репозитория, а в базе только счётчики просмотров.
- статус
- в разработке
- роль
- автор
- период
- 2026-09 — настоящее время
- стек
- Python, FastAPI, Jinja2, PostgreSQL, SQLAlchemy, Alembic, Docker
- результат
- В разработке: собран каркас — парсер frontmatter с валидацией через Pydantic, идемпотентная синхронизация content/ в базу и счётчик просмотров с посуточной дедупликацией по хешу вместо хранения IP.
Сайт собран вокруг одного решения: источник правды для контента — файлы, а не база.
Заметки и карточки проектов лежат в content/ Markdown-файлами с frontmatter,
скрипт синхронизации раскладывает их в таблицу content, а страницы рендерятся уже из неё.
Смысл в том, что базу можно потерять и пересоздать из репозитория. Единственное, чего нет
в файлах, — счётчики просмотров, поэтому синхронизация никогда не удаляет строки:
исчезнувший файл переводит запись в is_published = false.
Просмотры считаются без хранения IP. Ключ дедупликации — sha256(IP + User-Agent + суточная соль),
уникальный индекс по (content_id, visitor_hash, day) не даёт одному посетителю накрутить счётчик за сутки,
а смена соли раз в сутки не даёт связать посещения разных дней.
TODO(кирилл): добавить ссылку на репозиторий, когда выложишь его публично.
0 просмотров