Andrew K. Choi cfc93cb99a
All checks were successful
continuous-integration/drone/push Build is passing
feat: Fix nutrition service and add location-based alerts
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
2025-12-13 16:34:50 +09:00
2025-09-25 08:05:25 +09:00
2025-10-16 17:52:15 +09:00
2025-10-16 16:30:25 +09:00
2025-09-25 08:05:25 +09:00
2025-10-19 19:50:00 +09:00
2025-09-25 11:59:54 +09:00
2025-09-25 11:59:54 +09:00
2025-09-25 12:11:00 +09:00
2025-09-25 08:05:25 +09:00
2025-09-25 08:59:19 +09:00
2025-09-25 12:11:00 +09:00
2025-09-25 11:59:54 +09:00
2025-09-25 08:05:25 +09:00
2025-09-26 07:07:48 +09:00
2025-09-25 08:59:19 +09:00
2025-10-16 16:30:25 +09:00
2025-10-16 16:30:25 +09:00
2025-09-25 08:05:25 +09:00
2025-10-16 16:30:25 +09:00
sdf
2025-09-26 12:22:14 +09:00
2025-10-07 16:25:52 +09:00
2025-09-26 15:57:50 +09:00
2025-09-26 15:57:50 +09:00
2025-09-25 12:11:00 +09:00
2025-09-25 12:11:00 +09:00
2025-10-16 16:30:25 +09:00
2025-09-25 08:05:25 +09:00
2025-09-25 08:05:25 +09:00
2025-10-16 17:52:15 +09:00
2025-09-25 12:29:41 +09:00
2025-10-16 17:52:15 +09:00
2025-09-26 07:07:48 +09:00
2025-10-07 16:25:52 +09:00
2025-10-07 16:25:52 +09:00
2025-10-07 16:25:52 +09:00
2025-10-07 16:25:52 +09:00
2025-10-07 16:25:52 +09:00
2025-10-07 16:25:52 +09:00
2025-10-07 16:25:52 +09:00
2025-10-19 19:50:00 +09:00
2025-10-16 16:30:25 +09:00
2025-10-16 16:30:25 +09:00
2025-10-07 16:25:52 +09:00
2025-10-16 16:30:25 +09:00
sdf
2025-09-26 12:22:14 +09:00
2025-09-26 15:57:50 +09:00
2025-10-19 19:50:00 +09:00

Women's Safety App - Backend Services

🚨 Микросервисная архитектура для приложения безопасности женщин с поддержкой миллионов пользователей 🚨

Высокопроизводительная, масштабируемая система для экстренных уведомлений, геолокационных сервисов и управления женским здоровьем.

Python FastAPI PostgreSQL Docker Drone CI Build Status

🏗️ Архитектура

🎯 Ключевые возможности:

  • Мгновенные 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

Drone Build Status

Автоматизированный 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-service
  • women-safety/emergency-service
  • women-safety/location-service
  • women-safety/calendar-service
  • women-safety/notification-service
  • women-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
Description
No description provided
Readme 70 MiB
Languages
Python 96.2%
Cython 1.6%
C 0.7%
C++ 0.6%
Shell 0.4%
Other 0.3%