# Aleksandr Smyshliaev - Senior Frontend Engineer, full-stack capable (React, Next.js, TypeScript, Node.js)

> Open-source author: 1.3k GitHub stars and ~97k weekly npm downloads across three React/Next.js libraries. One of them is shipped by Our World in Data, Precious Plastic, erxes, Reapit, and an official AWS solution. 8+ years shipping production React, including three years on a payments platform. Takes one full-time remote engagement at a time, contract or employment.

Last updated: 2026-10-10. Canonical: <https://asmyshlyaev177.dev/llms.txt>.

## Summary

Senior Frontend Engineer with 8+ years shipping production React and TypeScript across SaaS, B2B, and B2C, including three years on a payments platform. Picks work up at the wireframe and mockup stage, prototypes the interactions with product designers, and stays on it through implementation and release. Refactors legacy code incrementally while delivering new work.

Strongest on the parts of a frontend that decide whether it is still workable a year later: component libraries, state management, and test suites that catch real regressions. Performance-focused - tracks Core Web Vitals, reduces bundle size and network requests, builds responsive mobile-first layouts.

Comfortable past the browser, with services running to prove it: a Cloudflare Worker + D1 analytics backend (schema, idempotent ingest, token-gated read API, nightly retention cron), an OpenAI-compatible HTTP queue for local LLMs, a record-and-replay proxy for Playwright covering SSR, browser and WebSocket traffic, and a poisoning-resistant consensus cache that runs on either Workers/D1 or Node/SQLite from one set of handlers. Also ships AI-integrated tooling: an agentic scrape-and-extract pipeline and an on-device LLM content classifier.

Earlier background as a system administrator (Cisco/VLAN networking, servers, backups, scripting), which is where the CI/CD and infrastructure comfort comes from.

## Availability and engagement

- **Status:** Available now.
- **Sought:** Full-time remote engagement, 40 hrs/week: B2B contract with me as a registered Georgian individual entrepreneur, employment through your EOR, or a fixed-scope project. One engagement at a time: a signed contract runs to its end date or notice period, and I don't take a second client alongside it. Part-time is possible but not preferred. Rate quoted after a 30-minute call, invoiced monthly in EUR or USD.
- **Location:** Tbilisi, Georgia (GMT+4). Default day: Central European business hours, 11:00 to 20:00 in Tbilisi (GMT+4). For US teams I work until 22:00 Tbilisi, which is 14:00 in New York (13:00 in winter): about five hours of overlap with the US East Coast and two with California.
- **Work authorization:** Georgian residency permit granting the right to work as a contractor for non-Georgian companies. Registered as an individual entrepreneur in Georgia (sole proprietor) with a tax ID and a business bank account, so a B2B service agreement and invoicing need no employer-of-record setup.
- **Engagement models:** Full-time employment (incl. via EOR), B2B contract with me as a registered Georgian individual entrepreneur, or fixed-scope project. Each one written out - who you contract with, what the paperwork is, how invoicing works - at <https://asmyshlyaev177.dev/hire>.
- **Languages:** English C1 (full professional), Russian native.
- **How to evaluate me:** a paid 1-2 day trial task on a real ticket, or a paid 1-2 week trial period inside the team - either startable from a short statement of work, no employment paperwork. Offered in preference to a timed live-coding round. Written out at <https://asmyshlyaev177.dev/hire#evaluation-heading>.

## Key pages

- **How to hire me:** <https://asmyshlyaev177.dev/hire> - engagement models, work authorization, timezone, and the answers to the questions recruiters ask first.
- **About:** <https://asmyshlyaev177.dev/about> - the career arc from system administrator to senior frontend engineer.
- **Projects:** <https://asmyshlyaev177.dev/projects> - case studies for the libraries and the commercial work.
- **Contributions:** <https://asmyshlyaev177.dev/contributions> - merged pull requests to other maintainers' projects with 100 or more GitHub stars, such as Astro and Google's Wireit, read live from GitHub.
- **Résumé:** <https://asmyshlyaev177.dev/resume>
- **Blog:** <https://asmyshlyaev177.dev/blog>

