Stack
What I build with, and how I work
Eight years of production systems. Nothing in the layers below is something I have only read about — what I am still learning is named separately, at the bottom.
Layers
| Interface | JavaScript, React, Redux, React Router, Vue, jQuery, HTML5, CSS3, Bootstrap, DataTables Data-heavy interfaces are the ones I am best at: long forms, tables that have to stay usable at scale, dashboards that senior people actually read. Responsive and mobile-first by default. |
|---|---|
| API | PHP, Laravel, Python, Django, FastAPI, REST design and optimization I design endpoints that other developers consume, and I integrate systems that were never meant to talk to each other — including banking services behind a mobile wallet, where a wrong response is not a cosmetic bug. |
| Data | SQL, PostgreSQL, MySQL, Oracle, SQLite Schema design, and the less glamorous half: untangling records that were collected twice because two forms asked the same question. Search and reporting over government datasets that have to answer in seconds. |
| Infra | Linux (Debian, Ubuntu), nginx, Apache, Caddy, Docker, supervisord Deployment, TLS, packet filtering, intrusion banning, unattended security updates, container image scanning. My degree is in information security, which is why hardening is not something I bolt on at the end. |
| Practice | Git, GitLab, GitHub, Jira, Trello, Postman, Figma, Agile, Scrum Code review as a habit rather than a gate. Estimates I am willing to be held to. Two DevOps teams assembled and run, which permanently changed how I think about what is reasonable to ship. |
How I decide
The smallest thing that can go to production. Not a prototype, not a mock — something real and narrow that users can touch, then widened. The exporter portal started as one form that worked end to end.
Design for the worst conditions, not the office. I built systems for high-mountain regions where mains power is intermittent and the link to the capital is thin. Software that survives that is better everywhere else too.
Count the time removed, not the features added. Every result I put under a project is a duration that got shorter or a count that got smaller. That is the metric I argue for in planning meetings.
Refuse what cannot be supported. Having run the teams who carry the pager, I would rather cut scope than hand over something that needs a hero to keep running.
What I own in production right now
Two live systems run on infrastructure I configured and maintain myself, not on a managed platform:
- innovations.tj — FastAPI and nginx in Docker under supervisord, behind Caddy with automatic certificate renewal.
- This site — hand-written static HTML, no build step, no JavaScript at all.
The host underneath both runs a default-deny packet filter, fail2ban on SSH and on the web logs, unattended security updates, and container images scanned for known vulnerabilities before they go live. I mention it because infrastructure claims are easy to make and this pair is checkable.
Where I am honest about limits
- Strongest
- Data-heavy interfaces, forms and reporting, integrating systems that were not designed to cooperate, taking a manual process and making it self-service
- Comfortable
- API and schema design, Linux operations, deployment and TLS, leading a small team
- Learning
- React Native, building on the React work rather than starting over
- Not my field
- Native iOS and Android in Swift or Kotlin, machine learning, data engineering at petabyte scale. I would rather say so than pick it up on your project