nakama/README.md

374 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🌟 NakamaSpace - Telegram Mini App
> Полноценная мини-социальная сеть внутри Telegram с 4 вкладками, системой постов, поиском, уведомлениями и модерацией.
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![Node.js](https://img.shields.io/badge/Node.js-16+-green.svg)](https://nodejs.org/)
[![React](https://img.shields.io/badge/React-18+-61DAFB.svg)](https://reactjs.org/)
[![MongoDB](https://img.shields.io/badge/MongoDB-5+-47A248.svg)](https://www.mongodb.com/)
---
## ✨ Возможности
### 🏠 Лента постов
- ✅ Создание постов с текстом и изображениями (до 10MB)
- ✅ Обязательные теги: **Furry** 🦊, **Anime** 🎌, **Other**
- ✅ Лайки, комментарии, репосты
- ✅ Упоминания пользователей (@username)
- ✅ NSFW маркировка контента
- ✅ Фильтрация по тегам
- ✅ Бесконечная загрузка (пагинация)
### 🔍 Поиск
- ✅ Интеграция с **e621 API** (Furry контент)
- ✅ Интеграция с **gelbooru API** (Anime контент)
-**Прокси изображений через сервер** (доступ из РФ)
- ✅ Смешанный режим поиска (Mixed)
- ✅ Автокомплит тегов с количеством результатов
- ✅ Просмотрщик изображений с swipe навигацией
- ✅ Скачивание изображений
- ✅ Отображение рейтинга и тегов
### 🔔 Уведомления
- ✅ Telegram-стиль баблов с цветовой кодировкой
- ✅ Уведомления о подписках, лайках, комментариях, репостах
- ✅ Упоминания в постах
- ✅ Счётчик непрочитанных
- ✅ Превью постов в уведомлениях
- ✅ Переходы к постам и профилям
### 👤 Профиль
- ✅ Аватар и данные из Telegram
- ✅ Редактируемое био (до 300 символов)
- ✅ Статистика: подписчики / подписки
- ✅ Настройки фильтров контента:
- Без Furry контента
- Только Anime
- Без NSFW
- ✅ Настройки поиска (Furry / Anime / Mixed)
- ✅ Донаты через Telegram Stars (UI готов)
- ✅ Роли: User / Moderator / Admin
### 🛡️ Модерация
- ✅ Система жалоб на посты
- ✅ Панель модератора
- ✅ Удаление постов
- ✅ Блокировка пользователей (временная/постоянная)
- ✅ Установка NSFW флага
- ✅ Просмотр и обработка репортов
---
## 🚀 Быстрый старт
### Супер быстрый запуск (5 минут)
```bash
# 1. Клонировать репозиторий
git clone <repository-url>
cd nakama
# 2. Запустить автоматический скрипт
./start.sh
```
Скрипт автоматически:
- ✅ Проверит и запустит MongoDB
- ✅ Установит все зависимости
- ✅ Создаст .env файлы из примеров
- ✅ Запустит приложение
**Единственное что нужно** - получить Telegram Bot Token у [@BotFather](https://t.me/BotFather) и добавить в `.env`
📖 Подробная инструкция: [QUICKSTART.md](QUICKSTART.md)
### Ручная установка
```bash
# 1. Установить зависимости
npm install
cd frontend && npm install && cd ..
# 2. Настроить .env файлы
cp .env.example .env
cp frontend/.env.example frontend/.env
# Отредактируйте .env файлы
# 3. Запустить MongoDB
brew services start mongodb-community # macOS
sudo systemctl start mongod # Linux
# 4. Запустить приложение
npm run dev
```
📖 Полная инструкция: [SETUP.md](SETUP.md)
---
## 🎨 Дизайн-система
### Минималистичный iOS-стиль 2025
- **Философия**: Чистый, минималистичный интерфейс в стиле нового Telegram
- **Типографика**: SF Pro Display (iOS) / Roboto (Android)
- **Радиус**: 16px для карточек, 12px для кнопок
- **Тени**: Мягкие, rgba(0,0,0,0.08)
- **Анимации**: Плавные, 0.2-0.3s ease-out
### Цветовая палитра
```
🎨 Основные цвета
├── Фон: #F2F3F5
├── Карточки: #FFFFFF
├── Текст: #1C1C1E
├── Акцент: #007AFF (iOS синий)
└── Границы: #C7C7CC
🏷️ Теги
├── Furry: #FF8A33 (оранжевый)
├── Anime: #4A90E2 (синий)
└── Other: #A0A0A0 (серый)
⚠️ Дополнительные
├── NSFW: #FF3B30 (красный)
├── Успех: #34C759 (зелёный)
└── Донаты: #FFD700 (золотой)
```
---
## 📱 Технологии
### Frontend
- **React 18** - UI библиотека
- **Vite** - Быстрый сборщик
- **React Router** - Маршрутизация
- **Telegram Mini App SDK** - Интеграция с Telegram
- **Axios** - HTTP клиент
- **Lucide React** - Иконки
### Backend
- **Node.js + Express** - API сервер
- **MongoDB + Mongoose** - База данных
- **Multer** - Загрузка файлов
- **Crypto** - Telegram Init Data валидация
### Интеграции
- **Telegram Bot API** - Авторизация через Init Data
- **e621 API** - Поиск Furry контента
- **gelbooru API** - Поиск Anime контента
---
## 📂 Структура проекта
```
nakama/
├── 📁 backend/ Backend сервер (Node.js + Express)
│ ├── 📁 models/ MongoDB схемы (User, Post, Notification, Report)
│ ├── 📁 routes/ API endpoints (auth, posts, users, etc)
│ ├── 📁 middleware/ Middleware функции (auth)
│ └── 📄 server.js Точка входа сервера
├── 📁 frontend/ Frontend приложение (React + Vite)
│ ├── 📁 src/
│ │ ├── 📁 components/ React компоненты (PostCard, Modals, etc)
│ │ ├── 📁 pages/ Страницы-вкладки (Feed, Search, Notifications, Profile)
│ │ ├── 📁 utils/ Утилиты (API клиент, Telegram SDK)
│ │ └── 📁 styles/ CSS стили с переменными
│ └── 📄 index.html
├── 📄 README.md Основная документация (этот файл)
├── 📄 SETUP.md Подробная инструкция по установке
├── 📄 QUICKSTART.md Быстрый старт за 5 минут
├── 📄 PROJECT_STRUCTURE.md Детальная карта проекта
├── 📄 CONTRIBUTING.md Гайд для разработчиков
└── 📄 start.sh Скрипт быстрого запуска
```
📖 Полная карта проекта: [PROJECT_STRUCTURE.md](PROJECT_STRUCTURE.md)
---
## 🔐 Безопасность
-**Telegram Init Data** валидация с HMAC-SHA256
-**Безопасная загрузка** файлов с проверкой типов
-**Роли и права** доступа (User, Moderator, Admin)
-**XSS защита** через React
-**CORS** настройки
-**HTTPS only** для production
---
## 📚 Документация
- [📖 README.md](README.md) - Основная документация (вы здесь)
- [⚡ QUICKSTART.md](QUICKSTART.md) - Быстрый старт за 5 минут
- [🔧 SETUP.md](SETUP.md) - Подробная инструкция по установке и деплою
- [📂 PROJECT_STRUCTURE.md](PROJECT_STRUCTURE.md) - Детальная структура проекта
- [🤝 CONTRIBUTING.md](CONTRIBUTING.md) - Гайд для разработчиков
---
## 🛠️ Разработка
### Скрипты
```bash
# Запуск в dev режиме (backend + frontend)
npm run dev
# Только backend
npm run server
# Только frontend
npm run client
# Сборка для production
npm run build
# Production запуск
npm start
```
### Локальное тестирование в Telegram
Telegram требует HTTPS для Mini Apps. Используйте ngrok:
```bash
# Установить ngrok
brew install ngrok # macOS
# Запустить туннель
ngrok http 5173
# Скопируйте HTTPS URL и добавьте в BotFather
```
### Назначение модераторов
```javascript
// Подключиться к MongoDB
mongo nakama
// Назначить роль
db.users.updateOne(
{ telegramId: "YOUR_TELEGRAM_ID" },
{ $set: { role: "moderator" } } // или "admin"
)
```
---
## 🚢 Деплой
### Рекомендуемые платформы
- **Backend**: Railway, Render, Heroku
- **Frontend**: Vercel, Netlify
- **MongoDB**: MongoDB Atlas (бесплатный tier)
### Быстрый деплой на Railway
```bash
npm i -g @railway/cli
railway login
railway init
railway up
```
📖 Подробнее: [SETUP.md - Production деплой](SETUP.md#production-деплой)
---
## 🎯 Roadmap
### ✅ Реализовано (v2.0)
- [x] Backend API (Express + MongoDB)
- [x] Frontend React приложение
- [x] Telegram авторизация
- [x] Система постов (CRUD, лайки, комментарии, репосты)
- [x] Теги (Furry, Anime, Other)
- [x] Поиск (e621 + gelbooru)
- [x] Уведомления
- [x] Профили и подписки
- [x] Модерация и жалобы
- [x] Настройки фильтров
- [x] iOS-стиль дизайн
- [x] **Dark mode** - переключатель тем
- [x] **Rate limiting** - защита от спама
- [x] **Redis кэширование** - ускорение API
- [x] **Поиск по постам** - полнотекстовый
- [x] **Хэштеги** - система #тегов
- [x] **Статистика** - просмотры, engagement
- [x] **WebSocket** - real-time уведомления
- [x] **Telegram Stars** - UI готов
### 🔜 В планах (v3.0)
- [ ] Unit и E2E тесты
- [ ] Приватные сообщения (чаты)
- [ ] Группы/сообщества
- [ ] Рекомендательный алгоритм (ML)
- [ ] Мультиязычность (EN/RU/JP)
- [ ] Telegram Mini App Ads
- [ ] Stories функция
- [ ] Voice messages
- [ ] Live streaming
---
## 🤝 Вклад в проект
Мы рады любому вкладу! Смотрите [CONTRIBUTING.md](CONTRIBUTING.md) для деталей.
### Как помочь
1. 🐛 Сообщить о баге через Issues
2. 💡 Предложить новую функцию
3. 🔧 Исправить баг или добавить фичу
4. 📖 Улучшить документацию
5. ⭐ Поставить звезду проекту!
---
## 📄 Лицензия
MIT License - см. [LICENSE](LICENSE)
---
## 👥 Авторы
Создано с ❤️ для сообщества
---
## 📞 Поддержка
- 💬 **Issues**: Создайте Issue на GitHub
- 📖 **Документация**: Смотрите [SETUP.md](SETUP.md)
- 🐛 **Баги**: Смотрите [Troubleshooting](SETUP.md#troubleshooting)
---
## 🌟 Благодарности
- [Telegram](https://telegram.org/) за отличную платформу Mini Apps
- [e621](https://e621.net/) за API
- [gelbooru](https://gelbooru.com/) за API
- Сообществу за поддержку и идеи
---
<div align="center">
**[⬆ Наверх](#-nakamaspace---telegram-mini-app)**
Сделано с 🦊 и 🎌
</div>