Back home

Projects

hamal - a React-internals learning repo rebuilt into a 28-specimen interactive logbook

Test project 3 Jan 2024

hamal - a React-internals learning repo rebuilt into a 28-specimen interactive logbook

A learning repo that was a single unstyled page of about a dozen React demos, every one hardcoded to a single purple, with blocking alert() dialogs, duplicate-id todo bugs and a login button the header never noticed. Rebuilt and expanded into 'Bench Notes' - 28 live, categorised 'specimens' (core and concurrent hooks, the HOC and render-prop patterns, an external store, portals, error boundaries, the class lifecycle next to its useEffect twin) on a bespoke OKLCH lab-logbook design system, with the real bugs fixed and a full accessibility and responsive pass. Ejected Create React App, React 18, styled-components.

  • React 18
  • React Router 6
  • styled-components
  • CRA
  • SCSS
  • OKLCH
  • Responsive
  • Accessible
alkaid - a 2021 portfolio rebuilt in Nuxt with five live demos

Test project 21 May 2021

alkaid - a 2021 portfolio rebuilt in Nuxt with five live demos

A 2021 personal portfolio rebuilt into an editorial Nuxt site whose work section opens five bundled demo builds - a travel landing, a game-studio site, two agency portfolios and a travel marketplace - each lifted from loose static HTML into native, clickable Nuxt routes. Vue 2, Sass and nuxt-i18n with English and Russian, statically generated.

  • Nuxt 2
  • Vue 2
  • Sass
  • nuxt-i18n
  • SSG
  • Responsive
  • Accessible
dubhe - a users-and-posts board rebuilt into a card-catalog work surface

Test project 20 Jun 2023

dubhe - a users-and-posts board rebuilt into a card-catalog work surface

A Vue 3 + TypeScript test task: a board that loads ten authors and their posts from JSONPlaceholder and lets you add, edit, delete and drag posts between authors. Fixed the real bugs (a broken validation-schema import that crashed every form, serial fetches with no per-author loading or error states, one hidden edit modal mounted per card), then redesigned it end to end into 'Atelier Ledger' - a warm-paper card-catalog system with folder-tab columns and index-card posts on an OKLCH palette, a full-height app shell that never scrolls the page, animated drag and modal transitions, and a real accessibility floor. Vue 3 + TypeScript + Vue CLI.

  • Vue 3
  • TypeScript
  • Vue CLI
  • SCSS
  • vee-validate
  • vuedraggable
  • OKLCH
  • Responsive
  • Accessible
merak - an abandoned Union-Find skeleton rebuilt into an interactive algorithm visualizer

Test project 29 Jan 2024

merak - an abandoned Union-Find skeleton rebuilt into an interactive algorithm visualizer

A Vue 3 test-task repo that was never finished: the original only drew a row of white dots on a canvas, carried a hardcoded edge list it never used and implemented none of the actual disjoint-set algorithm. Rebuilt from scratch into a real teaching tool - an animated SVG forest, union by size/rank and path-compression toggles, a scrubbable guided demo, a free-play mode, a live parent/size table, metrics and history, all on a bespoke OKLCH 'terrazzo' design system. Vue 3 + TypeScript + Vite.

  • Vue 3
  • TypeScript
  • Vite
  • SVG
  • SCSS
  • OKLCH
  • Responsive
  • Accessible
alcor - a random quote generator rebuilt around a dead API and given an editorial redesign

Test project 16 Dec 2023

alcor - a random quote generator rebuilt around a dead API and given an editorial redesign

A static random-quote test task whose entire premise was broken: the third-party API it depended on (api.quotable.io) had shut down, so the live app hung on 'Loading...' forever. Rebuilt to read from a curated, locally-bundled set of real, well-attributed quotes with no-immediate-repeat rotation - no network, nothing to fail - then redesigned end to end into a quiet editorial 'ink on warm paper' system with OKLCH light/dark theming, working Share and Copy actions, full responsiveness and a real accessibility floor. Static HTML + CSS + vanilla JS.

  • HTML
  • CSS
  • Vanilla JS
  • OKLCH
  • Responsive
  • Accessible
