ArtFeed

Соцсеть для авторов, где классик и обычный автор стоят рядом. Тексты и картины в одной ленте, у каждого автора своя страница на поддомене.

Открыть artfeed.ru
Роль
Бэкенд и инфраструктура
Период
2026 — сейчас
Статус
Бета
Код
Закрыт

Интерфейс делает команда фронтенда. Я отвечаю за бэкенд и инфраструктуру: всё, что на этих экранах загружается, ищется и сохраняется.

Классики: профили авторов, подписи и счётчики работ приходят из API. Бета, сентябрь 2026.

Задача

Авторам негде собрать всё своё творчество в одном месте. Стихи по традиции публикуют на одном старом сайте, прозу на другом, картины где-то ещё. А в обычных соцсетях работа тонет в ленте между мемами и рекламой: нет удобного формата для чтения, собраний по жанрам и нормального профиля автора.

ArtFeed собирает всё на одной площадке: стихи, прозу и картины в одной ленте, подписки, комментарии и соавторство, как в привычной соцсети, плюс развёрнутый профиль со своим адресом имя.artfeed.ru. Рядом классики, от Пушкина до Айвазовского, с произведениями и биографиями: читателю есть что почитать и посмотреть с первого дня, а новые авторы стоят с ними на одной полке.

Ограничения: проект рассчитан на годы, поэтому код должен оставаться понятным; персональные данные обрабатываются по 152-ФЗ и не утекают ни в логи, ни наружу.

Сейчас на artfeed.ru работает бета от 16 сентября. Полная версия выходит 1 января 2027 года, её проверяют тестировщики на стейджинге.

Что я сделал

  1. 01

    Модульный монолит на DDD и CQRS

    Модули зависят строго в одну сторону, команды и запросы разделены, зависимости собирает Dishka. Границы проверяет import-linter прямо в CI.

  2. 02

    Права доступа в одном месте

    Кто что видит и может делать, описано классами политик в домене, а не разбросано по эндпоинтам. Чужое отвечает 404, как будто его нет.

  3. 03

    Вход и безопасность

    Пароли на argon2, 2FA через приложение, вход через VK ID, лимиты запросов, повторное подтверждение для опасных действий. Секретные поля шифруются в базе.

  4. 04

    Фоновая работа

    События идут через outbox, уведомления приходят web push, карта сайта собирается по расписанию. Воркер и планировщик работают на Taskiq.

  5. 05

    Больше 170 эндпоинтов и контракт для фронта

    Схема OpenAPI и коды ошибок хранятся в репозитории: любое изменение API видно в диффе, а фронтенд получает список правок.

  6. 06

    Три окружения и выкатка в один клик

    local, staging и prod на Docker Compose за Traefik, приватный доступ через Headscale, все операции через Taskfile. Выкатка и откат через GitHub Actions.

  7. 07

    Бэкапы и мониторинг

    База каждую ночь шифруется и уходит в S3 в России, а отдельный скрипт проверяет, что из бэкапа можно восстановиться. Ошибки собирает свой Bugsink, доступность отслеживает Uptime Kuma.

Стек

  • FastAPI
  • PostgreSQL
  • Redis
  • Taskiq
  • Python
  • SQLAlchemy
  • Alembic
  • Dishka
  • Pydantic
  • S3
  • structlog
  • Sentry
  • pytest
  • testcontainers
  • mypy
  • ruff
  • import-linter
  • Docker Compose
  • Traefik
  • GitHub Actions
  • Headscale
  • Taskfile