All checks were successful
continuous-integration/drone/push Build is passing
Changes: - Fix nutrition service: add is_active column and Pydantic validation for UUID/datetime - Add location-based alerts feature: users can now see alerts within 1km radius - Fix CORS and response serialization in nutrition service - Add getCurrentLocation() and loadAlertsNearby() functions - Improve UI for nearby alerts display with distance and response count
Women's Safety App - Backend Services
🚨 Микросервисная архитектура для приложения безопасности женщин с поддержкой миллионов пользователей 🚨
Высокопроизводительная, масштабируемая система для экстренных уведомлений, геолокационных сервисов и управления женским здоровьем.
🏗️ Архитектура
🎯 Ключевые возможности:
- Мгновенные SOS-сигналы с геолокационным таргетингом
- Умный поиск пользователей в радиусе 1км
- Женский календарь с ИИ-аналитикой
- Push-уведомления в реальном времени
- JWT-аутентификация и защита данных
- Горизонтальное масштабирование для миллионов пользователей
🚀 Микросервисы:
- 🔐 User Service (8001): Профили, аутентификация, настройки
- 🚨 Emergency Service (8002): SOS-сигналы, экстренные уведомления
- 📍 Location Service (8003): Геолокация, поиск по радиусу
- 📅 Calendar Service (8004): Женское здоровье, цикл, аналитика
- 🔔 Notification Service (8005): Push-уведомления, FCM
- 🌐 API Gateway (8000): Маршрутизация, rate limiting, балансировка
🛠️ Технологический стек:
- Backend: Python 3.11+ с FastAPI
- Database: PostgreSQL 15+ с партиционированием
- Cache: Redis 7+ для сессий и геоданных
- Messaging: Kafka для event streaming
- Monitoring: Prometheus + Grafana
- Deployment: Docker + Docker Compose
🚀 Запуск
Требования
- Python 3.11+
- Docker & Docker Compose
- PostgreSQL 14+
- Redis 7+
Установка
# Клонирование и настройка
git clone <repository>
cd women-safety-backend
# Создание виртуального окружения
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# Установка зависимостей
pip install -r requirements.txt
# Запуск инфраструктуры
docker-compose up -d postgres redis kafka
# Миграции БД
alembic upgrade head
# Запуск сервисов
python -m uvicorn user_service.main:app --port 8001
python -m uvicorn emergency_service.main:app --port 8002
python -m uvicorn location_service.main:app --port 8003
python -m uvicorn calendar_service.main:app --port 8004
python -m uvicorn notification_service.main:app --port 8005
python -m uvicorn api_gateway.main:app --port 8000
📱 Основной функционал
SOS Alert System
- Мгновенная отправка сигналов тревоги
- Геолокационный поиск пользователей в радиусе 1км
- Массовые push-уведомления
- Интеграция с службами экстренного реагирования
Профили пользователей
- Регистрация и аутентификация
- Личные данные и настройки
- Контакты для экстренной связи
Женский календарь
- Отслеживание менструального цикла
- Уведомления и напоминания
- Аналитика здоровья
🔧 Разработка
Структура проекта
├── services/
│ ├── user-service/
│ ├── emergency-service/
│ ├── location-service/
│ ├── calendar-service/
│ ├── notification-service/
│ └── api-gateway/
├── shared/
│ ├── database/
│ ├── messaging/
│ └── utils/
├── docker-compose.yml
├── requirements.txt
└── README.md
Команды разработки
# Тесты
python -m pytest
# Линтеры
black .
flake8 .
mypy .
# Миграции
alembic revision --autogenerate -m "description"
alembic upgrade head
🔒 Безопасность
- JWT аутентификация
- Rate limiting
- HTTPS only
- Шифрование персональных данных
- Валидация входных данных
- CORS настройки
📊 Масштабируемость
- Горизонтальное масштабирование сервисов
- Партиционирование БД по географическим регионам
- Кэширование критических данных
- Асинхронная обработка
- Circuit breaker pattern
- Health checks и service discovery
🚁 CI/CD - Drone Pipeline
Автоматизированный pipeline с полным циклом разработки, тестирования и развертывания:
🔄 Этапы Pipeline:
1. Code Quality 🧹
steps:
- name: lint
commands:
- black --check .
- flake8 .
- isort --check-only .
- mypy services/ --ignore-missing-imports
2. Security Scanning 🛡️
steps:
- name: security
commands:
- safety check --json
- bandit -r services/ -f json
- trivy image scan
3. Testing 🧪
- Unit Tests: pytest с coverage отчетами
- Integration Tests: Реальные сервисы в Docker
- Load Testing: K6 performance тесты
- Security Tests: OWASP ZAP сканирование
4. Docker Build 🐳
Параллельная сборка всех 6 микросервисов:
women-safety/user-servicewomen-safety/emergency-servicewomen-safety/location-servicewomen-safety/calendar-servicewomen-safety/notification-servicewomen-safety/api-gateway
5. Deployment 🚀
- Staging: Автоматическое развертывание из
develop - Production: Развертывание из
mainс подтверждением - Rollback: Автоматический откат при ошибках
📋 Drone Configuration
Основной Pipeline (.drone.yml):
kind: pipeline
name: women-safety-backend
steps:
- name: setup
image: python:3.11-slim
commands:
- pip install -r requirements.txt
- name: test
depends_on: [setup]
commands:
- pytest --cov=services --cov-report=xml
- name: build-services
depends_on: [test]
image: plugins/docker
settings:
repo: women-safety/${SERVICE}
tags: [latest, ${DRONE_COMMIT_SHA:0:7}]
- name: deploy-production
depends_on: [integration-test]
when:
branch: [main]
event: [push]
Vulnerability Scanning (Nightly):
kind: pipeline
name: vulnerability-scan
trigger:
cron: [nightly]
steps:
- name: trivy-scan
image: aquasec/trivy:latest
commands:
- trivy image women-safety/user-service:latest
Performance Testing (Weekly):
kind: pipeline
name: performance-test
trigger:
cron: [weekly]
steps:
- name: load-test
image: loadimpact/k6:latest
commands:
- k6 run tests/performance/load-test.js
🔧 Настройка Secrets
# Docker Registry
drone secret add --repository women-safety/backend --name docker_username --data username
drone secret add --repository women-safety/backend --name docker_password --data password
# Production SSH
drone secret add --repository women-safety/backend --name production_host --data server.example.com
drone secret add --repository women-safety/backend --name production_ssh_key --data @~/.ssh/id_rsa
# Notifications
drone secret add --repository women-safety/backend --name slack_webhook --data https://hooks.slack.com/...
📊 Мониторинг Pipeline
- Build Status: Real-time статус в Slack/Teams
- Performance Metrics: Автоматические отчеты по производительности
- Security Reports: Еженедельные отчеты по уязвимостям
- Deployment Logs: Centralized логирование развертываний
🏃♂️ Быстрый старт с Drone
# Установка Drone CLI
curl -L https://github.com/drone/drone-cli/releases/latest/download/drone_linux_amd64.tar.gz | tar zx
sudo install -t /usr/local/bin drone
# Настройка
export DRONE_SERVER=https://drone.example.com
export DRONE_TOKEN=your-token
# Запуск build
drone build promote women-safety/backend 123 production
📜 Дополнительные скрипты
Deployment Scripts:
deploy-production.sh- Полное развертывание в продакшен с проверкамиtest_auth_flow.sh- Тестирование регистрации и авторизацииstart_services_no_docker.sh- Запуск сервисов без Docker
Performance Testing:
tests/performance/load-test.js- K6 нагрузочное тестированиеtests/performance/stress-test.js- K6 стресс-тестирование
Quick Commands:
# Полное развертывание
./deploy-production.sh v1.2.3
# Тестирование API
./test_auth_flow.sh
# Проверка системы
./health-check.sh
# Нагрузочное тестирование
k6 run tests/performance/load-test.js
📁 Структура проекта
women-safety-backend/
├── .drone.yml # Drone CI/CD Pipeline
├── deploy-production.sh # Production deployment script
├── docker-compose.prod.yml # Production configuration
├── docker-compose.test.yml # Testing configuration
├── DRONE_SETUP.md # Drone setup instructions
├── services/ # Microservices
│ ├── user_service/ # User management & auth
│ ├── emergency_service/ # SOS alerts & emergencies
│ ├── location_service/ # Geolocation & tracking
│ ├── calendar_service/ # Women's health calendar
│ ├── notification_service/ # Push notifications
│ └── api_gateway/ # API Gateway & routing
├── shared/ # Shared utilities
│ ├── config.py # Configuration management
│ ├── database.py # Database connections
│ └── auth.py # JWT authentication
├── tests/ # Test suites
│ ├── performance/ # K6 load tests
│ └── integration/ # Integration tests
└── scripts/ # Utility scripts
├── start_services_no_docker.sh
├── test_auth_flow.sh
└── health-check.sh # System health monitoring
🔗 Quick Links
- 📚 Drone Setup Guide - Complete CI/CD setup
- 🚀 Production Deployment - Zero-downtime deployment
- 🧪 API Testing - Authentication flow testing
- 📊 Performance Tests - Load & stress testing
- 🐳 Docker Configs - Production containers
Description
Languages
Python
96.2%
Cython
1.6%
C
0.7%
C++
0.6%
Shell
0.4%
Other
0.3%