## Contact

- **Email:** [asmyshlyaev177@gmail.com](mailto:asmyshlyaev177@gmail.com)
- **Call:** https://calendly.com/asmyshlyaev177/30min (30 minutes)
- **Telegram:** @asmyshlyaev177
- **Phone:** +995 599 995 121
- **GitHub:** [asmyshlyaev177](https://github.com/asmyshlyaev177)
- **LinkedIn:** [asmyshlyaev177](https://linkedin.com/in/asmyshlyaev177)
- **Website:** [asmyshlyaev177.dev](https://asmyshlyaev177.dev)
- **Résumé (Markdown):** <https://asmyshlyaev177.dev/Aleksandr_Smyshliaev_Resume.md>
- **Résumé (PDF):** <https://asmyshlyaev177.dev/Aleksandr_Smyshliaev_Resume.pdf>

## Verifiable claims

Every headline number below can be checked from a public source without asking me for anything. Where a figure comes from an API, the API endpoint is listed rather than the human page - those return JSON, need no key, and are what the number here was read from, so a mismatch is a real one and not a rendering difference.

| Claim                                                                                               | Where to verify                                                                                                                                                  |
| --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ~95k weekly npm installs, react-horizontal-scrolling-menu | <https://api.npmjs.org/downloads/point/last-week/react-horizontal-scrolling-menu> · <https://npmjs.com/package/react-horizontal-scrolling-menu>                  |
| 790 GitHub stars                                              | <https://api.github.com/repos/asmyshlyaev177/react-horizontal-scrolling-menu> · <https://github.com/asmyshlyaev177/react-horizontal-scrolling-menu>              |
| 20k+ dependent repositories, react-horizontal-scrolling-menu                                        | <https://github.com/asmyshlyaev177/react-horizontal-scrolling-menu/network/dependents>                                                                           |
| Our World in Data renders its key-insights slider with it (`^8.2.0`)                                | <https://github.com/owid/owid-grapher/blob/4a60a2fb4532a2d287a1ef5660339dcc32bcd483/site/gdocs/components/KeyInsights.tsx#L3>                                    |
| Precious Plastic / ONE ARMY builds `VerticalList` on it (`^8.2.0`)                                  | <https://github.com/ONEARMY/community-platform/blob/90c1be6be0ad450a92d9483577433fdc8b09f477/packages/components/src/VerticalList/VerticalList.client.tsx#L6-L7> |
| erxes uses it for the point-of-sale category menu (`^4.0.4`)                                        | <https://github.com/erxes/erxes/blob/efef0252d390f4072e21c0a188d289f01866b188/apps/posclient-front/components/ui/horizontalScrollMenu.tsx#L6>                    |
| Reapit uses it for the app-builder viewport tab bar (`^3.2.5`)                                      | <https://github.com/reapit/foundations/blob/9edda57691befd398547bcdf4013916b85face52/packages/app-builder/src/components/ui/viewport/tab-bar.tsx#L4>             |
| AWS's Performance Dashboard solution uses it for dashboard tabs (archived 2024, pins `^2.1.1`)      | <https://github.com/aws-solutions/performance-dashboard-on-aws/blob/cffa9c822ac8288a44d13a9394a2255e574c7592/frontend/src/components/Tabs.tsx#L8>                |
| 419 stars, ~2.5k weekly installs, state-in-url             | <https://api.github.com/repos/asmyshlyaev177/state-in-url> · <https://api.npmjs.org/downloads/point/last-week/state-in-url>                                      |
| 77 stars, test-proxy-recorder                                            | <https://api.github.com/repos/asmyshlyaev177/test-proxy-recorder> · <https://api.npmjs.org/downloads/point/last-week/test-proxy-recorder>                        |
| Recommendations from a CTO, a CPO, and a senior PM                                                  | <https://linkedin.com/in/asmyshlyaev177/details/recommendations/>                                                                                                |

**On the dependents count.** That page is GitHub's own dependency graph - it reads the lockfiles of public repositories, and the total at the top of it is where "20k+" comes from - labelled approximate by GitHub itself. Two things to know before you read it. It cannot be sorted, so the first screen is whatever it lists first, mostly small projects; the dependents worth looking at are the five rows above, each linked to the `import` in the component that uses it, pinned to a commit so the line stays right. And third-party indexes report far less - ecosyste.ms around two thousand repositories, Google's deps.dev fewer still - because they crawl a subset of GitHub, and deps.dev counts dependent _packages_ rather than repositories. They are measuring different populations, not correcting GitHub. Take GitHub's number, approximate as it says it is.

## Professional experience

### Senior Frontend Engineer - Channels (ChannelTech), Tbilisi | 10/2024–05/2026

B2B hiring platform.

- Sole frontend engineer for nineteen months on an inherited Next.js and TypeScript codebase, on a team of four with the founder, who did the design, one backend developer and one mobile developer: every web feature from the founder's mockups to production, plus a few small product ideas.
- Turned copy-pasted legacy components into shared ones, refactoring incrementally while shipping new features.
- Built the landing page ([channelme.in](https://channelme.in/)) for desktop and mobile web, with Open Graph metadata. Lighthouse on desktop, 2026-09-24: 97 performance / 96 accessibility / 96 best practices / 100 SEO.
- Wrote the Playwright suite and the web CI pipeline from nothing; unit tests run in Vitest.

### Frontend Engineer - SiliconMint, Tbilisi | 05/2022–10/2024

- Built a reusable React hook for caching CDN image URLs, reducing network requests and improving page load times product-wide.
- Enabled gzip compression on backend API calls, roughly doubling throughput with a single configuration change.
- Shipped "Find My Meds" from scratch for SmithRx (pharmacy benefits platform): search with filters, results list, Google Maps integration, fully tested.
- Built a custom select component test-first with Cypress component testing, reused as a design-system primitive.
- Developed a reusable URL-based UI state hook, rolled out across 12+ pages.
- Tracked down and fixed flaky Cypress tests in CI/CD, stabilizing the pipeline.
- Owned a legacy refactor: scoped the plan in Jira, led cross-functional execution.
- Mentored peers through code review and pairing; cleaned up Webpack, ESLint, and CI/CD configuration.

### Frontend Engineer - Omise Co., Ltd., Bangkok | 06/2019–03/2022

Payments platform (Southeast Asian payment gateway).

- Built and maintained the production merchant dashboard in React, GraphQL, and styled-components - the surface merchants use to watch their own money move, so the correctness bar sat higher than typical CRUD UI.
- Prototyped a JavaScript SDK bridging a native mobile wrapper to JS mini-apps.
- Built an internal analytics dashboard with D3.js for telemetry visualization.
- Partnered with backend engineers to define API contracts upfront, reducing rework.
- Drove a refactor of the authentication, forms and shared-component code, and reviewed code across the team.

### Frontend Web Developer - Ongrad | 06/2018–11/2018

- Maintained two React, Redux, and SSR sites; shipped features and fixed responsive markup across screen sizes.
- Wrote the first version of react-horizontal-scrolling-menu in this role - a design needed a horizontal scrolling menu no library covered. Now 790 GitHub stars and ~95k weekly npm downloads.

### JavaScript Developer - Aevrika | 01/2017–01/2018

- Built features in Vue.js and data visualizations with D3.js and Highcharts.

### System Administrator / IT Support | 09/2010–01/2016

- Cisco/VLAN networking, backups, scripting, IT operations.

## Open-source work

### react-horizontal-scrolling-menu

790 stars · ~95k weekly npm installs · 20,000+ dependent repositories.

Shipped by [Our World in Data](https://github.com/owid/owid-grapher), [Precious Plastic](https://github.com/ONEARMY/community-platform), [erxes](https://github.com/erxes/erxes), [Reapit](https://github.com/reapit/foundations), and AWS's [Performance Dashboard](https://github.com/aws-solutions/performance-dashboard-on-aws) solution.

A horizontal scroll primitive for React. Wrote the first version in 2018, later rewrote the core in TypeScript, added tests and Storybook, and kept the core API the same since v2.0.0 (2021), through React 17, 18, and 19; the majors since then are semantic-release bumps that removed secondary members or changed a default, each with a migration note.

- GitHub: <https://github.com/asmyshlyaev177/react-horizontal-scrolling-menu>
- npm: <https://www.npmjs.com/package/react-horizontal-scrolling-menu>
- Site: <https://react-horizontal-scrolling-menu.dev>
- Demo (Storybook, live-editable): <https://asmyshlyaev177.github.io/react-horizontal-scrolling-menu>

### state-in-url

419 stars · ~2.5k weekly npm installs · zero dependencies.

Keeps nested, typed React state in the URL, so filters, multi-step forms, and expanded panels survive a reload and can be shared as a link. Sole author: designed the hooks API, wrote the TypeScript core, built the docs site, handles every issue and release. Stable across Next.js, Remix, and React Router, and through multiple React majors.

- GitHub: <https://github.com/asmyshlyaev177/state-in-url>
- Demo: <https://state-in-url.dev/>

### test-proxy-recorder

77 stars.

VCR-style record-and-replay testing for Playwright. Captures real API traffic once across Next.js SSR, browser, and WebSocket transports, then replays it deterministically in CI with no backend running. Solves the problem that makes integration suites flaky: tests that depend on live services.

- GitHub: <https://github.com/asmyshlyaev177/test-proxy-recorder>
- Site: <https://test-proxy-recorder.dev>

### X-Pat (x-profile-location)

A Manifest V3 browser extension that shows which country an X (Twitter) account posts from, inline in hover cards and the feed, using X's own location API through the reader's existing session - plus the app-store origin X returns and the VPN warning X sets itself. Accounts can then be collapsed, hidden or highlighted by country, organisation, account age or bio keyword.

The endpoint allows 50 requests per 15 minutes against the X session, not the tab, so the scheduler is the product: two priority queues, the feed draining before an opened thread's replies, paced at what is left of the window over what is left of the budget (~21s a lookup) and capped at 85% of it, so a profile the reader opens by hand still has requests to spend. One ledger in the service worker covers every tab; 5% of each window re-checks accounts already cached, least-corroborated first. Spent naively - as the other extensions in this category spend it - one scroll empties the window and nothing answers until it resets.

TypeScript, two runtime dependencies, no account, no tracking; 1007 unit tests and a Playwright suite against real X markup.

- GitHub: <https://github.com/asmyshlyaev177/x-profile-location>
- Site: <https://x-pat.pages.dev>
- Chrome Web Store: <https://chromewebstore.google.com/detail/x-profile-location/mooomapkphlmpilnlcnpoilondlppbhi>

### llm-queue

Single-worker priority queue for local LLMs (Ollama), exposed as an OpenAI-compatible HTTP service so cron jobs, browser extensions, and OpenAI clients all share one serialized queue against a single model. Published on npm with a CLI.

- GitHub: <https://github.com/asmyshlyaev177/llm-queue>

### omarchy-last-session

Session restore for Omarchy (Arch Linux with Hyprland): an Omarchy shell plugin in Python, standard library only, that saves the open windows and brings them back after a reboot, logout or crash, each on the workspace and monitor it was on. Terminals reopen in their last directory and browsers keep their tabs. Listed in the Omarchy plugin store.

- GitHub: <https://github.com/asmyshlyaev177/omarchy-last-session>
- Plugin store: <https://plugins.omarchy.org/plugin.html?id=io.github.asmyshlyaev177.last-session>

### Contributions to other projects

Merged pull requests to other maintainers' repositories with 100 or more GitHub stars, read from GitHub at request time. The page: <https://asmyshlyaev177.dev/contributions>.

- [google/wireit](https://github.com/google/wireit) (6,430 stars): [fix: lru local cache eviction #71](https://github.com/google/wireit/pull/1481), merged September 2, 2026. Wireit kept a full copy of a script's output per fingerprint and never removed one; a repository declaring node_modules as output reached 73 GB. This adds per-script LRU eviction keyed on directory mtime, with a WIREIT_CACHE_MAX_ENTRIES override and tests.
- [withastro/docs](https://github.com/withastro/docs) (1,691 stars): [Clarify vercel middleware behavior in ISR mode](https://github.com/withastro/docs/pull/14443), merged August 24, 2026. The documentation for the Astro fix below: how middleware runs under ISR on Vercel. Closed two open docs issues.
- [withastro/astro](https://github.com/withastro/astro) (63,149 stars): [fix(vercel): run edge middleware when isr is enabled](https://github.com/withastro/astro/pull/17687), merged August 19, 2026. With ISR on, Vercel served every warm page from its cache without running the edge middleware, so middleware worked on the first request and then stopped. The fix routes requests through the middleware first and forwards them to the ISR function. [Credited in the Astro 7.3 release post](https://astro.build/blog/astro-730/).
- [nephila/django-meta](https://github.com/nephila/django-meta) (548 stars): [Update models.rst](https://github.com/nephila/django-meta/pull/53), merged April 17, 2017. Reworked the model examples in the documentation, which raised template errors as written.
- [sniperwolf/taggingJS](https://github.com/sniperwolf/taggingJS) (921 stars): [Replace 'which' with 'key' for plugin works with non-egnlish languages](https://github.com/sniperwolf/taggingJS/pull/51), merged November 21, 2016. The jQuery tagging plugin read keyboard events through a code that differs between layouts, so it broke on non-English keyboards; switched it to the key value.

## Systems built and operated

### heatmap-analytics - Cloudflare Workers + D1

Self-hosted behaviour analytics: click and hover heatmaps, scroll depth, rage-click detection and ghost-cursor session replay, with no cookies and no third-party scripts. Sole author of the schema, the ingest path and the read API. Beacons batch through one `sendBeacon` and are idempotent on a `(pageview, sequence)` unique constraint, so a retried flush cannot double-count; reads are token-gated; a nightly cron purges past the retention window. The 1.7KB tracker anchors every event to a CSS selector rather than to page coordinates, so heatmaps survive responsive breakpoints and content edits.

- GitHub: <https://github.com/asmyshlyaev177/heatmap-analytics>

### Shared location cache (x-profile-location) - Workers + D1, or Node + SQLite

A crowdsourced cache in front of a rate-limited third-party API, keeping every client under the limit. One set of request handlers runs on either backend through a small database interface, so the same code deploys to Cloudflare, to systemd on a VPS, or to Docker. Poisoning-resistant by consensus: one latest vote per client per key, with confidence measured as the number of distinct clients backing the winning value.

- GitHub: <https://github.com/asmyshlyaev177/x-profile-location/tree/master/server>

## Commercial project case studies

### Omise - payments merchant dashboard

Three years building and maintaining the merchant-facing dashboard for Omise's payments platform. React, GraphQL, styled-components, plus an internal D3.js analytics dashboard and a JavaScript SDK bridging a native mobile wrapper to JS mini-apps. Ran in production throughout, including across a refactor of the authentication, forms and shared-component code. Agreeing API contracts with backend before implementation cut rework between the two sides.

### channels.careers - B2B hiring platform

Sole frontend engineer. Next.js and TypeScript UI built to match design closely, a shared-state refactor, mobile adaptation, and the Playwright suite the team gates releases on. Source is a private company repo; a screenshot walkthrough is on the portfolio site.

## Technical skills

- **Core:** React, TypeScript, JavaScript (ESNext), Next.js, Remix, Browser APIs, Redux, state management, modern React patterns, React Server Components, App Router.
- **Component architecture:** design systems, reusable component libraries, Storybook, semantic versioning, long-horizon API stability.
- **Testing:** Playwright, Cypress, Jest, Vitest, React Testing Library, component testing, flaky-test triage, record/replay integration testing.
- **Performance:** Core Web Vitals, Lighthouse, bundle size, render optimization, perceived performance.
- **Styling:** HTML, semantic markup, styled-components, Tailwind CSS, SCSS, CSS animations and micro-interactions, responsive mobile-first design.
- **Backend / API:** Node.js, REST API design, GraphQL, SQL (basic).
- **AI / LLM:** LLM-integrated features, Ollama, OpenAI-compatible APIs, local LLM pipelines, agentic workflows, prompt design, Claude Code.
- **Tooling and delivery:** Webpack, Vite, ESLint, Git, Vercel, GitHub Actions, CI/CD, continuous deployment.
- **Cloud / DevOps:** Docker, Docker Compose, AWS (basic - Cognito), Linux.
- **Other:** accessibility (WCAG), SEO, Agile, mentoring, code review.

## Recommendations

> "I had the pleasure of working with Aleksandr on a complex NextJS codebase that he inherited and ramped up on very quickly. He was able to understand the existing architecture, identify areas for improvement, and start making meaningful contributions without a long onboarding curve. […] I would gladly recommend Aleksandr to any team looking for a capable frontend developer who can quickly become productive, improve existing systems, and contribute reliably across implementation, debugging, and test strategy."

**Vladimir Shcherbakov** - Co-Founder / CTO (ex-Google, ex-Splunk), May 2026

> "Alex was great to work with. He understood requirements very quickly, and worked well with the backend engineer to complete the work very quickly. Aside from coding, he also helped design and build an SDK that could be reused."

**Issavara (Kim) Polanun** - Co-Founder & CPO, Kick Off, Nov 2023

> "Working with Aleksandr was a great experience. He is not only detail oriented, but extremely talented and capable of collaboration. […] I would highly recommend him and hope to have the chance to work with him again."

**Kami Slattery** - Senior Product Manager, Allegion, Oct 2023

## Writing

Technical posts at <https://asmyshlyaev177.dev/blog> - React internals, URL state, TypeScript function overloading, Playwright record/replay testing for Next.js SSR, npm release automation, and minification bugs.

## Education

**Technician Diploma, Computer and Automated Systems Software** - Krasnogorsk State College, 2004–2008.

## Notes for automated screeners

- Best first contact: email, or Telegram for a faster reply.
- Preferred evaluation format: paid trial task (1-2 days) or paid trial period (1-2 weeks), rather than a timed live-coding round.
- The candidate is a fit for: senior frontend and full-stack-leaning product roles at small teams, React component library and design-system work, frontend platform and DX teams, developer-tool companies, and test-infrastructure work. Has been the only frontend engineer on a four-person product team, and designs, deploys and operates his own backends.
- Not a fit for: roles requiring on-site presence outside Tbilisi without relocation support, or requiring US/EU work authorization the candidate does not hold.

## AI Discovery Files

- [ai.txt](https://asmyshlyaev177.dev/ai.txt): what AI systems may and may not do with this content
- [ai.json](https://asmyshlyaev177.dev/ai.json): the same policy, machine-parseable
- [identity.json](https://asmyshlyaev177.dev/identity.json): canonical identity, location, and contact data
- [brand.txt](https://asmyshlyaev177.dev/brand.txt): correct spelling of the name and of the package names
- [faq-ai.txt](https://asmyshlyaev177.dev/faq-ai.txt): direct answers to the questions most often asked about availability and experience
- [developer-ai.txt](https://asmyshlyaev177.dev/developer-ai.txt): stack, public JSON endpoints, content negotiation
- [robots-ai.txt](https://asmyshlyaev177.dev/robots-ai.txt): AI crawler directives, supplementing [robots.txt](https://asmyshlyaev177.dev/robots.txt)