mirfak - a digital-agency landing refactored from a static test task into a working site

Test project 28 Mar 2023

mirfak - a digital-agency landing refactored from a static test task into a working site

A netdev web-studio landing rebuilt from a static HTML/CSS/JS test task: a broken dual-slider fixed, the services accordion made keyboard-accessible, dead navigation wired to real sections plus new Clients and Pricing blocks, a validated request modal with a success state, placeholder copy replaced with believable Russian content, and a full responsive and accessibility pass. Static HTML + SCSS + vanilla JS.

  • HTML
  • SCSS
  • Vanilla JS
  • Splide
  • Responsive
  • Accessible
alnair - a CRM-integrator landing refactored and grown into a real site

Test project 10 Mar 2023

alnair - a CRM-integrator landing refactored and grown into a real site

A WELBEX CRM-integrator landing rebuilt from a bare single-screen Create React App test task: dead placeholder links fixed, a validated consultation modal with loading and success states, twelve real inner pages each with its own layout, active navigation, a custom favicon and a full accessibility and responsive pass. React 18 + React Router.

  • React 18
  • React Router
  • CRA
  • SCSS
  • Responsive
  • Accessible
alnilam - a board game studio landing refactored and hardened

Test project 25 Dec 2023

alnilam - a board game studio landing refactored and hardened

A board and card game studio landing rebuilt from a jQuery-era Nuxt template: the jQuery WebGL water-ripple replaced with a dependency-free port, a validated lead-capture modal with phone masking and toasts, a working mobile menu, smooth anchor scrolling and a full accessibility pass. Nuxt 3 + Vue 3.

  • Nuxt 3
  • Vue 3
  • TypeScript
  • Tailwind
  • SCSS
  • WebGL
  • Cloudflare
castor - five DivKit paywall screens wired into one accessible flow

Test project 13 Jul 2024

castor - five DivKit paywall screens wired into one accessible flow

