new file: main_dc/BB/README.md
new file: main_dc/BB/documentation/docs.md add general and README.md file for BB project
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
# 🏃♂️ Бегущий Башкир - Беговой Клуб
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
Полнофункциональная платформа для бегового клуба "Бегущий Башкир" с современной веб-архитектурой.
|
||||
|
||||
## 🎯 О проекте
|
||||
|
||||
**Бегущий Башкир** — это цифровая экосистема для бегового сообщества Башкортостана, объединяющая:
|
||||
- 🌐 **Веб-сайт** (Vue.js SPA)
|
||||
- 🔧 **REST API** (Go + PostgreSQL)
|
||||
- 📊 **Аналитику** (Node.js)
|
||||
- 🔐 **Автоматическую SSL** (Certbot)
|
||||
- 🐳 **Контейнеризацию** (Docker Compose)
|
||||
|
||||
## 🏗️ Архитектура
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────┐
|
||||
│ Docker Compose Cluster │
|
||||
├─────────────────────────────────────────┤
|
||||
│ Nginx → API_BB (Go) → DB_BB (Postgres) │
|
||||
│ ↑ ↑ ↑ │
|
||||
│ Certbot Analytics Frontend │
|
||||
│ (SSL) (Node.js) (Vue.js) │
|
||||
└─────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## ✨ Основные возможности
|
||||
|
||||
- ✅ **Управление тренировками** (дистанция, темп, калории)
|
||||
- ✅ **Система событий** (забеги, тренировки, семинары)
|
||||
- ✅ **Достижения и награды** с верификацией
|
||||
- ✅ **Персональная статистика** с графиками
|
||||
- ✅ **Галерея фотографий** мероприятий
|
||||
- ✅ **Многоязычность** (русский/башкирский)
|
||||
- ✅ **Адаптивный дизайн** (mobile-first)
|
||||
- ✅ **Автоматические SSL сертификаты**
|
||||
- ✅ **Health checks и мониторинг**
|
||||
|
||||
## 🚀 Быстрый старт
|
||||
|
||||
### Требования
|
||||
- Docker 20.10+
|
||||
- Docker Compose 2.0+
|
||||
- 2 ГБ RAM
|
||||
- Порты 80, 443 открыты
|
||||
|
||||
### Установка
|
||||
```bash
|
||||
# 1. Клонирование
|
||||
git clone <repository>
|
||||
cd project
|
||||
|
||||
# 2. Настройка окружения
|
||||
cp .env.example .env
|
||||
# Отредактируйте .env файл
|
||||
|
||||
# 3. Запуск
|
||||
docker-compose up -d
|
||||
|
||||
# 4. Проверка
|
||||
docker-compose ps
|
||||
```
|
||||
|
||||
Сайт будет доступен по адресу: **https://ваш-домен**
|
||||
|
||||
## 📁 Структура проекта
|
||||
|
||||
```
|
||||
├── BB/ # Бегущий Башкир
|
||||
│ ├── api_bb/ # Go API сервер
|
||||
│ └── bbvue/ # Vue.js фронтенд
|
||||
├── nginx/ # Веб-сервер
|
||||
├── certbot/ # SSL сертификаты
|
||||
├── valitovgaziz/analytics/ # Аналитика
|
||||
└── docker-compose.yml # Оркестрация
|
||||
```
|
||||
|
||||
## 🔧 Технологический стек
|
||||
|
||||
**Backend:**
|
||||
- Go 1.25+ (Chi, GORM, JWT)
|
||||
- PostgreSQL 15
|
||||
- Node.js (аналитика)
|
||||
|
||||
**Frontend:**
|
||||
- Vue 3 (Composition API)
|
||||
- Pinia (state management)
|
||||
- Vue Router
|
||||
- Vite
|
||||
|
||||
**Инфраструктура:**
|
||||
- Docker & Docker Compose
|
||||
- Nginx (обратный прокси)
|
||||
- Certbot (Let's Encrypt)
|
||||
|
||||
## 📡 API Endpoints
|
||||
|
||||
```
|
||||
GET /api/health # Проверка здоровья
|
||||
POST /api/auth/register # Регистрация
|
||||
POST /api/auth/login # Вход
|
||||
GET /api/user/workouts # Тренировки пользователя
|
||||
POST /api/events/register # Регистрация на событие
|
||||
GET /api/achievements # Достижения
|
||||
```
|
||||
|
||||
Полная документация API: [docs/api.md](docs/api.md)
|
||||
|
||||
## 🛠️ Разработка
|
||||
|
||||
```bash
|
||||
# Запуск в режиме разработки
|
||||
docker-compose -f docker-compose.dev.yml up
|
||||
|
||||
# Просмотр логов
|
||||
docker-compose logs -f api_bb
|
||||
|
||||
# Остановка
|
||||
docker-compose down
|
||||
|
||||
# Полная очистка
|
||||
docker-compose down -v
|
||||
```
|
||||
|
||||
## 📊 Мониторинг
|
||||
|
||||
- **Health checks:** `GET /api/health`
|
||||
- **Статус сервисов:** `docker-compose ps`
|
||||
- **Логи в реальном времени:** `docker-compose logs -f`
|
||||
- **Использование ресурсов:** `docker stats`
|
||||
|
||||
## 🔒 Безопасность
|
||||
|
||||
- JWT аутентификация
|
||||
- HTTPS (автоматические SSL)
|
||||
- Хеширование паролей (bcrypt)
|
||||
- Защита от SQL-инъекций
|
||||
- CORS политики
|
||||
- Валидация входных данных
|
||||
|
||||
## 🤝 Вклад в проект
|
||||
|
||||
1. Форкните репозиторий
|
||||
2. Создайте ветку для фичи (`git checkout -b feature/amazing`)
|
||||
3. Закоммитьте изменения (`git commit -m 'Add amazing feature'`)
|
||||
4. Запушьте в ветку (`git push origin feature/amazing`)
|
||||
5. Откройте Pull Request
|
||||
|
||||
## 📞 Контакты
|
||||
|
||||
- **Сайт:** [begushiybashkir.ru](https://begushiybashkir.ru)
|
||||
- **Тренер:** +7 (927) 30-93-095
|
||||
- **Telegram:** @begushiybashkir
|
||||
- **Email:** zog1r@mail.ru
|
||||
|
||||
## 📄 Лицензия
|
||||
|
||||
Проект использует смешанные лицензии в зависимости от компонентов. Подробнее в файлах LICENSE соответствующих директорий.
|
||||
|
||||
## 🙏 Благодарности
|
||||
|
||||
- Команде разработчиков
|
||||
- Участникам бегового клуба
|
||||
- Сообществу Open Source
|
||||
|
||||
---
|
||||
|
||||
**🏆 Беги вместе с нами!**
|
||||
**🏃♂️ Бегущий Башкир — больше чем бег, это образ жизни!**
|
||||
|
||||
---
|
||||
*Обновлено: Декабрь 2025 | Версия: 1.0*
|
||||
@@ -0,0 +1,780 @@
|
||||
# 📚 Полная документация проекта "Бегущий Башкир"
|
||||
## Версия 1.0 | Декабрь 2025
|
||||
|
||||
---
|
||||
|
||||
## 🏃♂️ ОПИСАНИЕ ПРОЕКТА
|
||||
|
||||
### 1.1 Общая концепция
|
||||
**"Бегущий Башкир"** — комплексная цифровая платформа для бегового клуба, объединяющая веб-сайт, REST API и аналитические сервисы. Проект создан для развития бегового сообщества Республики Башкортостан и предоставляет современные инструменты для организации тренировок, мероприятий и взаимодействия между участниками.
|
||||
|
||||
### 1.2 Основные цели
|
||||
- Создание централизованной системы управления беговым клубом
|
||||
- Автоматизация процессов регистрации, учета и статистики
|
||||
- Формирование активного сообщества бегунов
|
||||
- Продвижение здорового образа жизни и спорта в регионе
|
||||
- Сохранение культурных особенностей (поддержка русского и башкирского языков)
|
||||
|
||||
### 1.3 Доменные имена
|
||||
- **Основной сайт:** `begushiybashkir.ru`
|
||||
- **API сервер:** `api.begushiybashkir.ru` (в перспективе)
|
||||
- **Дополнительные:** В рамках общего кластера с другими проектами
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ АРХИТЕКТУРА СИСТЕМЫ
|
||||
|
||||
### 2.1 Компонентная диаграмма
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ Docker Compose Cluster │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||||
│ │ Nginx │ │ API_TP │ │ API_BB │ │ API_ES │ │
|
||||
│ │ (Proxy) │◄─┤(Yalarba) │ │(Бег.Баш)│ │(Easysite)│ │
|
||||
│ └────┬─────┘ └──────────┘ └──────────┘ └──────────┘ │
|
||||
│ │ │ │ │ │
|
||||
│ ┌────▼─────┐ ┌──────▼────┐ ┌───▼────┐ ┌──────▼────┐ │
|
||||
│ │ Certbot │ │ DB │ │ DB_BB │ │ DB_TP │ │
|
||||
│ │ (SSL) │ │ (Postgres)│ │(Postgr)│ │ (Postgres)│ │
|
||||
│ └──────────┘ └───────────┘ └────────┘ └───────────┘ │
|
||||
│ │
|
||||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||||
│ │Analytics │ │ Easysite │ │ Vue SPA │ │ StubSite │ │
|
||||
│ │ (Node.js)│ │ (Nuxt.js)│ │(Frontend)│ │ (Загл.) │ │
|
||||
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 2.2 Сетевые сегменты
|
||||
```yaml
|
||||
networks:
|
||||
web-network: # Внешний доступ (80/443 порты)
|
||||
internal: # Внутренняя коммуникация
|
||||
app-network: # Для Yalarba/Easysite приложений
|
||||
bb-network: # Изолированная сеть "Бегущий Башкир"
|
||||
```
|
||||
|
||||
### 2.3 Технологический стек
|
||||
|
||||
#### Backend
|
||||
- **Go 1.25.1** (API сервисы)
|
||||
- **Chi Router** v5 (HTTP роутинг)
|
||||
- **GORM** v1.31.0 (ORM для PostgreSQL)
|
||||
- **JWT** (аутентификация)
|
||||
- **Validator** v10 (валидация данных)
|
||||
|
||||
#### Frontend
|
||||
- **Vue 3** (Composition API)
|
||||
- **Vite** (сборка)
|
||||
- **Pinia** (управление состоянием)
|
||||
- **Vue Router** (навигация)
|
||||
- **SCSS/CSS3** (стили)
|
||||
|
||||
#### Базы данных
|
||||
- **PostgreSQL 15** (основные данные)
|
||||
- **Альпийский образ** (легковесная версия)
|
||||
|
||||
#### Инфраструктура
|
||||
- **Docker & Docker Compose**
|
||||
- **Nginx** (обратный прокси)
|
||||
- **Certbot** (SSL сертификаты)
|
||||
- **Node.js** (аналитика)
|
||||
|
||||
---
|
||||
|
||||
## 📦 DOCKER КОМПОЗИЦИЯ
|
||||
|
||||
### 3.1 Сервисы кластера
|
||||
|
||||
#### Основные сервисы "Бегущий Башкир":
|
||||
```yaml
|
||||
api_bb: # REST API на Go (порт 7777)
|
||||
- Ядро бизнес-логики
|
||||
- Аутентификация и авторизация
|
||||
- Управление тренировками и событиями
|
||||
- Обработка достижений и статистики
|
||||
|
||||
db_bb: # База данных (порт 5433)
|
||||
- Изолированная БД для проекта
|
||||
- Хранение всех данных бегового клуба
|
||||
- Автоматическое резервное копирование
|
||||
|
||||
nginx: # Веб-сервер (порты 80/443)
|
||||
- Статический контент Vue SPA
|
||||
- Проксирование к API
|
||||
- SSL/TLS терминация
|
||||
- Кэширование и сжатие
|
||||
```
|
||||
|
||||
#### Общие сервисы кластера:
|
||||
```yaml
|
||||
certbot: # SSL сертификаты
|
||||
- Автоматическое обновление Let's Encrypt
|
||||
- Поддержка wildcard сертификатов
|
||||
- Мониторинг истечения срока
|
||||
|
||||
analytics: # Аналитика (порт 9999)
|
||||
- Сбор статистики посещений
|
||||
- Аналитика пользовательского поведения
|
||||
- Генерация отчетов
|
||||
```
|
||||
|
||||
### 3.2 Порты и доступ
|
||||
| Сервис | Порт | Назначение | Доступ |
|
||||
|--------|------|------------|---------|
|
||||
| nginx | 80 | HTTP | публичный |
|
||||
| nginx | 443 | HTTPS | публичный |
|
||||
| api_bb | 7777 | API | внутренний |
|
||||
| db_bb | 5433 | База данных | внутренний |
|
||||
| analytics | 9999 | Аналитика | внутренний |
|
||||
|
||||
### 3.3 Volumes (тома данных)
|
||||
```yaml
|
||||
db_bb_data: # Основные данные БД
|
||||
api_bb_uploads: # Загружаемые файлы (фото, документы)
|
||||
analytics_logs: # Логи аналитики
|
||||
analytics_data: # Данные аналитики
|
||||
certbot_data: # SSL сертификаты
|
||||
certbot_www: # Веб-контент для верификации
|
||||
```
|
||||
|
||||
### 3.4 Health Checks
|
||||
Все сервисы включают проверки здоровья:
|
||||
- **Интервал:** 30 секунд
|
||||
- **Таймаут:** 10 секунд
|
||||
- **Попытки:** 3-5 раз
|
||||
- **Период старта:** 40 секунд
|
||||
|
||||
Пример для API:
|
||||
```yaml
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--spider", "http://localhost:8080/api/health"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🗄️ СТРУКТУРА ДАННЫХ (API_BB)
|
||||
|
||||
### 4.1 Основные сущности
|
||||
|
||||
#### Пользователь (User)
|
||||
```sql
|
||||
CREATE TABLE users (
|
||||
id UUID PRIMARY KEY,
|
||||
email VARCHAR(255) UNIQUE NOT NULL,
|
||||
first_name VARCHAR(100),
|
||||
last_name VARCHAR(100),
|
||||
avatar_url TEXT,
|
||||
phone VARCHAR(20),
|
||||
experience_level INTEGER, -- 1: новичок, 2: любитель, 3: профессионал
|
||||
goals TEXT[], -- массив целей
|
||||
newsletter_subscription BOOLEAN DEFAULT true,
|
||||
role VARCHAR(20) DEFAULT 'user', -- user, admin
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
#### Тренировка (Workout)
|
||||
```sql
|
||||
CREATE TABLE workouts (
|
||||
id UUID PRIMARY KEY,
|
||||
user_id UUID REFERENCES users(id),
|
||||
type VARCHAR(50), -- easy, tempo, interval, long, recovery
|
||||
distance_km DECIMAL(5,2),
|
||||
duration_minutes INTEGER,
|
||||
avg_pace_min_per_km DECIMAL(4,2),
|
||||
calories_burned INTEGER,
|
||||
notes TEXT,
|
||||
workout_date DATE NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
#### Событие (Event)
|
||||
```sql
|
||||
CREATE TABLE events (
|
||||
id UUID PRIMARY KEY,
|
||||
title VARCHAR(255) NOT NULL,
|
||||
description TEXT,
|
||||
type VARCHAR(50), -- race, training, social, workshop
|
||||
event_date TIMESTAMP NOT NULL,
|
||||
location VARCHAR(255),
|
||||
distance_km DECIMAL(5,2),
|
||||
max_participants INTEGER,
|
||||
is_registration_open BOOLEAN DEFAULT true,
|
||||
registration_deadline TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
#### Достижение (Achievement)
|
||||
```sql
|
||||
CREATE TABLE achievements (
|
||||
id UUID PRIMARY KEY,
|
||||
user_id UUID REFERENCES users(id),
|
||||
title VARCHAR(255) NOT NULL,
|
||||
description TEXT,
|
||||
type VARCHAR(50), -- distance, speed, consistency, event, special
|
||||
verified BOOLEAN DEFAULT false,
|
||||
badge_url TEXT,
|
||||
achieved_date DATE NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
### 4.2 Связи между таблицами
|
||||
- **users** ↔ **workouts** (один ко многим)
|
||||
- **users** ↔ **achievements** (один ко многим)
|
||||
- **users** ↔ **events** (многие ко многим через registrations)
|
||||
- **users** ↔ **personal_bests** (один ко многим)
|
||||
|
||||
---
|
||||
|
||||
## 🔐 СИСТЕМА БЕЗОПАСНОСТИ
|
||||
|
||||
### 5.1 Аутентификация
|
||||
- **JWT токены** (Access + Refresh)
|
||||
- **HTTP-only cookies** для клиентского хранения
|
||||
- **Валидация email** через подтверждение
|
||||
- **Сброс пароля** через email токены
|
||||
|
||||
### 5.2 Авторизация
|
||||
- **Ролевая модель:** user, admin
|
||||
- **Middleware защита** маршрутов
|
||||
- **Проверка прав доступа** к ресурсам
|
||||
|
||||
### 5.3 Защита данных
|
||||
- **BCrypt** для хеширования паролей
|
||||
- **Подготовленные SQL-запросы** (GORM)
|
||||
- **Валидация входных данных**
|
||||
- **CORS политики**
|
||||
- **Rate limiting** (в разработке)
|
||||
|
||||
---
|
||||
|
||||
## 🌐 ФРОНТЕНД АРХИТЕКТУРА (Vue SPA)
|
||||
|
||||
### 6.1 Структура компонентов
|
||||
```
|
||||
src/
|
||||
├── components/ # Переиспользуемые компоненты
|
||||
│ ├── NavigationMenu.vue
|
||||
│ ├── EventCard.vue
|
||||
│ ├── RegistrationCard.vue
|
||||
│ ├── StatsChart.vue
|
||||
│ └── AchievementBadge.vue
|
||||
├── pages/ # Страницы приложения
|
||||
│ ├── Home.vue # Главная страница
|
||||
│ ├── About.vue # О клубе
|
||||
│ ├── Gallery.vue # Галерея
|
||||
│ ├── Achievements.vue # Достижения
|
||||
│ ├── DetailedStats.vue # Статистика
|
||||
│ ├── Events.vue # События
|
||||
│ └── Profile.vue # Профиль пользователя
|
||||
├── stores/ # Состояние (Pinia)
|
||||
│ ├── auth.js # Авторизация
|
||||
│ ├── stats.js # Статистика
|
||||
│ └── events.js # События
|
||||
├── router/ # Маршрутизация
|
||||
│ └── index.js
|
||||
└── assets/ # Ресурсы
|
||||
├── logo/
|
||||
├── images/
|
||||
└── main.scss
|
||||
```
|
||||
|
||||
### 6.2 Цветовая схема
|
||||
```scss
|
||||
$primary-color: #2e8b57; // Зеленый (природа, здоровье)
|
||||
$accent-color: #ffd700; // Золотой (достижения)
|
||||
$background: #f8fff8; // Светло-зеленый фон
|
||||
$text-color: #2c3e50; // Темно-серый текст
|
||||
$error-color: #e74c3c; // Красный для ошибок
|
||||
$success-color: #27ae60; // Зеленый для успеха
|
||||
```
|
||||
|
||||
### 6.3 Адаптивный дизайн
|
||||
| Breakpoint | Устройство | Контейнер |
|
||||
|------------|------------|-----------|
|
||||
| < 360px | Маленькие телефоны | 100% |
|
||||
| 360-480px | Телефоны | 100% |
|
||||
| 481-768px | Планшеты | 720px |
|
||||
| 769-1024px | Ноутбуки | 960px |
|
||||
| > 1024px | Десктопы | 1140px |
|
||||
|
||||
---
|
||||
|
||||
## 🔄 API ДОКУМЕНТАЦИЯ
|
||||
|
||||
### 7.1 Базовый URL
|
||||
```
|
||||
https://begushiybashkir.ru/api/v1/
|
||||
```
|
||||
|
||||
### 7.2 Статус коды
|
||||
- `200` - Успех
|
||||
- `201` - Создано
|
||||
- `400` - Ошибка валидации
|
||||
- `401` - Не авторизован
|
||||
- `403` - Доступ запрещен
|
||||
- `404` - Не найдено
|
||||
- `500` - Серверная ошибка
|
||||
|
||||
### 7.3 Основные эндпоинты
|
||||
|
||||
#### Аутентификация
|
||||
```http
|
||||
POST /auth/register
|
||||
POST /auth/login
|
||||
POST /auth/logout
|
||||
POST /auth/refresh-token
|
||||
POST /auth/password-reset/request
|
||||
POST /auth/password-reset/confirm
|
||||
GET /auth/verify-email?token={token}
|
||||
```
|
||||
|
||||
#### Пользователи
|
||||
```http
|
||||
GET /users/profile
|
||||
PUT /users/profile
|
||||
GET /users/{id}/achievements
|
||||
GET /users/{id}/stats
|
||||
```
|
||||
|
||||
#### Тренировки
|
||||
```http
|
||||
GET /workouts?date_from=&date_to=&type=
|
||||
POST /workouts
|
||||
GET /workouts/{id}
|
||||
PUT /workouts/{id}
|
||||
DELETE /workouts/{id}
|
||||
GET /workouts/stats/monthly
|
||||
```
|
||||
|
||||
#### События
|
||||
```http
|
||||
GET /events?type=&status=
|
||||
GET /events/{id}
|
||||
POST /events/{id}/register
|
||||
DELETE /events/{id}/register
|
||||
GET /events/my-registrations
|
||||
```
|
||||
|
||||
#### Достижения
|
||||
```http
|
||||
GET /achievements?type=&verified=
|
||||
POST /achievements
|
||||
PUT /achievements/{id}
|
||||
GET /achievements/types
|
||||
```
|
||||
|
||||
### 7.4 Пример запроса
|
||||
```javascript
|
||||
// Регистрация пользователя
|
||||
fetch('/api/v1/auth/register', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
email: 'user@example.com',
|
||||
password: 'SecurePass123!',
|
||||
firstName: 'Иван',
|
||||
lastName: 'Иванов',
|
||||
phone: '+79161234567'
|
||||
})
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 РАЗВЕРТЫВАНИЕ
|
||||
|
||||
### 8.1 Требования
|
||||
- Docker 20.10+
|
||||
- Docker Compose 2.0+
|
||||
- 2 ГБ RAM минимум
|
||||
- 10 ГБ свободного места
|
||||
- Доступ к портам 80, 443
|
||||
|
||||
### 8.2 Настройка окружения
|
||||
```bash
|
||||
# 1. Клонирование
|
||||
git clone <repository>
|
||||
cd project
|
||||
|
||||
# 2. Настройка переменных
|
||||
cp .env.example .env
|
||||
# Редактируем .env:
|
||||
# EMAIL=admin@example.com
|
||||
# ALL_DOMAINS=begushiybashkir.ru,www.begushiybashkir.ru
|
||||
# DB_PASSWORD=strong_password
|
||||
|
||||
# 3. Запуск
|
||||
docker-compose up -d
|
||||
|
||||
# 4. Проверка
|
||||
docker-compose ps
|
||||
docker-compose logs -f nginx
|
||||
```
|
||||
|
||||
### 8.3 Настройка DNS
|
||||
```
|
||||
A запись: begushiybashkir.ru → IP сервера
|
||||
CNAME запись: www → begushiybashkir.ru
|
||||
```
|
||||
|
||||
### 8.4 Первоначальная настройка
|
||||
1. **Проверка SSL:** `https://begushiybashkir.ru`
|
||||
2. **Проверка API:** `https://begushiybashkir.ru/api/health`
|
||||
3. **Создание админа:** через миграции или CLI
|
||||
4. **Настройка SMTP:** для email рассылок
|
||||
|
||||
---
|
||||
|
||||
## 📊 МОНИТОРИНГ И ЛОГИРОВАНИЕ
|
||||
|
||||
### 9.1 Логи
|
||||
- **Nginx:** доступы и ошибки
|
||||
- **API:** бизнес-логика и ошибки
|
||||
- **База данных:** медленные запросы
|
||||
- **Docker:** системные логи
|
||||
|
||||
### 9.2 Health Checks
|
||||
```
|
||||
GET /health # Общий статус
|
||||
GET /api/health # Статус API
|
||||
GET /database/health # Статус БД
|
||||
```
|
||||
|
||||
### 9.3 Метрики
|
||||
- **Количество пользователей**
|
||||
- **Активные тренировки**
|
||||
- **Регистрации на события**
|
||||
- **Время отклика API**
|
||||
- **Ошибки по типам**
|
||||
|
||||
---
|
||||
|
||||
## 🔧 ОБСЛУЖИВАНИЕ
|
||||
|
||||
### 10.1 Регулярные задачи
|
||||
```bash
|
||||
# Ежедневно
|
||||
docker-compose exec db_bb pg_dump -U postgres bb_db > backup.sql
|
||||
|
||||
# Еженедельно
|
||||
docker-compose restart nginx
|
||||
docker system prune -a
|
||||
|
||||
# Ежемесячно
|
||||
certbot renew --dry-run
|
||||
check disk usage
|
||||
```
|
||||
|
||||
### 10.2 Резервное копирование
|
||||
```yaml
|
||||
# docker-compose.backup.yml
|
||||
version: '3.8'
|
||||
services:
|
||||
backup:
|
||||
image: postgres:15-alpine
|
||||
volumes:
|
||||
- ./backups:/backups
|
||||
command: >
|
||||
sh -c "
|
||||
PGPASSWORD=postgres pg_dump -h db_bb -U postgres bb_db >
|
||||
/backups/bb_db_$(date +%Y%m%d_%H%M%S).sql
|
||||
"
|
||||
```
|
||||
|
||||
### 10.3 Восстановление
|
||||
```bash
|
||||
# Восстановление БД
|
||||
docker-compose exec -T db_bb psql -U postgres bb_db < backup.sql
|
||||
|
||||
# Восстановление загруженных файлов
|
||||
cp -r backup/uploads/* ./api_bb_uploads/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📈 МАСШТАБИРОВАНИЕ
|
||||
|
||||
### 11.1 Горизонтальное
|
||||
1. Добавление инстансов API
|
||||
2. Балансировка через Nginx
|
||||
3. Кэширование через Redis
|
||||
4. Репликация БД
|
||||
|
||||
### 11.2 Вертикальное
|
||||
1. Увеличение ресурсов контейнеров
|
||||
2. Оптимизация индексов БД
|
||||
3. Кэширование частых запросов
|
||||
4. Асинхронная обработка задач
|
||||
|
||||
### 11.3 Конфигурация для продакшена
|
||||
```yaml
|
||||
# В docker-compose.prod.yml
|
||||
services:
|
||||
api_bb:
|
||||
deploy:
|
||||
replicas: 3
|
||||
resources:
|
||||
limits:
|
||||
memory: 512M
|
||||
reservations:
|
||||
memory: 256M
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐛 ОТЛАДКА И УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ
|
||||
|
||||
### 12.1 Частые проблемы
|
||||
|
||||
#### Проблема: SSL не работает
|
||||
```bash
|
||||
# Решение:
|
||||
docker-compose logs certbot
|
||||
docker-compose exec certbot certbot renew --dry-run
|
||||
# Проверить DNS записи
|
||||
```
|
||||
|
||||
#### Проблема: API не отвечает
|
||||
```bash
|
||||
# Решение:
|
||||
docker-compose ps api_bb
|
||||
docker-compose logs api_bb
|
||||
curl http://localhost:7777/api/health
|
||||
# Проверить подключение к БД
|
||||
```
|
||||
|
||||
#### Проблема: База данных не запускается
|
||||
```bash
|
||||
# Решение:
|
||||
docker-compose logs db_bb
|
||||
docker volume ls
|
||||
# Проверить права на volume
|
||||
```
|
||||
|
||||
### 12.2 Инструменты отладки
|
||||
```bash
|
||||
# Проверка сети
|
||||
docker network inspect bb-network
|
||||
|
||||
# Проверка томов
|
||||
docker volume inspect db_bb_data
|
||||
|
||||
# Мониторинг ресурсов
|
||||
docker stats
|
||||
|
||||
# Логи в реальном времени
|
||||
docker-compose logs -f --tail=100
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 ЖИЗНЕННЫЙ ЦИКЛ РАЗРАБОТКИ
|
||||
|
||||
### 13.1 Git workflow
|
||||
```
|
||||
main - продакшн
|
||||
├── develop - стабильная разработка
|
||||
│ ├── feature/* - новые функции
|
||||
│ └── fix/* - исправления
|
||||
└── release/* - подготовка релизов
|
||||
```
|
||||
|
||||
### 13.2 CI/CD (рекомендации)
|
||||
```yaml
|
||||
# .github/workflows/deploy.yml
|
||||
name: Deploy
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Deploy via SSH
|
||||
uses: appleboy/ssh-action@master
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
username: ${{ secrets.SERVER_USER }}
|
||||
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
script: |
|
||||
cd /opt/begushiybashkir
|
||||
git pull
|
||||
docker-compose down
|
||||
docker-compose build
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### 13.3 Тестирование
|
||||
```bash
|
||||
# Unit тесты Go
|
||||
cd api_bb
|
||||
go test ./...
|
||||
|
||||
# E2E тесты API
|
||||
npm run test:api
|
||||
|
||||
# Тесты Vue компонентов
|
||||
npm run test:unit
|
||||
|
||||
# Load testing
|
||||
k6 run load-test.js
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 ЧЕКЛИСТ ЗАПУСКА
|
||||
|
||||
### 14.1 Предзапусковая проверка
|
||||
- [ ] Доменное имя настроено и разрешается
|
||||
- [ ] SSL сертификаты получены
|
||||
- [ ] Переменные окружения установлены
|
||||
- [ ] Порты 80 и 443 открыты
|
||||
- [ ] SMTP настроен для email
|
||||
- [ ] Резервное копирование настроено
|
||||
|
||||
### 14.2 Постзапусковая проверка
|
||||
- [ ] Сайт доступен по HTTPS
|
||||
- [ ] API отвечает на health checks
|
||||
- [ ] Базы данных запущены
|
||||
- [ ] Статика загружается
|
||||
- [ ] Email отправляется
|
||||
- [ ] Мониторинг работает
|
||||
|
||||
### 14.3 Проверка безопасности
|
||||
- [ ] Пароли изменены с дефолтных
|
||||
- [ ] SSH доступ ограничен
|
||||
- [ ] Firewall настроен
|
||||
- [ ] Логирование включено
|
||||
- [ ] Резервные копии тестируются
|
||||
|
||||
---
|
||||
|
||||
## 🎯 РАЗВИТИЕ ПРОЕКТА
|
||||
|
||||
### 15.1 Ближайшие задачи
|
||||
1. **Мобильное приложение** (React Native)
|
||||
2. **Интеграция со Strava**
|
||||
3. **Платежная система** для мероприятий
|
||||
4. **Push-уведомления**
|
||||
5. **Расширенная аналитика**
|
||||
|
||||
### 15.2 Долгосрочные цели
|
||||
1. **Международная поддержка**
|
||||
2. **Партнерская программа**
|
||||
3. **Онлайн-марафоны**
|
||||
4. **AI-тренер**
|
||||
5. **Социальная сеть бегунов**
|
||||
|
||||
### 15.3 Сообщество
|
||||
- **Telegram канал** для анонсов
|
||||
- **Группа VK** для обсуждений
|
||||
- **Instagram** для мотивации
|
||||
- **YouTube** для обучающего контента
|
||||
- **Офлайн-встречи** раз в месяц
|
||||
|
||||
---
|
||||
|
||||
## 📞 ПОДДЕРЖКА И КОНТАКТЫ
|
||||
|
||||
### 16.1 Техническая поддержка
|
||||
- **Экстренные вопросы:** Telegram @tech_support
|
||||
- **Багрепорты:** GitHub Issues
|
||||
- **Предложения:** feedback@begushiybashkir.ru
|
||||
- **Документация:** docs.begushiybashkir.ru (в разработке)
|
||||
|
||||
### 16.2 Команда проекта
|
||||
| Роль | Контакты | Ответственность |
|
||||
|------|----------|-----------------|
|
||||
| Тренер | +7 (927) 30-93-095 | Тренировки, мероприятия |
|
||||
| Разработчик | github.com/dev | Техническая часть |
|
||||
| Контент-менеджер | @content | Новости, галерея |
|
||||
| Администратор | admin@ | Управление пользователями |
|
||||
|
||||
### 16.3 Время работы поддержки
|
||||
- **Техподдержка:** 24/7 (автоматически)
|
||||
- **Консультации:** 10:00-18:00 (МСК)
|
||||
- **Экстренные случаи:** круглосуточно по телефону
|
||||
|
||||
---
|
||||
|
||||
## 📄 ЛИЦЕНЗИИ И ПРАВА
|
||||
|
||||
### 17.1 Используемое ПО
|
||||
- **Go:** BSD-3-Clause
|
||||
- **Vue.js:** MIT
|
||||
- **PostgreSQL:** PostgreSQL License
|
||||
- **Docker:** Apache 2.0
|
||||
|
||||
### 17.2 Политики
|
||||
- [Политика конфиденциальности](https://begushiybashkir.ru/privacy)
|
||||
- [Условия использования](https://begushiybashkir.ru/terms)
|
||||
- [Политика cookies](https://begushiybashkir.ru/cookies)
|
||||
|
||||
---
|
||||
|
||||
## 🏆 ОСОБЕННОСТИ ПРОЕКТА
|
||||
|
||||
### 18.1 Культурный аспект
|
||||
- Поддержка башкирского языка
|
||||
- Учет региональных особенностей
|
||||
- Пропаганда местного спорта
|
||||
- Сотрудничество с местными организациями
|
||||
|
||||
### 18.2 Технические инновации
|
||||
- Микросервисная архитектура
|
||||
- Полная контейнеризация
|
||||
- Автоматическое SSL
|
||||
- Резидентная инфраструктура
|
||||
|
||||
### 18.3 Социальная значимость
|
||||
- Бесплатные тренировки для новичков
|
||||
- Поддержка инклюзивности
|
||||
- Экологический подход (тренировки на природе)
|
||||
- Сообщество взаимопомощи
|
||||
|
||||
---
|
||||
|
||||
## 📝 ИЗМЕНЕНИЯ И ОБНОВЛЕНИЯ
|
||||
|
||||
### 19.1 Журнал изменений
|
||||
```
|
||||
2025-12-04 v1.0 - Первый релиз
|
||||
- Базовая функциональность
|
||||
- API для тренировок и событий
|
||||
- Vue.js фронтенд
|
||||
- Docker инфраструктура
|
||||
```
|
||||
|
||||
### 19.2 Процесс обновлений
|
||||
1. Тестирование на staging окружении
|
||||
2. Резервное копирование продакшена
|
||||
3. Поэтапное обновление сервисов
|
||||
4. Мониторинг после обновления
|
||||
5. Откат при необходимости
|
||||
|
||||
---
|
||||
|
||||
**✨ Проект "Бегущий Башкир" — это больше чем веб-сайт. Это цифровое сердце бегового сообщества, соединяющее технологические инновации с духом спорта и дружбы.**
|
||||
|
||||
---
|
||||
*Документация обновлена: 4 декабря 2025 года*
|
||||
*Проект находится в активной разработке*
|
||||
*Версия документации: 1.0*
|
||||
|
||||
Для актуальной информации посетите:
|
||||
🌐 **https://begushiybashkir.ru**
|
||||
📧 **zog1r@mail.ru**
|
||||
📱 **Telegram: @begushiybashkir**
|
||||
Reference in New Issue
Block a user