Спасибо за интерес к проекту AirTrace RU! Мы приветствуем любой вклад в развитие системы мониторинга качества воздуха.
- Создайте Issue с описанием проблемы
- Укажите шаги для воспроизведения
- Приложите скриншоты, если это поможет
- Создайте Issue с тегом "enhancement"
- Опишите предлагаемую функциональность
- Объясните, как это поможет пользователям
- Сделайте Fork репозитория
- Создайте ветку для ваших изменений:
git checkout -b feature/amazing-feature - Внесите изменения и добавьте тесты
- Убедитесь, что все тесты проходят:
pytest tests/ -v - Сделайте коммит:
git commit -m "✨ Add amazing feature" - Отправьте изменения:
git push origin feature/amazing-feature - Создайте Pull Request
- Следуйте PEP 8 для Python кода
- Используйте type hints
- Добавляйте docstrings для функций и классов
- Комментируйте сложную логику
- Добавляйте unit тесты для новой функциональности
- Используйте property-based тесты для сложной логики
- Убедитесь, что покрытие тестами не снижается
- Запустите все тесты перед отправкой PR
Используйте conventional commits с эмодзи:
- ✨
:sparkles:- новая функциональность - 🐛
:bug:- исправление ошибки - 📚
:books:- документация - 🎨
:art:- улучшение UI/UX - ⚡
:zap:- улучшение производительности - 🧪
:test_tube:- добавление тестов - 🔧
:wrench:- изменение конфигурации
├── main.py # FastAPI приложение
├── services.py # Интеграция с Open-Meteo API
├── utils.py # AQI калькулятор и НМУ детектор
├── schemas.py # Pydantic модели
├── middleware.py # Privacy middleware
├── start_app.py # Единый запуск API + Web
├── tests/ # Тесты
└── web/ # Веб-интерфейс
├── web_app.py # FastAPI веб-приложение
├── templates/ # Jinja2 шаблоны
└── static/ # CSS, JS, изображения
# Все тесты
pytest tests/ -v
# Только unit тесты
pytest tests/test_basic.py tests/test_unit_*.py -v
# Property-based тесты
pytest tests/test_property_*.py -v
# С покрытием
pytest tests/ --cov=. --cov-report=html- Workflow:
.github/workflows/contract-tests.yml - Для protected branch сделайте обязательным статус-check:
contract-tests - Snapshot тест контракта:
tests/test_contract_snapshot.py - Осознанное обновление snapshot:
UPDATE_CONTRACT_SNAPSHOT=1 python -m pytest -q tests/test_contract_snapshot.pyМы приветствуем переводы на другие языки:
- Создайте папку
locales/{language_code}/ - Переведите строки в шаблонах
- Добавьте поддержку языка в
web_app.py
- 🌍 Поддержка других стран и стандартов качества воздуха
- 📱 Мобильное приложение
- 🔔 Система уведомлений
- 📈 Исторические данные и аналитика
- 🗺️ Интеграция с картами
- 🌡️ Дополнительные метеорологические данные
- 🎨 Темы оформления
- 🔍 Поиск по адресу
- 📊 Экспорт данных
- 🤖 Telegram/Discord боты
- 📧 Email рассылки
- 🔗 API для сторонних разработчиков
- GitHub Issues: Создать Issue
- Discussions: GitHub Discussions
Внося вклад в проект, вы соглашаетесь с тем, что ваш код будет лицензирован под MIT License.
Спасибо за ваш вклад в улучшение экологической ситуации! 🌱