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.
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.
| 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.
- Telegram: @bcdbcddd