Files
cats/plan_modernization.md
heagbokat 94fff09a41 feat: infinite scroll, HEIC support, likes fix, security & backup
- 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>
2026-06-26 00:18:46 +03:00

7.0 KiB
Raw Permalink Blame History

Котограм — план модернизации

Идеи для последующих доработок, сгруппированные по направлениям.


Функционал

Социальное взаимодействие

  • Подписки на пользователей — лента только из постов тех, на кого подписан; отдельная вкладка «Все».
  • Реакции вместо лайков — несколько эмодзи (❤️ 😂 😮 😢 🔥), каждый даёт разное кол-во очков.
  • Репосты / поделиться — пользователь может поделиться ссылкой на пост или репостнуть к себе в профиль.
  • Упоминания @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 (опционально).

Инфраструктура

  • Dockerdocker-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).