Initial commit

This commit is contained in:
2026-04-28 22:51:54 +03:00
commit 3565390a49
76 changed files with 16956 additions and 0 deletions

224
QUICKSTART.md Normal file
View File

@@ -0,0 +1,224 @@
# 🚀 Быстрый старт
## За 5 минут к рабочему API
### Шаг 1: Подготовка
```bash
# Убедитесь, что установлен Docker
docker --version
docker-compose --version
# Если нет - установите:
# Ubuntu/Debian:
sudo apt update
sudo apt install docker.io docker-compose
# Добавьте пользователя в группу docker
sudo usermod -aG docker $USER
# Перелогиньтесь после этого
```
### Шаг 2: Настройка
```bash
# Создайте .env файл
cp .env.example .env
# Сгенерируйте безопасный пароль
openssl rand -base64 32
# Отредактируйте .env и вставьте сгенерированный пароль в DB_PASSWORD
nano .env
```
### Шаг 3: Запуск
```bash
# Запустите все сервисы
docker-compose up -d
# Дождитесь инициализации (30-60 секунд)
docker-compose logs -f postgres
# Когда увидите "database system is ready to accept connections" - нажмите Ctrl+C
```
### Шаг 4: Проверка
```bash
# Проверьте API
curl http://localhost:3000/health
# Ожидаемый ответ:
# {"status":"healthy","timestamp":"2025-11-19T...","version":"1.0.0"}
# Проверьте базу данных
curl -H "X-API-Key: dev_key_12345678" http://localhost:3000/api/v1/sync/status
```
### Шаг 5: Откройте админ-панель
Откройте в браузере: http://localhost:3001
**Готово! 🎉**
---
## Первые данные
### 1. Создайте первый маршрут
Откройте админ-панель → Маршруты → "Добавить маршрут"
Или через API:
```bash
curl -X POST http://localhost:3000/api/v1/routes \
-H "X-API-Key: dev_key_12345678" \
-H "Content-Type: application/json" \
-d '{
"route_number": "1",
"name": "Центр - Вокзал",
"type": "bus",
"color": "#FF6B6B"
}'
```
### 2. Добавьте остановки
Откройте админ-панель → Остановки → Кликните на карту
Или через API:
```bash
curl -X POST http://localhost:3000/api/v1/stops \
-H "X-API-Key: dev_key_12345678" \
-H "Content-Type: application/json" \
-d '{
"name": "Площадь Свободы",
"latitude": 55.4869,
"longitude": 28.7856,
"address": "Центр города"
}'
```
### 3. Проверьте геопоиск
```bash
# Найдите остановки в радиусе 500м от центра Полоцка
curl -H "X-API-Key: dev_key_12345678" \
"http://localhost:3000/api/v1/stops/nearby?lat=55.4869&lon=28.7856&radius=500"
```
---
## Доступ из локальной сети
### Вариант 1: Прямой доступ (не безопасно для интернета)
```bash
# Узнайте IP вашего сервера
ip addr show | grep "inet "
# Доступ с других устройств в той же сети:
# http://YOUR_SERVER_IP:3000 - API
# http://YOUR_SERVER_IP:3001 - Admin
```
### Вариант 2: Cloudflare Tunnel (рекомендуется для интернета)
```bash
# Установите cloudflared
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
sudo mv cloudflared /usr/local/bin/
sudo chmod +x /usr/local/bin/cloudflared
# Авторизуйтесь
cloudflared tunnel login
# Создайте туннель
cloudflared tunnel create polotsk-transit
# Создайте конфиг
cat > ~/.cloudflared/config.yml << EOF
tunnel: YOUR_TUNNEL_ID
credentials-file: /home/$USER/.cloudflared/YOUR_TUNNEL_ID.json
ingress:
- hostname: api.yourdomain.com
service: http://localhost:3000
- hostname: admin.yourdomain.com
service: http://localhost:3001
- service: http_status:404
EOF
# Запустите туннель
cloudflared tunnel run polotsk-transit
```
---
## Создание API ключа для вашего приложения
```bash
# Войдите в PostgreSQL
docker exec -it polotsk-transit-db psql -U transit_admin -d polotsk_transit
# Создайте новый API ключ
INSERT INTO api_keys (key, app_name, rate_limit, is_active)
VALUES ('YOUR_GENERATED_KEY_HERE', 'My iOS App', 10000, true);
# Проверьте
SELECT * FROM api_keys;
# Выйдите
\q
```
Генерация безопасного ключа:
```bash
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
```
---
## Остановка и удаление
```bash
# Остановить все сервисы
docker-compose down
# Удалить все данные (ОСТОРОЖНО!)
docker-compose down -v
# Удалить образы
docker-compose down --rmi all
```
---
## Частые проблемы
**"Cannot connect to database":**
```bash
# Проверьте, что PostgreSQL запущен
docker-compose ps
docker-compose logs postgres
# Перезапустите
docker-compose restart postgres
```
**"Port already in use":**
```bash
# Измените порты в docker-compose.yml
# Например, вместо "3000:3000" используйте "3001:3000"
```
**"Permission denied":**
```bash
# Убедитесь, что пользователь в группе docker
sudo usermod -aG docker $USER
# Перелогиньтесь
```
---
## Следующие шаги
1. Прочитайте полный README.md
2. Добавьте свои маршруты и остановки
3. Настройте расписания (в следующей версии)
4. Интегрируйте API в ваше мобильное приложение
5. Настройте безопасный доступ через Cloudflare
**Удачи! 🚀**