492bd1b4e1ae00ddfc6097d1468f2246f780909c
- button.tsx: primary gets gradient + shadow + hover glow + -translate-y-px lift; outline gets border-2 for visibility on dark bg; all variants get active:scale-[0.96] press feel; lg size h-12 for auth forms - Remove hardcoded bg-[var(--accent)] overrides from Login, Register, Feed, Profile, Upload — variants now handle all coloring Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Котограм
Сайт для публикации фотографий котов. React + Vite (фронт), Express + TypeScript (бэк), SQLite.
Первый запуск на сервере
cd /var/www/cats
# 1. Установить зависимости и собрать фронт
npm install --prefix server
npm install --prefix client
npm run build
# 2. Создать файл переменных окружения
cp server/.env.example server/.env
# Отредактировать server/.env: задать JWT_SECRET и ALLOWED_ORIGIN
nano server/.env
# 3. Запустить через PM2
sudo pm2 start npm --name cats -- start
# 4. Зарегистрировать автостарт (один раз на машине)
sudo pm2 startup
# Скопировать и выполнить команду, которую выведет pm2 startup
sudo pm2 save
Переменные окружения (server/.env)
PORT=3040
JWT_SECRET=замените_на_случайную_строку_32_символа
ALLOWED_ORIGIN=http://cats.heagbokat-server.ru
Сгенерировать JWT_SECRET:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Деплой обновлений
cd /var/www/cats
chmod +x deploy.sh # только первый раз
./deploy.sh
Скрипт делает: git pull → сборка фронта → перезапуск PM2.
Управление PM2
sudo pm2 ps # статус процессов
sudo pm2 logs cats # логи сервера
sudo pm2 restart cats # перезапустить
sudo pm2 stop cats # остановить
Данные (не трогать!)
server/data.db— база данных (пользователи, лайки, коты)server/uploads/— загруженные изображения
Оба пути в .gitignore — git pull их не перезапишет.
Первый администратор
При первом запуске автоматически создаётся пользователь admin / admin123.
Обязательно смените пароль через интерфейс или напрямую в БД.
Description
Languages
TypeScript
91.8%
CSS
6.8%
Shell
0.9%
HTML
0.5%