Я Backend Engeener / Python Developer, на этой странице ты можешь ознакомиться с моими проектами.
Я увлечен проектированием ПО, изучаю паттерны и принципы, позволяющие управлять сложностью и сохранять качество кода.
Подписывайтесь на мой телеграм канал, чтобы изучать паттерны проектирования, узнавать об инструментах серверной разработки и тестирования, вместе со мной.
Я создал несколько статических анализаторов для управления сложностью и контроля архитектурных ограничений в Python-проектах.
🍰 layers-linter - Проверяет соблюдение слоистой архитектуры.
https://github.com/pavelmaksimov/layers-linterПредназначен для проверки соблюдения архитектурных ограничений, связанных с:
- разделением модулей по их техническим ролям и контроль направления зависимостей между ними; Анализирует импорты между модулями и предупреждает, когда направление зависимости между слоями не соответствуют заданнам направлениям;
- ограничением на использование библиотек в определенных слоях; Анализирует импорты библиотек и предупреждает, если библиотека импортирована в ограниченном для неё, слое;
Для настройки используется TOML-файл, где описываются слои и направление зависимостей. Особенно полезен для командной работы над сложными проектами. Поддерживает работу как отдельный инструмент и как плагин для flake8.
💉 di-linter - Обнаруживает инъекции зависимостей (Dependency Injection).
https://github.com/pavelmaksimov/di-linterРеализует проверку соблюдения принципа инверсии зависимостей. Инструмент определяет случаи, когда зависимости создаются или используются напрямую в функциях, а не передаются извне. Подходит проектам, где нужно внедрять зависимости через DI-контейнер или поддерживать принципы чистой архитектуры, делая код более тестируемым и поддерживаемым. Линтер поддерживает настройку через TOML-файл. Поддерживает работу как отдельный инструмент и как плагин для flake8.
🏷️ domain-types-linter - Проверяет ограничение на использование приминитивных типов в аннотациях.
https://github.com/pavelmaksimov/domain-types-linterСледит за тем, чтобы в аннотациях использовались только доменно-специфичные типы, а не универсальные (str, int и т.д.). Анализирует аннотации типов и выявляет нарушения: использование универсальных типов, их алиасов или generic-типов без доменных параметров. Поддерживает работу как отдельный инструмент и как плагин для flake8.
🧱 bounded-contexts-linter - Проверяет изоляцию "ограниченных контекстов" Domain-Driven Design.
https://github.com/pavelmaksimov/bounded-contexts-linterПроверяет, что зависимости между модулями возникают только внутри одного bounded context, предотвращая несанкционированные импорты между доменами. Позволяет явно определять shared kernel и shared scope для общих модулей. Линтер поддерживает настройку через TOML-файл. Поддерживает работу как отдельный инструмент и как плагин для flake8.
🏛️ project-architecture-template - Шаблон слоистой архитектуры для Python проектов.
https://github.com/pavelmaksimov/project-architecture-templateСодержит предварительно настроенную структуру проекта, конфигурационные файлы и базовые модули для быстрого старта. Включает:
- Документированную слоистую архитектуру
- Настроенные линтеры
- Настроенные фабрики и фикстуры для тестов
- CI/CD конфигурации для GitLab
- Подключение к бд Postgres
- Alembic для миграций бд
- и др.
🏗️ sqlalchemy-fastapi-endpoint-factory - Генератор CRUD эндпоинтов для FastAPI
https://github.com/pavelmaksimov/sqlalchemy-fastapi-endpoint-factoryИнструмент для автоматической генерации CRUD-эндпоинтов FastAPI на основе моделей SQLAlchemy. Позволяет быстро создавать REST API для работы с данными без ручного описания маршрутов. Пример использования — одна строка для генерации эндпоинта по любой модели Pydantic. Подходит для прототипирования и ускорения разработки сервисов на FastAPI и SQLAlchemy.
🛍️ tapi-yandex-market - Python клиент для API Яндекс.Маркета.
📢 tapi-yandex-direct - Python клиент для API Яндекс.Директ.
📈 tapi-yandex-metrika - Python Клиент всех для API Яндекс.Метрика.
🌊 FlowMaster - Фреймворк для построения ETL/ELT пайплайнов по YAML-конфигурации.
🧠 algorithms - Записывал решения и ошибки при решении алгоритмических задач
📊 attributions - Инструмент для атрибуции в маркетинговой аналитике.
Telegram: @pavel_maksimow