Skip to content
View mellonis's full-sized avatar
๐ŸŸช
Purple Square
๐ŸŸช
Purple Square

Organizations

@mellonis-edu

Block or report mellonis

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please donโ€™t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
mellonis/README.md

Hi there ๐Ÿ‘‹

๐Ÿ“ซ mellonis.ru

Portfolio

  • ๐Ÿ““ plainlog. Text-based bullet journal: the log lives in plain text files you own, and the format is written down as a spec. A Rust core compiled to WASM runs entirely on the device โ€” the parser, the file model and the merge engine are the same everywhere. Next.js landing (ru/en/ar, RTL included) with a live demo on the real core; a React + Vite web app that stores the log in OPFS, writes from a worker, and elects a leader across tabs via Web Locks. Sync goes through a Rust server over its own wire protocol, but the server is not the arbiter: the client core reconciles conflicts, data is end-to-end encrypted with a non-extractable WebCrypto key, and sign-in is by passkeys.

  • ๐Ÿ“œ Poetry website. Personal project โ€” my own poems and prose, organized into themed sections, with bookmarks, comments, voting and full-text search. Migrated a long-running PHP site (the previous version is still online) into a multi-stack architecture: a Next.js 16 / React 19 frontend and a Fastify / TypeScript API (JWT + WebAuthn passkeys, rate-limiting, structured logging) on MySQL 8 + Meilisearch. Self-hosted on a single VPS via Docker, nginx + Let's Encrypt, GitHub Actions deploys.

