nakama/README.md

374 lines
12 KiB
Markdown
Raw Normal View History

2025-11-03 20:35:01 +00:00
# 🌟 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>