*Latest version: [https://sowa-dev.duckdns.org/en/resume](https://sowa-dev.duckdns.org/en/resume)*

# Michael Malakhov

**Fullstack Developer**

CURRICULUM VITAE · UPDATED OCTOBER 2026

- **Telegram:** [@kotaroSWQ](https://t.me/kotaroSWQ)
- **Email:** [swdevstudio@gmail.com](mailto:swdevstudio@gmail.com)
- **LinkedIn:** [Mikhail Malakhov](https://www.linkedin.com/in/%D0%BC%D0%B8%D1%85%D0%B0%D0%B8%D0%BB-malakhov-3809491b1/)
- **Personal:** Male, 27 years old, born 28 April 1999
- **Citizenship:** Russia
- **Relocation:** Willing to relocate, willing to travel for work

## Summary

Fullstack developer and team lead with 7+ years of commercial experience. Frontend on Vue.js, Nuxt, React and Next.js (SPA + SSR), backend on Laravel, NestJS and Express.

Since 2024 I have built development around AI agents: I write architecture rules, skills and subagent pipelines where tests come before code, and task cost is measured in tokens and driven down. Agents follow the team's conventions, so speed grows without a loss in quality.

I take e-commerce from design to production. Launched brendmart.com in ~4 months, with 600+ orders/month and 2M+ products at handover. Qwixit hit the client's target of 300+ orders/month 2.5 months after launch. Delivered the Fly Post MVP in ~5 weeks.

Currently leading a frontend team of 4: raised dobro.ru throughput 13x and brought the Hector app to a demo on iOS and Android from a single codebase.

## Technical Skills

- **Frontend:** JavaScript (ES6+), TypeScript, HTML5, CSS3, Sass, Vue.js (Vue 2/Vue 3, Composition API), Nuxt 3/4, React, Next.js, Vue Router, Tailwind CSS, Bootstrap, SPA, SSR, MPA, SEO, Chrome DevTools
- **Backend:** Node.js, NestJS, Express, Laravel, Rust, PostgreSQL, Redis, REST API, Docker, Nginx, CI/CD, GitHub Actions
- **Lead & soft skills:** Team management, Task assignment for developers, Workload balancing, Task decomposition and estimation, Team workload analytics, Tracking sprint progress and risks, Technical and architectural decisions, Confluence, Code Review, Training and development, Agile, Scrum
- **Additional:** Vite, Webpack, Git, GitHub, GitLab, Figma, Redux, Vitest, Jest, Tauri, Prometheus, Storybook, Jira, Claude Code, Codex, Gemini, MCP, Atlassian Rovo, Zustand, SWR, TanStack Query, Pinia, Vuex, React Hook Form, Zod, Capacitor, GraphQL, WebSocket, Clinic.js, autocannon, Lighthouse, GitHub Copilot, AI agents

## Selected Projects

### Dobro.rf — [blago.dobro.ru](https://blago.dobro.ru/)

*DONATION PLATFORM · DIGITAL RUBLE*

A donation platform with verified charities, the digital ruble and accounts for non-profits. General partner: Alfa-Bank.

- Frontend Team Lead in a team of 15: frontend architecture and stack, tasks and code review for four more developers, the UI kit, the accounts of non-profits and donors, performance optimization.
- The site handles 13 times more requests: 340 → 4552 rps across 17 routes, median response 919 → 69 ms. Lighthouse 100 in Accessibility, Best Practices and SEO, Performance 90+.

Payments, Accounts, Team Lead

### Hector — [hectorvip.com](https://hectorvip.com/)

*MOBILE APP · PERSONAL PROTECTION*

An app for booking personal protection and a car with a driver: live tracking of the team on a map and an SOS button. The service operates in Europe and the UAE.

- Frontend Team Lead in a team of 15: architecture and the choice of Vue 3 with Capacitor, tasks and code review for four more developers, the initial project setup, components and the first order screens. I presented the app to the client myself.
- The app reached a demo build for the client on iOS and Android, with iOS built and tested in the cloud: 26 screens, about 1,700 test cases.

Mobile app, Team Lead

### Brendmart — [brendmart.com](https://brendmart.com/)

*ONLINE STORE · DELIVERY FROM EUROPE*

An online store of clothing, shoes and accessories by global brands from European stores, with delivery to Russia, Belarus and Kazakhstan.

- Fullstack Developer, one of two on a team with a junior frontend developer: design and UI kit, a Nuxt storefront with server-side rendering, the client side of the admin panel, storefront API in Laravel and code review for the junior developer.
- By handover the store was taking more than 600 orders a month, and the catalog held more than 2 million products.

E-commerce, Full-Stack, SEO

### Tamriel Codex

*OFFLINE HANDBOOK · LARP*

A handbook and player's notebook for a live-action role-playing game set in The Elder Scrolls world: rules, lore and news with fast search, personal notes and sharing them by QR without internet.

- Fullstack developer, end to end: the interface, the local database, the Android and Windows builds, exporting the game data from the VK group and sharing notes by QR.
- At the game the Aldmeri Dominion faction used the app, and players shared notes by QR without internet. Anything in the rules and lore took seconds to find instead of digging through a stack of paper.

Mobile first

## Work Experience

Total experience: 7 years 6 months

### Freedom International Group — Frontend Team Lead

*March 2026 — present (7 months)*

Financial sector, investment company (development of the group's portfolio products) · [freedomgroupint.com](https://freedomgroupint.com)

**Team:** 5 frontend (me and 4 direct reports), 4 backend, 2 designers, 2 QA, 1 PM, 1 DevOps

#### Projects

- **dobro.ru:** charity fundraising platform on Next.js 16 (App Router) + React 19. Catalog of fundraisers and NGOs, donation payments, NGO and donor accounts.
- **Hector:** mobile app for Android and iOS on Vue 3 + Capacitor.

#### Responsibilities

- Leading a frontend team of 4 developers: task assignment and workload balancing.
- Designing the dobro.ru frontend architecture on Next.js App Router: Server Components by default, client components only where hooks and events are needed; a layered component structure in which base UI knows nothing about pages.
- Building a UI kit on React and Tailwind CSS v4 with design tokens: base components, form fields, modals; acceptance of reusable components through Storybook.
- NGO and donor accounts — 20 of the platform's 37 pages: fundraisers, statistics, donation history, documents.
- Data layer: state on Zustand, server data via SWR, forms on React Hook Form + Zod, API types from the backend's OpenAPI schema.
- Code review and code standards: TypeScript strict with no any and no as casts, ESLint, Prettier, Husky + lint-staged, unit tests for every component (Vitest + React Testing Library).
- Planning and estimation in Jira: decomposition, cross-estimation of effort, tracking progress and risks per sprint; team workload analytics with Atlassian Rovo.
- Stack selection for both products: Next.js App Router for dobro.ru; Vue 3 + Capacitor over React Native, Flutter and native for Hector.
- Working out requirements and API with backend, PM and design.

#### Achievements

- Raised dobro.ru throughput from 340 to 4,552 rps in total across 17 routes (13.4x); median response time dropped from 919 to 69 ms (autocannon, production build). The cause was the root layout: auth and header requests were not cached, so all 39 routes rendered dynamically. Moved auth to the client, introduced caching of public requests with tags for invalidation, switched 17 routes to static and 2 to ISR.
- Cut catalog HTML from 254 to 169 KB: the 130 KB filter dictionary is loaded by the client instead of going into the RSC payload. Converted 109 images to WebP; image weight in the build dropped from 13 to 1.4 MB.
- Lighthouse across all 37 dobro.ru pages (Unlighthouse): 100 in Accessibility, Best Practices and SEO, Performance 90+.
- While reviewing my own branch, caught an ISR page that served an empty shell: useSearchParams() pushed it into client-side rendering, leaving 659 characters of text in the HTML instead of 2,398, and neither typecheck nor ~450 tests caught it. After the fix the page holds 196 rps with full content, and a check for client-rendering markers was added to the team guidelines.
- Brought Hector to a client demo build for iOS and Android from a single codebase: 26 screens for the client and the agent, 55 reusable components, ~1,700 test cases in 177 files.
- Moved iOS builds to the Codemagic cloud: a team without Macs gets a simulator build and a signed .ipa in TestFlight. Of ~20 visual bugs in the demo, closed all but one, including those visible only on iPhone.
- Stopped chronic release slips. The cause was large undecomposed tasks and gut-feel estimates by one person: introduced decomposition into 1–2 day tasks and cross-estimation, so every sprint task gets two independent estimates.
- Set up developer workload reports in Jira through Rovo: tasks are assigned by actual workload, without overloading individuals.
- Documented the project architecture for onboarding and turned code rules into instructions and skills for AI agents: new developers and agents follow the same conventions.
- Introduced shared guidelines for the React web app and the Vue mobile app: TypeScript strict with no any and no as, tests for every component. Developers move between projects under the same rules.

#### Stack and technologies

React 19, Next.js 16 (App Router, Server Components, ISR), TypeScript, Zustand, SWR, React Hook Form, Zod, Tailwind CSS v4, Storybook, Vitest, React Testing Library, Lexical, TanStack Virtual, GSAP, OpenAPI, SEO (JSON-LD, Open Graph, sitemap), ESLint, Prettier, Husky, Node.js, Docker, CI/CD (GitHub Actions), Prometheus, autocannon, Clinic.js, Vue 3 (Composition API), Pinia, Vue Router, VueUse, VeeValidate, vue-i18n, Capacitor, Vite, Vue Test Utils, Figma, Git, Jira, Agile, Atlassian Rovo, Claude Code, Codex, MCP

### Freelance — Fullstack Developer

*March 2025 — April 2025 (2 months)*

Contract work alongside a full-time role at Brendmart

**Team:** 2 frontend (hired and led the team)

#### Projects

- **Fly Post:** internal service where aircraft crews pick up mail going their way and get paid for delivering it. MVP on Vue 3 + NestJS, led as a contractor.

#### Responsibilities

- Stack and architecture choice; API contract in Swagger as the team's single source of truth.
- Design of the main desktop and mobile screens and a UI kit in Figma.
- REST API on NestJS + PostgreSQL; infrastructure: Docker, VPS, GitLab CI.
- Frontend skeleton on Vite + TypeScript and an MSW mock server; localization, sign-in with a confirmation code and a Leaflet map.
- Hiring and leading a team of 2 frontend developers: task decomposition in git issues, project structure and code style, code review.

#### Achievements

- Delivered the MVP to the client in about 5 weeks: with the Swagger contract and the MSW mock server, frontend developers built the UI without waiting for the API while the backend progressed in parallel.
- The team started on day one and assembled screens from a ready UI kit without approving every element.
- Built phone verification via a Telegram bot instead of paid SMS: free for a low-budget MVP, and the crews already use Telegram.

#### Stack and technologies

Vue 3, TypeScript, Vite, Pinia, Vue Router, Tailwind CSS, daisyUI, vue-i18n, Leaflet, VeeValidate, MSW, NestJS, Swagger, PostgreSQL, Docker, GitLab CI, Figma

### Brendmart — Fullstack Developer

*January 2025 — March 2026 (1 year 3 months)*

Retail, online store · [brendmart.com](https://brendmart.com)

**Team:** 2 fullstack, 1 junior frontend

#### Projects

- Operator admin panel on Vue 3: intake of orders and buyout requests, purchasing goods from sellers and managing delivery. Built on the same UI kit as the storefront.
- Online store brendmart.com on Nuxt 3/4 (SSR + SPA), ~160k unique users per month.
- taobao.at, a service for ordering goods from China and Hong Kong, on Nuxt 4 (SSR) + Laravel, January–March 2026: design and UI kit, storefront, admin panel frontend, storefront API.

#### Responsibilities

- Admin panel frontend and the backend request layer for the admin panel and the storefront.
- Designing and evolving the frontend architecture of the e-commerce platform (SSR + SPA, component architecture).
- Technical mentoring and support of a junior frontend developer, reviewing the quality of their solutions and code.
- Code review and introducing shared code quality standards in the frontend team.
- Optimizing performance and rendering of high-load interfaces (catalog, product page).
- Designing API and business logic for the storefront and the admin panel.

#### Achievements

- Designed the client application architecture: layers with separate responsibilities, shared rules for state and data. New modules are added without edits in adjacent parts.
- Proposed and introduced Nuxt: the storefront became a separate server-rendered app on the backend's public API and can be extended without touching the backend.
- Launched brendmart.com in about 4 months from the start of development. At handover the store took 600+ orders/month, with 2M+ products in the catalog.
- Shipped taobao.at to production in January–March 2026: design, UI kit and a server-rendered Nuxt 4 storefront. The storefront builds pages from a JSON tree sent by the backend, so page structure changes without a release.
- Built styling on Tailwind CSS + daisyUI so the whole theme switches at once: a page prototype in a new style requested by the client is ready within an hour, and rebuilding the project in a new theme takes a day.
- Built accessibility into the Taobao.at UI kit: the kit passed an axe-core check against WCAG 2.2 AA and manual keyboard testing on desktop and mobile with a single issue for the whole kit — contrast of the brand red.
- Brought the catalog and product page to top Lighthouse scores: lazy loading, code splitting and async component optimization.
- Cut redundant component re-renders in the catalog: rebuilt the rendering dependency graph and removed excessive tracking of large data collections.
- Reworked REST API usage: added caching of repeated requests, debounce on user input and shared error handling instead of scattered handling.
- Profiled the Node SSR layer with Clinic.js: found and removed server-side rendering bottlenecks that are invisible in client-side Lighthouse measurements.
- Introduced mandatory code review and three kinds of tests: Vitest component tests, visual regression tests against reference screenshots and Playwright E2E from catalog to order, after which regressions stopped reaching production.
- Brought AI agents into the team's process: wrote skills for project tasks and connected MCP servers for writing tests and investigating defects.

#### Stack and technologies

TypeScript, Zod, Tailwind CSS, daisyUI, Vite, Nuxt 3/4, Vue 3 (Composition API), Pinia, JavaScript (ES6+), SCSS, Vitest, Playwright, SPA, SSR, SEO, Node.js, Clinic.js, REST API, Git, GitLab, CI/CD (GitLab CI), Figma, Agile, Chrome DevTools, Lighthouse, Claude Code, Codex, Gemini, MCP, GitHub Copilot

### Pochtoy.com LLC — Fullstack Developer

*October 2023 — January 2025 (1 year 4 months)*

Transportation, logistics, warehousing, foreign trade. Courier and postal delivery · [pochtoy.com](https://pochtoy.com)

**Team:** 3 fullstack, 1 PM

#### Projects

- pochtoy.com client side: a large MPA on Laravel + Blade + jQuery with Vue 3 component widgets.
- qwixit.com, an online store of US goods on Vue 3 + Laravel for the same client: storefront and admin panel design, frontend architecture and client side, storefront API, integrations and SEO.

#### Responsibilities

- Maintaining and evolving a large legacy MPA on Laravel + Blade + jQuery.
- Gradual modernization of the frontend without a full system rewrite.
- Targeted introduction of component widgets and interactive modules into existing Blade templates.
- Refactoring legacy frontend code and reducing technical debt.
- Integrating interfaces with REST and Web APIs under an unstable server response format.
- Optimizing performance of interfaces with a large number of API requests and dynamic data.
- Code review and quality control of changes in the legacy codebase.

#### Achievements

- Sped up the Pochtoy and Prostobox storefronts: pagination, lazy image loading, per-page JS and CSS, a lighter library bundle on the Pochtoy home page (~700 KB instead of 930 KB). Storefront pages load in under 5 seconds (previously longer), and both sites handle 7,000+ parcels a week without failures, where they used to slow down and crash under that load.
- Gradually modernized the frontend: built new interactive modules (shipping calculator, “Cashback for a review”) as isolated Vue 3 + TypeScript widgets inside Blade templates without touching the rest of the storefront or the legacy MPA.
- Added component, visual and E2E tests: regressions are caught before release without manual checks of both brands.
- Launched Qwixit in ~3 months. 2.5 months after launch the store hit the client's target of 300+ orders/month: 300–500 orders and 40k–70k visitors a month, with about 1M products in the catalog at handover.
- Designed the Qwixit storefront and admin panel: about 50 reusable components in Storybook were handed over to the client's team, and the store evolves without a redesign.
- For Qwixit SEO, moved product card rendering to the server (Laravel): search engines see the H1, price and schema.org markup (Product, BreadcrumbList, Organization, FAQPage).
- Moved adaptation and normalization of server responses into a separate layer, after which backend logic changes stopped breaking the interfaces.
- Carried out a systematic refactoring of legacy code (Laravel + jQuery): untangled the mix of jQuery handlers and server templates, isolating UI logic from markup.
- Wrote the perf-rum.js script for real-user measurements: for 25% of visits it records TTFB, FCP, LCP, INP and CLS, page weight and request count for each page.

#### Stack and technologies

TypeScript, Tailwind CSS, Vue.js (Vue 3), JavaScript (ES6+), jQuery, Laravel (Blade), Webpack, HTML5, CSS3, REST API, Git, Chrome DevTools, Lighthouse, cross-browser layout, legacy refactoring

### CDEK.Market — Middle Frontend Developer

*October 2021 — October 2023 (2 years 1 month)*

**Team:** 4 frontend, 8 backend, 2 QA, 1 designer

#### Responsibilities

- Designing and building the personal account SPA within the existing MPA architecture.
- Integrating the SPA into the MPA through a single Blade template; client-side routing with Vue Router and state management with Vuex.
- Developing new client modules and UI components.

#### Achievements

- Convinced the team to adopt Vue 2 and built the personal account SPA from scratch: 5 sections in one app without page reloads, embedded into the existing MPA architecture via Blade with no separate frontend project. The account became an argument for leaving legacy: the team decided to rewrite the project on Nuxt.
- Cut regression bugs by 37% per QA reports: covered jQuery code with Cypress E2E tests and visual references, then split 6,000+ line files into modules with Jest unit tests. Features started shipping faster, and sprint overruns dropped.
- Together with the team's designer, built a 16-component UI kit for the account (Vue 2, BEM) that new sections were assembled from without markup from scratch.
- Reduced page load time by ~27% according to Lighthouse measurements: bundle, image and async module loading optimization.
- Account Core Web Vitals: LCP ≤ 2.5 s, INP ≤ 200 ms, CLS ≤ 0.1.
- Integrated the frontend with REST API and internal services, setting up shared error handling and data loading states.

#### Stack and technologies

Vue.js (Vue 2), Vuex, Vue Router, TypeScript, JavaScript (ES6+), HTML5, CSS3, SPA, MPA, REST API, Lighthouse, Cypress, Jest, Git, SPA into MPA integration (Blade), UI kit, cross-browser layout, performance optimization

### To The Moon Mobile Ltd — Fullstack Developer

*April 2021 — October 2021 (7 months)*

Telecommunications. Mobile communications

**Team:** 2 frontend, 2 backend, 1 project

#### Responsibilities

- Developing corporate web applications on React and their Express backend: internal dashboards, services and business tools.

#### Achievements

- Built the company's internal dashboards and business tools from scratch: data tables with user filters.
- Integrated the frontend with the company's internal APIs and business services.
- Developed and extended Express API endpoints and PostgreSQL queries for the needs of internal dashboards and tools.
- Increased interface resilience by adding handling of edge cases and API errors instead of failing on unexpected server responses.

#### Stack and technologies

JavaScript (ES6+), React, HTML5, CSS3, SPA, Node.js, Express, PostgreSQL, REST API, Web API, Git, modular SPA architecture

### Amigoweb — Junior Frontend Developer

*April 2019 — April 2021 (2 years 1 month)*

IT, system integration, internet. Software development

**Team:** 2 frontend, 1 backend, 1 QA, 1 project

#### Responsibilities

- Maintaining user interfaces, developing new client modules and UI components.

#### Achievements

- Assembled reusable UI components instead of duplicated markup, so new pages started to be built from ready-made blocks.
- Reworked the component structure so that a single edit no longer required changes in several places across the project.

#### Stack and technologies

JavaScript (ES6+), Vue.js (Vue 2), Nuxt.js 2, HTML5, CSS3, SPA, Git, UI components, component libraries, responsive layout, cross-browser layout

## Products I Built

### Someday

*Since October 2025 · Lead software developer in a team of three*

C++ driver libraries for ESP32 used to build game devices for a S.T.A.L.K.E.R. LARP in the Urals.

- Ecosystem architecture: shared modules versioned with git tags instead of code copies in every firmware; chose Arduino and PlatformIO.
- someday-lib core: FreeRTOS tasks, thread-safe state, serializable game effects, RFID on RC522 for Mifare Classic and Ultralight cards.
- Module drivers: buttons, LEDs, addressable LED strip, battery, display with Cyrillic support, Wi-Fi, GPS, RFID on PN532, Serial console with commands.
- someday-guard plugin with hooks and rules for Claude Code: a driver template is generated quickly, while review and refinement stay with me.
- 11 driver libraries power 6 game device firmwares. At the 2026 game the devices ran in real conditions: about 30 players completed the location's quests, and a device runs 18–20 hours on two 18650 batteries.

C++, ESP32, FreeRTOS, Arduino, PlatformIO, MFRC522, PN532, FastLED, U8g2, TinyGPSPlus, ArduinoJson, Claude Code

### Tamriel Codex

*10 days · Fullstack developer, end-to-end project*

Offline reference and player notebook for a LARP set in The Elder Scrolls world: rules, lore and news with fast search, personal notes and sharing them via QR without internet.

- The whole app: UI, local SQLite database, Android (Capacitor) and Windows (Electron) builds from a single Vue 3 + TypeScript codebase.
- A Codex and Playwright scraper that pulled texts, PDFs and images from a VK group; converted the materials into app data together with Claude.
- Global search across 11 reference sections: clicking a result opens the card or scrolls the rules to the right section.
- Sharing notes, characters and backstories via QR without internet: one player shows a code on screen, another scans it with the camera.
- Released right on the game date, 10 days from first to last commit. At the game the Aldmeri Dominion faction used the app: anything in the rules and lore was found in seconds, not in a stack of paper.

Vue 3, TypeScript, Vite, Pinia, Tailwind CSS, daisyUI, Capacitor, Electron, SQLite, Playwright, Claude Code, Codex

## Education

- **Higher education: RSSU, 2023** Faculty of Political and Social Technologies, degree in Information Systems and Technologies in Economics
- **Secondary: Mayskaya School, 2017**

## Additional Information

- **Languages:** Russian: native. English: A2 (spoken). Read technical documentation, specifications and English-language sources fluently.
- **Employment type:** full-time, part-time.
- **Work format:** remote, hybrid, on-site.

## AI Tools in Development

Idodom, a 3D furniture configurator for an online store: a FastAPI microservice, a three.js model editor, an admin panel and a storefront. Built it in a week with a pipeline of Claude Code agents: 197 tasks, 71 hours of agent work, about 38k lines of code. My part: specs for the agents, the pipeline design and the decisions. A separate agent writes tests before the code, so there is nearly 3x as much test code as application code, and there were almost no fixes after delivery. Each stage is accepted by a single reviewer: 2–6x fewer review comments than with task-by-task review. Cut token spend per task by about 35%.

Since 2024 I have used AI agents on every project: Claude Code, Codex, GitHub Copilot. For each project I write architecture rules, skills and subagents so the agents follow the team's conventions.

[Full breakdown with numbers — LinkedIn article (in Russian)](https://www.linkedin.com/pulse/197-%D0%B7%D0%B0%D0%B4%D0%B0%D1%87-422-%D0%B0%D0%B3%D0%B5%D0%BD%D1%82%D0%B0-%D0%B8-41-%D0%BC%D0%BB%D1%80%D0%B4-%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D0%BE%D0%B2-%D1%87%D1%82%D0%BE-%D0%BD%D0%B0-%D1%81%D0%B0%D0%BC%D0%BE%D0%BC-%D0%B4%D0%B5%D0%BB%D0%B5-malakhov-wxtjc/)

## References

- **Joint projects:** Roman Khadzhaev (Senior Developer, FIX PRICE), co-author of several of my own projects
- **CDEK.Market:** Roman Olennikov (team lead)

© 2026 Michael Malakhov · SOWA_DEV