poetry-264-1940.mp4
  • ๐Ÿ’ณ Yandex Pay โ€” web app + native-app webviews. React 18 + TypeScript + Apollo GraphQL + React Hook Form on the client; Express / Next.js / NestJS on the server side. Built the registration flow; led the dark-theme integration and Figma-token-driven CSS generation; advocated for currentColor-driven SVG icons across the team. Contributed to overall application architecture in close collaboration with backend. Owned most of the frontend for the multi-level KYC flows โ€” Basic, mobileID + Gosuslugi (KycEds), and full identification (Kyc/Max) via either an offline courier visit (Yandex Maps polygons for zoom-aware delivery areas + pins, with the map's visible area recomputed as the drawer opens) or an online selfie verification through a native-camera deeplink โ€” including architectural analysis and protocol review. Seamless webview integration: theme bridging, viewport safe-area handling so the map fills the screen under the notch / Dynamic Island while UI stays within the safe-area inset, and a GeoLocation API wrapper papering over iPhone quirks.

  • ๐Ÿฅฐ Alex Glushko plastic surgeon website. React 17 + Redux + Sass on a CMS-fed page-block architecture โ€” clients compose pages from typed blocks, each with configurable image/video positions and dynamic SVG generation. Content-driven popup architecture letting CMS authors trigger popups from inline links in body text, resolved against the page's registered popups by a section-scoped delegated click handler. Lottie + canvas animations choreographed by configurable scene sequences, scroll-tied dark/light theme, ResizeObserver-driven responsive SVGs, IntersectionObserver-driven active-section table of contents, text rendered along curve paths, Google Maps integration, CSS 3D transforms. Image/video lazy loading designed around the Chromium memory leak below. Announcement on the Art. Lebedev Studio website.

alexglushko-264-1940.mp4
  • ๐Ÿฆ Financial culture website. Financial calculators (loan, deposit, inflation) and the borrower-knowledge test โ€” the parts I'm proudest of. Hand-rolled the loan and deposit mechanics engines (with unit tests, sharing an OperationsGenerator event-stream core): true interest accrual with out-of-schedule extra payments and withdrawals, both annuity and differential amortization, variable interest-rate history, monthly/quarterly/yearly schedules, weekend โ†’ Monday carry-over for due dates, deposit capitalization, banker's rounding. On the inflation calculator I built the "superfood" price-comparison mode. Plus dynamic SVG chart generation (with some d3 helpers), seeded-random SVG clip-path shapes for article card images, Leaflet maps, custom form controls with Inputmask + React Hook Form, YouTube embeds. React 16 + Redux. Announcement on the Art. Lebedev Studio website.

  • ๐ŸŒพ Agrobank Uzbekistan website. Multi-language banking site on TypeScript + React 17 + Redux Toolkit + Sass. i18next-driven Russian/Uzbek routing, Yandex Maps for branch lookup, client-side PDF generation via @react-pdf/renderer, Storybook component library, Swiper carousels, react-helmet-async for SEO. Announcement on the Art. Lebedev Studio website.

Open source

Tape machines

  • โš™๏ธ machine-toolchains โ€” cc/as/ld-style toolchains in Rust for two tape machines: pmt for the Post machine PM-1 (a C-like .pmc language) and tmt for the multi-tape Turing machine TM-1 (.tmc, with worlds and link-time composition). Each architecture gets an optimizing compiler, assembler/disassembler, linker and a bus-accurate sans-I/O VM on top of an architecture-neutral core โ€” neutrality proven by testing the core against a fake architecture. Every CLI serves LSP and DAP over stdio, with VS Code and JetBrains plugins; serde is the only dependency. Proptest property tests, golden tests. It finishes work spread across four Delphi implementations written between 2002 and 2012.

  • ๐Ÿค– machines-demo โ€” interactive in-browser Turing and Post machine playground: write JavaScript against the npm libraries below, or .tmc/.pmc source for TM-1 and PM-1 compiled to WebAssembly, and debug it on an animated tape. User code runs in a Web Worker sandbox (terminate-on-timeout); the Svelte 5 main thread replays the worker's command stream step by step. CodeMirror 6 with Lezer-based preflight, Playwright e2e. Source

machines-demo-2-264.mp4
  • ๐Ÿงฎ @turing-machine-js/machine โ€” composable multi-tape Turing-machine engine: callable subroutines, Mermaid round-trip state-graph diagrams, a DevTools-style step debugger, zero dependencies. Ships two binary-arithmetic libraries with the same operations over different alphabets, to make the alphabet-size vs. state-graph-size trade-off visible. Source

  • ๐Ÿง  @post-machine-js/machine โ€” Post machine that compiles numbered-instruction programs down to a state graph of the Turing engine above: subroutines, inline grouped instructions, per-instruction breakpoints, program-counter stepping. Source

Terminal UI

  • ๐Ÿ–ฅ๏ธ flowtty โ€” React for the terminal: a react-reconciler host lays out <Box>/<Text> with Yoga flexbox, paints into a cell buffer and writes it to a backend โ€” a real TTY with cell-level frame diffing, an inline backend with a redrawable live region above an append-only log, or an in-memory test backend. Components include ScrollBox, TextArea, Table, Markdown, forms and dialogs; the core package depends on neither React nor Node. Published as @flowtty/react (alpha).

  • ๐Ÿ’ฌ flow-assist โ€” a domain-agnostic terminal assistant built on flowtty: everything specific โ€” screens, commands, keys, tools for the model โ€” comes from plugins loaded at runtime. An LLM agent loop over an OpenAI-compatible API asks y/n before every write and keeps the change in the chat as a diff; MCP servers over HTTP or stdio, streaming, sessions that survive a restart, background tasks. Runs on Bun or as a single compiled binary, with end-to-end tests that drive the whole TUI against a scripted model.

Games and toys

  • ๐Ÿงฉ 15-puzzle โ€” sliding puzzle as a chain of levels gated by Ed25519-signed proofs of completion. Boards are procedurally generated (mulberry32 + Fisherโ€“Yates + solvability check), and a zero-dependency Node service replays the submitted moves before signing. Source

  • ๐Ÿ’ฃ minesweeper โ€” framework-agnostic TypeScript engine with a separate canvas renderer: pre-rendered offscreen sprites and a color-keyed pick canvas for hit-testing without geometry math. Source

  • ๐Ÿฆ  life-game โ€” full-viewport Conway's Game of Life, one cell per CSS pixel, ported from a 2012 Delphi toy. Clicks spawn waves that reflect off the edges; a point wandering an endless Catmullโ€“Rom spline spawns more. Rule presets (Conway, HighLife, Maze) and Born/Survive checkboxes. Source

Libraries

  • ๐Ÿง @form-validator-js/core โ€” declarative vanilla-TypeScript form validator: rules in data-attributes, cross-field reactivity, three timing modes, error rendering left to the consumer. Demo, source

  • โœ๏ธ @mellonis/typograf-artlebedev โ€” TypeScript client for Art. Lebedev's ยซTypografยป service (Russian quotes, dashes, non-breaking spaces) with typed errors and AbortSignal-based timeouts and cancellation. Zero dependencies. Source

  • ๐Ÿ‘€ media-query-observer โ€” runs a callback when a CSS media query starts or stops matching. 2.0 is a TypeScript port with typings and an ES module build. Source

Learning

  • ๐ŸŽ“ app.js โ€” a tiny zero-dependency reactive framework built as a teaching project for JavaScript and the DOM: components with HTML templates, reactive data, slots, editable children with their own drafts, attribute bindings, and a ladder of runnable examples up to a strict-CSP setup.

  • ๐Ÿ“š rxjs-mental-model and angular-22-mental-model โ€” learn by doing: runnable TypeScript "ticks", from Observables to a backoff-with-jitter retry operator, and from standalone components and signals to SSR.

Contributions

  • happy-dom โ€” textContent now stringifies non-null values instead of dropping falsy ones like 0 (under review).

Found bugs

Pinned Loading

  1. machines-demo machines-demo Public

    Interactive in-browser Turing & Post machine playground โ€” write JavaScript against @turing-machine-js/machine and @post-machine-js/machine, or .tmc/.pmc source for the Rust machine-toolchains' TM-1โ€ฆ

    TypeScript 1 1

  2. machine-toolchains machine-toolchains Public

    cc/as/ld-style toolchains for tape machines, in Rust: pmt for the Post machine PM-1, tmt for the multi-tape Turing machine TM-1 โ€” C-like languages, optimizing compilers, assemblers/disassemblers, lโ€ฆ

    Rust 1

  3. turing-machine-js turing-machine-js Public

    Composable multi-tape Turing-machine engine for JS/TS โ€” callable subroutines, Mermaid round-trip diagrams, DevTools-style step debugger, zero dependencies

    TypeScript 4 2

  4. post-machine-js post-machine-js Public

    Post-machine engine for JS/TS on top of turing-machine-js โ€” numbered-instruction programs, subroutines, per-instruction breakpoints, program-counter stepping

    TypeScript 2 1

  5. flowtty flowtty Public

    React for the terminal: a react-reconciler host over Yoga flexbox, with components (ScrollBox, TextArea, Table, Markdown, forms, dialogs) and TTY, inline and test backends.

    TypeScript 1

  6. minesweeper minesweeper Public

    ๐Ÿ’ฃ Yet another Minesweeper (vanilla TypeScript)

    TypeScript