Selected work

Built &
shipped

Real products, real users, real constraints. Not tutorials.

01
Live · deployed on Render

benchFlow

An IT outstaffing company has to decide who goes on which client request — fast, and without over-committing anyone. Done properly that is the assignment problem, not a CRUD form.

The benchFlow dashboard listing open client requests with their skills, dates and budgets
Role
Solo — domain to deployment
Scale
649 tests · 21 phases
Status
Live, with CI/CD

The hard part. The matcher. A greedy algorithm left one client unstaffed to save 47 in cost — locally optimal, globally wrong. The Hungarian algorithm fills every request, and it is checked against brute force on 200 random worlds, because you don't ship an algorithm you can't prove.

Python 3.13Django 5.2DRFPostgreSQL RedisCeleryDockerGitHub Actions pytestmypy
benchFlow proposing a specialist for a client request, with every rejected candidate showing the exact reason
The Django admin, rethemed to match The auto-generated OpenAPI documentation
02
Live in production

Lolo Cosmetics

A real beauty brand was selling through WhatsApp screenshots — no catalogue, no stock control, no way to scale. I built the whole thing, front to back.

Lolo Cosmetics storefront
Role
Solo — front to back
Scale
267 products · 91 commits
Status
Serving customers

The hard part. Row-Level Security. When the data is someone's actual business, a leak isn't a bug report — it's their livelihood.

React 18TypeScriptViteTailwind RTL SupabasePostgreSQLRLSEdge FunctionsCloudflare
Lolo admin analytics — 2,568 visits, 459 on the peak day Lolo admin panel home
03
Internship · Expert Choice CIS

Attendance System

Attendance lived on paper and in Excel. One administrator spent 3–5 hours merging it by hand — every single time. I built the back-end everything else sits on.

Swagger API docs
Role
Back-end admin API
Access
3 roles · JWT · bcrypt
Status
Merged & documented

The hard part. Schedule conflict detection — interval-overlap checks so a teacher or group can never be double-booked. It took more thought than every CRUD endpoint combined.

PythonFastAPISQLAlchemyPydantic JWTbcryptSQLiteSwagger
Conflict detection JWT authentication
04
Live · deployed

AI Knowledge

A full-stack site about artificial intelligence — written from scratch in PHP, with no framework anywhere in it.

AI Knowledge website
Auth
PHP sessions, by hand
Admin
CRUD · 4 entities
Status
Live on hosting

What it taught me. Writing authentication by hand shows you exactly what a framework does for you — and why it exists. You appreciate the abstraction only after building it once.

PHPMySQLJavaScriptSessions
Admin panel: page management with full CRUD Admin panel: review moderation
05
Shipped · with a real installer

My Notes

A Windows desktop app written in Python — not a web app in a wrapper. You download it, install it, and it runs.

My Notes source
Platform
Windows · standalone
Languages
AR · EN · RU + RTL
Releases
4 published

The hard part. Shipping it. PyInstaller, an Inno Setup installer, and making it run clean on a machine with no Python. Software isn't finished when the code works — it's finished when a stranger can install it.

PythonPyWebViewSQLitePyInstallerInno Setup
Working at night
06
Foundations · a second language

Java Labs

Five progressive labs: OOP, log4j2 logging, regex, XML parsing with SAX/DOM, and MySQL over JDBC.

Java labs in IntelliJ
Labs
5 · progressive
Focus
OOP & class design
Logging
log4j2, not print

Why bother. Java forces you to be explicit — types declared, interfaces as contracts, class design up front. Writing the same ideas in a statically typed language made me a more deliberate Python developer.

Javalog4j2JDBCSAX/DOMRegExMySQL
Handwritten lab structure notes
07
Python · SQL

Data Analysis

Three projects on real datasets, not tutorial ones — COVID-19 global trends, supermarket revenue, and SQL store analytics.

Dataset
Rows
350,085 · 255 locations
Span
2020 – 2023
Output
Charts & insights

What stayed with me. Real data is messy. The analysis is the easy half — making the data trustworthy is the work. Validate early: that habit went straight into my back-end.

PythonPandasMatplotlibSeabornJupyterSQL
The Online Store Analytics README: the three tables it queries, the three questions asked of them, and the answers — laptops the highest revenue at $1,700, and Moscow the most active customers
How I think

Request
lifecycle

Every system I build has the same spine. A request either gets rejected early with a clear reason, or it gets answered — never a crash.

01ClientHTTP + Bearer token
02Authentication & RolesJWT · bcrypt · 401 / 403
03ValidationPydantic schemas · 422
04Business Logicrules · conflict detection
05DatabasePostgreSQL · transactions
06Response200 OK · typed JSON