Five standalone server-driven UI screens (DivKit, Yandex's SDUI framework) rebuilt from disconnected JSON mockups into one navigable flow: cross-screen navigation, full responsiveness, accessibility, believable copy, self-hosted assets and an OKLCH design-token refresh. DivKit + Express, static on Cloudflare Pages.

  • DivKit
  • Server-Driven UI
  • HTML
  • CSS
  • Express
  • Cloudflare
aldebaran - TON staking landing rebuilt into a multi-page site

Test project 13 Jul 2024

aldebaran - TON staking landing rebuilt into a multi-page site

Crypto staking landing rebuilt from one broken page into a routed multi-page site: dead links and no-op controls fixed, a mislabeled chart replaced with a real responsive line chart, full responsiveness and accessibility, believable copy, and an OKLCH design-token refresh. React 18 + Chart.js.

  • React 18
  • React Router
  • Chart.js
  • SCSS
  • Tailwind
  • Cloudflare
nohello - don't open a chat with just "hi"

Test project 13 Jul 2024

nohello - don't open a chat with just "hi"

A bilingual (RU/EN) one-pager on chat etiquette: lead with the question, not a lone "hi". Rebuilt from a single-language clone into a bespoke, accessible, soft-paper editorial page. Vue 3 + Tailwind, hand-built chat UI.

  • Vue 3
  • TypeScript
  • Vite
  • Tailwind
  • i18n
  • Cloudflare
mira - responsive bakery storefront

Test project 28 Jul 2024

mira - responsive bakery storefront

French patisserie landing rebuilt and enhanced from a Figma file: fully responsive and accessible, with a drag-scroll product rail, a quantity-aware cart, and a keyboard-operable pack-size picker. Vanilla HTML/CSS/JS.

  • Vanilla JS
  • CSS
  • Vite
  • Responsive
  • Accessible
naos - an interactive Langton's Ant explorer

Test project 12 May 2021

naos - an interactive Langton's Ant explorer

A 2021 school canvas toy rebuilt into an interactive turmite explorer: play, pause and step the ant, change the turn rule, and watch order emerge as it builds a highway near step ten thousand. Node, Express and a vanilla canvas, no framework.

  • Node.js
  • Express
  • Vanilla JS
  • HTML5 Canvas
  • Accessible
saiph - an accessible web video player

Test project 20 Dec 2023

saiph - an accessible web video player

A keyboard-driven HTML5 video player in vanilla JavaScript: a tick-marked seek scrubber, monospace timecode, double-click seek, captions and picture-in-picture, and an eight-clip color-grade playlist. No framework, no dependencies.

  • Vanilla JS
  • HTML5 Video
  • CSS
  • Accessible
  • Cloudflare
alnitak - a kanban board and revenue dashboard rebuilt as an editorial operations console

Test project 27 Jan 2024

alnitak - a kanban board and revenue dashboard rebuilt as an editorial operations console

A Nuxt 3 kanban board plus an ECharts revenue dashboard taken from an unfinished demo to one committed design system: warm-paper OKLCH tokens with a 'ledger rule' signature, real correctness fixes (ECharts lifecycle, dead keyboard handlers, nested buttons), a full accessibility floor and a 390-to-1440 responsive pass. Nuxt 3 + Vue 3 + ECharts.

  • Nuxt 3
  • Vue 3
  • TypeScript
  • ECharts
  • Pinia
  • Tailwind
  • Cloudflare
betelgeuse - a pokemon catalogue rebuilt as a pokedex field guide

Test project 6 Apr 2023

betelgeuse - a pokemon catalogue rebuilt as a pokedex field guide

A Create React App catalogue over PokeAPI taken from a stock Ant Design theme to a bespoke 'pokedex field guide': a full OKLCH design system, an 18-type colour system as the signature, real correctness fixes (rules-of-hooks, URL and pagination sync, fetch errors) and a 390-to-1440 responsive plus accessibility pass. React 18 + Redux Toolkit + Ant Design.

  • React 18
  • TypeScript
  • Redux Toolkit
  • React Router
  • Ant Design
  • SCSS
  • Cloudflare
richie - an early brutalist portfolio, restored from git history and modernised

Demo 31 Dec 2022

richie - an early brutalist portfolio, restored from git history and modernised

A loud yellow-and-red personal portfolio from 2022 that a single commit had wiped down to a placeholder. Recovered intact from the repo's own history, then given a correctness, SEO, accessibility and responsive pass - the blog that never built now generates, every page has one clean heading outline, and the long scroll animations were tightened - all without touching the original look.

  • Nuxt 2
  • Vue 2
  • SCSS
  • i18n
  • AOS
izar - a Yandex-Music-style web player with a reactive sound stage

Test project 11 May 2023

izar - a Yandex-Music-style web player with a reactive sound stage

A rough Nuxt starter rebuilt into a real music player: actual HTML5 audio with a persistent queue, a full-screen now-playing screen, favorites, search, radio and a top 100, and a hero whose background reacts to the music. Two reactive backgrounds - a 3D dot-wave and a WebGL aurora reverse-engineered from Yandex's My Wave - both driven by a Web Audio analyser, in English and Russian.

  • Nuxt 3
  • Vue 3
  • TypeScript
  • Tailwind
  • SCSS
  • Web Audio API
  • WebGL
  • i18n

Open source

Public repositories - source, infra, and the tooling behind how I work. AI-assisted code gets reviewed and tested like a junior's draft before it ships.

  • TypeScript Jun 19, 2026

    bmalph

    Unified AI Development Framework - BMAD phases with Ralph execution loop

    My own agentic coding harness: puts AI codegen behind spec phases and a review loop instead of raw generation.

  • Jun 3, 2026

    Notes app

    Self-hosted Markdown notes with tags, full-text search, a calendar view, and a Telegram reminder bot. FastAPI + Postgres, React + Vite, Dockerized.

    Core is covered by tests: pytest on the FastAPI backend (auth, notes, pagination, bulk ops) plus component tests on the React front.

  • TypeScript May 31, 2026

    canopus

    Customized Apache Superset 6.1.0 production image

  • Python Apr 21, 2026

    favro-mcp

    MCP server for interacting with Favro project management.