ArtFeed
Соцсеть для авторов, где классик и обычный автор стоят рядом. Тексты и картины в одной ленте, у каждого автора своя страница на поддомене.
- Роль
- Бэкенд и инфраструктура
- Период
- 2026 — сейчас
- Статус
- Бета
- Код
- Закрыт
Интерфейс делает команда фронтенда. Я отвечаю за бэкенд и инфраструктуру: всё, что на этих экранах загружается, ищется и сохраняется.
Задача
Авторам негде собрать всё своё творчество в одном месте. Стихи по традиции публикуют на одном старом сайте, прозу на другом, картины где-то ещё. А в обычных соцсетях работа тонет в ленте между мемами и рекламой: нет удобного формата для чтения, собраний по жанрам и нормального профиля автора.
ArtFeed собирает всё на одной площадке: стихи, прозу и картины в одной ленте, подписки, комментарии и соавторство, как в привычной соцсети, плюс развёрнутый профиль со своим адресом имя.artfeed.ru. Рядом классики, от Пушкина до Айвазовского, с произведениями и биографиями: читателю есть что почитать и посмотреть с первого дня, а новые авторы стоят с ними на одной полке.
Ограничения: проект рассчитан на годы, поэтому код должен оставаться понятным; персональные данные обрабатываются по 152-ФЗ и не утекают ни в логи, ни наружу.
Сейчас на artfeed.ru работает бета от 16 сентября. Полная версия выходит 1 января 2027 года, её проверяют тестировщики на стейджинге.
Что я сделал
- 01
Модульный монолит на DDD и CQRS
Модули зависят строго в одну сторону, команды и запросы разделены, зависимости собирает Dishka. Границы проверяет import-linter прямо в CI.
- 02
Права доступа в одном месте
Кто что видит и может делать, описано классами политик в домене, а не разбросано по эндпоинтам. Чужое отвечает 404, как будто его нет.
- 03
Вход и безопасность
Пароли на argon2, 2FA через приложение, вход через VK ID, лимиты запросов, повторное подтверждение для опасных действий. Секретные поля шифруются в базе.
- 04
Фоновая работа
События идут через outbox, уведомления приходят web push, карта сайта собирается по расписанию. Воркер и планировщик работают на Taskiq.
- 05
Больше 170 эндпоинтов и контракт для фронта
Схема OpenAPI и коды ошибок хранятся в репозитории: любое изменение API видно в диффе, а фронтенд получает список правок.
- 06
Три окружения и выкатка в один клик
local, staging и prod на Docker Compose за Traefik, приватный доступ через Headscale, все операции через Taskfile. Выкатка и откат через GitHub Actions.
- 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