Skip to content
View zavet-g's full-sized avatar

Block or report zavet-g

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
zavet-g/README.md

Artem

Backend developer. Moscow.

Four years on production systems: document pipelines, integrations with external registries and messengers, message queues, highload Telegram bots/apps. Two tracks — Python services and 1C-Bitrix / PHP portals with CRM integrations. Most of that work is closed source, so the repositories below are side projects: they show how I structure code, not what I shipped at work.

The exception is the first one — a tool I built because I needed it at work and nothing like it existed.

Currently open to backend roles.

Main stack

Python FastAPI Django PHP 1C-Bitrix PostgreSQL SQLAlchemy Docker

Also work with

RabbitMQ Redis Celery MySQL Linux GitLab CI Prometheus Grafana pytest

For fun

Go

phpstan-bitrix

phpstan-bitrix — a PHPStan extension for 1C-Bitrix projects. Sixteen rules that find legacy kernel API, uncached queries, N+1 over infoblock properties, SQL built by concatenation and blocking calls inside event handlers.

Generic PHPStan knows nothing about the platform: to it, CIBlockElement::GetList() inside a foreach is just a static call, not the thing that takes down the database on a list of a thousand elements. No such extension exists on packagist, and Bitrix's own quality monitor solves a different problem — taint analysis for XSS and injections.

Written against a real project: 1072 files, 201 legacy API findings. That run is also why the legacy rules are split into five identifiers instead of one — 95 of those findings were mechanical CModule::IncludeModule() replacements, and without the split you would have to choose between that noise and the rule itself.

PHP 8.2+, tested on 8.2 through 8.5.

Other repositories

project what it is worth a look for
passenger-flow quarterly passenger flow forecasting for Moscow Metro clean architecture with real layer boundaries, six forecasting models behind two protocols
finans-nova Telegram bot for expense tracking, voice input circuit breaker, rate limiting, health probes, metrics
nginx_log_analyzer streaming parser for nginx access logs with analytics API layered FastAPI service, CRUD over SQLAlchemy, 67 tests
HabrDigest article digests from Habr, summarised by an LLM Celery scheduling, scraping, error handling split by layer
LogiFlow Django app for delivery accounting with reports Django + DRF, admin, 56 tests at 86% coverage
DotaTicketWatch Go service that watches ticket drops and reports to Telegram concurrency, Cloudflare bypass via TLS fingerprinting, caching

Each README explains the problem, the reasoning behind the design and — separately — what the project does not do.

Contact

Pinned Loading

  1. phpstan-bitrix phpstan-bitrix Public

    Расширение PHPStan для 1С-Битрикс: устаревшее API ядра, выборки без кэша, N+1 по свойствам инфоблоков, сырой SQL, тяжёлые обработчики событий

    PHP

  2. DotaTicketWatch DotaTicketWatch Public

    пока все обновляют страницу руками — этот уже отправил уведомление. не спит, не устаёт, не пропускает. написан на go — компилируется за секунду, весит 15mb, летит быстрее чем ты успел подумать. axs…

    Go

  3. nginx_log_analyzer nginx_log_analyzer Public

    Сервис разбора access-логов nginx: потоковый парсер, PostgreSQL, REST API с аналитикой

    Python

  4. passenger-flow passenger-flow Public

    Прогноз квартального пассажиропотока метро: FastAPI, слоистая архитектура, шесть моделей

    Python