Скачать PDF

Кирилл Медведев

Сайт-резюме 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 просмотров

Ко всем проектам