- Fix liked hearts not showing after page reload (sync useEffect in CatCard) - Replace pagination with infinite scroll (useInfiniteQuery + IntersectionObserver) - Add HEIC/HEIF/AVIF image support with sharp conversion to JPEG on upload - Validate MIME type alongside file extension to prevent spoofing - Limit caption to 500 chars; increase upload size limit to 20MB - Delete physical file from uploads/ when post is removed (cats + admin routes) - Add WAL journal mode and graceful shutdown (SIGTERM/SIGINT) to db - Add rate limiter for upload endpoint (10 req / 15 min) - Add pre-deploy backup of data.db and uploads/ to deploy.sh (keeps last 10) - Add plan_modernization.md with ideas for future improvements Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7.0 KiB
7.0 KiB
Котограм — план модернизации
Идеи для последующих доработок, сгруппированные по направлениям.
Функционал
Социальное взаимодействие
- Подписки на пользователей — лента только из постов тех, на кого подписан; отдельная вкладка «Все».
- Реакции вместо лайков — несколько эмодзи (❤️ 😂 😮 😢 🔥), каждый даёт разное кол-во очков.
- Репосты / поделиться — пользователь может поделиться ссылкой на пост или репостнуть к себе в профиль.
- Упоминания @username в комментариях с уведомлением (push или in-app badge).
- Теги #хэштеги на фотографиях и фильтрация ленты по тегу.
Контент
- Сторис (истории) — публикация на 24 часа, круговые аватарки с индикатором непросмотренной истории.
- Карусель фотографий — несколько фото в одном посте (swipe).
- Видео поддержка — короткие видео до 30 сек (mp4, mov), хранение в
uploads/. - Черновики — сохранить пост не публикуя.
- Редактирование подписи к своему посту.
Профиль
- Bio / описание — поле до 150 символов в профиле.
- Верификация — значок ✓ для доверенных аккаунтов, назначается администратором.
- Статистика профиля — охват, просмотры за 7/30 дней.
- Закреплённые посты — возможность закрепить 1 пост вверху профиля.
Поиск и открытие
- Страница «Обзор» — сетка популярных постов (по лайкам за 7 дней) как на вкладке «Explore» в Instagram.
- Поиск пользователей по username.
- Лента трендов — ТОП-10 котов недели в sidebar.
Уведомления
- In-app уведомления — новый лайк, комментарий, подписчик (real-time через WebSocket или polling).
- Push-уведомления (PWA) — с разрешения пользователя.
Интерфейс и UX
Навигация
- Мобильный bottom navigation bar — иконки Лента / Поиск / Загрузить / Уведомления / Профиль.
- Жест swipe между постами на мобильном (как в Instagram Stories).
- Keyboard shortcuts для десктопа:
L— лайк,Esc— закрыть модал, стрелки — следующий/предыдущий пост.
Карточка поста
- Двойной тап — лайк (как в Instagram), с анимацией большого сердца поверх фото.
- Lazy loading с blur placeholder пока грузится изображение.
- Zoom по клику/пинчу на фото.
Профиль
- Grid-режим фотографий (3 колонки) как в Instagram по умолчанию, переключатель на список.
- Анимированный аватар — возможность загрузить gif.
Тёмная / светлая тема
- Тема уже есть. Добавить «Авто» по системной теме (уже
prefers-color-scheme, но сделать переключатель 3-позиционный).
Доступность
- Описания (
altтексты) генерировать через API Claude Vision как подсказку при загрузке. - Навигация с клавиатуры для всех интерактивных элементов.
Производительность
- CDN для изображений — вынести
uploads/на Cloudflare R2 / S3, раздавать через CDN. - WebP конвертация — уже есть sharp; конвертировать в WebP вместо JPEG (меньше размер при том же качестве), отдавать JPEG как fallback.
- Мигрировать с sql.js на better-sqlite3 — нативный SQLite, не держит весь файл БД в RAM, в 10-20x быстрее на записи.
- Redis кэш для топа пользователей и трендовых постов (sidebar), TTL 5 минут.
- Виртуальный список (react-virtual / @tanstack/virtual) в ленте при 100+ постов — не рендерить вне viewport.
Безопасность (дополнительно)
- 2FA / TOTP — опционально для аккаунтов.
- Чёрный список слов в комментариях (модерация).
- Жалоба на пост — кнопка «Пожаловаться», уведомление администратору.
- Автоматическое удаление сессий — логаут всех активных сессий при смене пароля.
- Сканирование загружаемых файлов на вирусы через ClamAV (опционально).
Инфраструктура
- Docker —
docker-compose.ymlдля локальной разработки и VPS деплоя. - GitHub Actions CI — автоматический билд и тест при push.
- Автоматические бэкапы БД — cron на сервере каждые 6 часов копирует
data.dbв/backups/. - Health-check endpoint уже есть (
/api/health). Подключить к uptime-мониторингу (UptimeRobot / Betterstack). - Логирование — структурированные JSON-логи через
pinoилиwinstonвместоconsole.log.
Геймификация и монетизация
- Рейтинговые лиги — Bronze / Silver / Gold / Diamond по кол-ву очков.
- Достижения — «Первый кот», «100 лайков», «Месяц на сайте» и т.д. с иконками-бейджами в профиле.
- Ежедневные задания — «Поставь 5 лайков сегодня» за бонусные очки.
- Донаты / супер-лайки — платный лайк с особым отображением (опционально через Stripe/YooKassa).