Anton Veretennikov
Anton Veretennikov
my photo

Hi, I'm Anton — a software engineer.

Holding it all together in the new era of agentic coding.
TypeScript/JavaScript
npm
Node.js

Termi-link

Clickable links for terminals that support them, readable plain text for the ones that don't. A near drop-in alternative to terminal-link — an existing import moves over with a small edit.
  • Sanitizes and encodes urls so nothing can break or hijack the escape sequence
  • Customizable fallback, or switch it off entirely
  • isSupported() detection, cross-platform (macOS, Linux, Windows)
import { terminalLink } from "termi-link";
console.log(terminalLink("example.com", "https://example.com"));
// supported:   example.com   (clickable)
// unsupported: example.com https://example.com
TypeScript/JavaScript
Bun
npm

defold-typescript

TypeScript for the Defold game engine, transpiled to plain Lua via TypeScriptToLua. A modern, agent-friendly successor to the ts-defold family, written from scratch.
  • Full Defold API, typed — every module, namespace, and lifecycle method autocomplete and type-checks
  • Typed self, on_message, on_input via defineScript/defineGuiScript/defineRenderScript
  • watch with live diagnostics, source maps for breakpoints, and --hot-reload into the running game
  • Completes game-object paths, component/node/animation ids and game.project keys read from your own project
  • Fits new and existing projects — adopt TypeScript one script at a time
  • Run via bunx @defold-typescript/cli@latest init
React
TypeScript/JavaScript
Node.js

CLAD Payments

School payments platform for private schools and childcare centers: an administrative dashboard, parent portals, and the collection of tuition from parents. Main contributor for over a year and a half.
  • RedwoodJS + GraphQL app, from the school and enrollment data model up
  • React, Tailwind CSS, and Radix UI, with a component library shared by the admin and parent areas
  • Stripe integration including webhook handling and reconciliation of payment state
  • Supabase Auth with separate roles for school administrators and parents
  • XState machines for the complex flows, Zod validation at the GraphQL boundary
  • Sentry error reporting and Metabase reports for finance and school operations
CLAD Payments
Rust
Bun
npm

Panex

Terminal UI for running multiple processes in parallel. Like Turborepo's TUI without the monorepo, or a zero-config tmux alternative.
  • Split-pane view with full PTY support (QR codes, colors, interactive prompts)
  • Mouse forwarding, visual select with copy, scroll pinning, nestable
  • Native binary with no runtime dependency, cross-platform
  • Run via bunx panex or npx panex
Panex
Next.js
React
TypeScript/JavaScript
Node.js

OSHA 30 Helper

Interactive study tool for OSHA 30 certification with quiz-based approach and 1,500 searchable questions.
  • Full-text search across all questions
  • Quiz mode with instant feedback
  • Mobile-friendly interface
OSHA 30 Helper
TypeScript/JavaScript

P.F. Engineering

Full-stack SSR e-commerce site with searchable image galleries, Markdown content, and PayPal integration.
  • Server-side rendering for SEO
  • PayPal checkout integration
  • Markdown-driven content
P.F. Engineering
TypeScript/JavaScript
npm
Node.js
Bun

Synset

Query WordNet semantic dictionary for definitions, synonyms, and hypernyms. CLI + TypeScript library.
  • Fetches and caches WordNet database automatically
  • Definitions, synonyms, hypernyms, or every relation at once
  • Zod-validated schema parsing, CLI and programmatic API
  • Export to SQLite database
import { getDefinitions, getSynonyms } from "synset";
const defs = await getDefinitions("happy");
const syns = await getSynonyms("happy");
C#
Windows

DisplayedAppSwitcher

Windows system tray utility for multi-monitor workflows using Win32 API keyboard shortcuts.
  • Global hotkeys for window management
  • Multi-monitor aware
  • Lightweight system tray app
Next.js
React
TypeScript/JavaScript
PixiJS
Node.js

Parcheesi

Local multiplayer board game for shared-screen play with PixiJS rendering and player-oriented UI.
  • PixiJS v8 rendering (ported up from v6)
  • UI oriented toward each edge of the device for shared play
  • Touch and mouse support
Parcheesi
TypeScript/JavaScript
npm
Node.js
Bun

Precise Colors

High-precision color space conversions for TypeScript/JavaScript. Supports 12 color models with CIE 15.3 compliance.
  • 12 color models (RGB, Lab, LCH, etc.)
  • CIE 15.3 standard compliance
  • Tree-shakeable ESM exports
import { rgb2lab, lab2lch, lch2css } from "precise-colors";

const lab = rgb2lab({ r: 100, g: 150, b: 255 });
const lch = lab2lch(lab);
console.log(lch2css(lch)); // "lch(62.55% 62.44 279.76)"
TypeScript/JavaScript
npm
ESLint
Node.js

eslint-plugin-no-in-array

Type-aware eslint rule that detects misuse of the in operator with arrays in TypeScript.
  • Catches common JS gotcha
  • Type-aware analysis
  • Auto-fix suggestions
// The 'in' operator checks keys, not values!
"a" in ["a", "b", "c"]; // false! indices are "0", "1", "2"
// Use .includes() instead
Bun
Swift
TypeScript/JavaScript
Node.js

Favicon Fella

CLI tool that generates all favicon and app icon variants from a single PNG image.
  • Generates favicon.ico, Apple Touch Icon, Android Chrome icons
  • Smart background color detection
  • Outputs site.webmanifest for PWAs
# Output for each source image:
favicon-16x16.png, favicon-32x32.png, favicon-48x48.png
favicon.ico (16/32/48 bundled)
apple-touch-icon.png (180x180)
android-chrome-192x192.png, android-chrome-512x512.png
site.webmanifest
Cloudflare Workers
TypeScript/JavaScript

QR Code Worker

Cloudflare Worker generating QR codes with optimized API for resource-constrained IoT devices.
  • Optimized for low-memory IoT
  • 3x3 module grid packing
  • Edge-deployed globally
// 3x3 module grids packed into 9-bit integers
// Reduces CPU and memory overhead on low-end hardware
+-----+-----+     +-----+-----+
|0 0 0|1 1 0| ->  |  24 | 235 |
|1 1 0|1 0 1|     |     |     |
+-----+-----+     +-----+-----+

Caddy Config Injection

gRPC-based dynamic configuration server for Caddy enabling runtime route registration.
  • Runtime route injection
  • gRPC protocol
  • No Caddy restart required
fn := lib.Fn(*addr, &pb.Route{
  Id: "example.com",
  Matches: []*pb.Match{{
    Hosts: []string{"example.com"},
  }},
})
C#
Visual Studio

Kanagawa Theme

Visual Studio color theme inspired by Hokusai's Great Wave off Kanagawa for comfortable coding sessions.
  • Low-contrast, eye-friendly palette
  • Inspired by Japanese ukiyo-e art
  • Full syntax highlighting coverage
Kanagawa Theme

Go run SASS

CLI wrapper for go-libsass eliminating recompilation overhead for build pipelines.
  • Pre-built binary, no compilation
  • Faster than node-sass
  • Cross-platform CLI

JSON Walk

Recursive JSON traversal library for Go with path-based callbacks for flexible data extraction.
  • Path-based matching
  • Type-aware callbacks
  • Zero allocations on hot path
jsonwalk.Walk(&v, jsonwalk.Callback(func(path jsonwalk.WalkPath, ...) {
  if path.Path() == "[0].Config.Env" && tp == jsonwalk.Array {
    // extract data
  }
}))

Fresh

Live-reload development tool for Go that automatically rebuilds and restarts applications on source code changes.
  • Watches file changes recursively
  • Configurable via YAML
  • Graceful process restart
$ fresh -help
Usage of fresh:
  -c string  config file path (default "./.fresh.yaml")
  -generate  generate sample settings file

Voronoi Diagrams

Fortune's algorithm implementation for computing Voronoi diagrams in Go with O(n log n) complexity.
  • O(n log n) time complexity
  • Bounding box support
  • Returns edges and vertices
sites := []voronoi.Vertex{{4, 5}, {6, 5}}
bbox := NewBBox(0, 0, 20, 10)
diagram := NewVoronoi().Compute(sites, bbox, true)

Interval

Numeric range normalization library with wrap and clamp operations—ideal for polar coordinates and cyclic values.
  • wrap for cyclic values (angles, hue)
  • clamp for bounded ranges
  • Integer and float variants
interval.WrapInt(0, 360, 400)  // => 40
interval.WrapInt(0, 360, -90)  // => 270
interval.ClampInt(0, 100, 500) // => 100

dos2unix

CLI utility for converting Windows line endings to Unix format.
  • Skips non-text files automatically
  • Recursive directory processing
  • In-place conversion

Terminal

Cross-platform terminal control library for Go with cursor positioning, colors, and alternative buffer.
  • Cursor and color control
  • Alternative screen buffer
  • Windows and Unix support

Ifchanged

File change detection library for Go using SHA256 hashing for build automation.
  • SHA256-based change detection
  • Persistent hash storage
  • Ideal for build scripts
Dart

Tree Structures

Dart red-black self-balancing BST with O(log n) operations and Graphviz visualization support.
  • Self-balancing red-black tree
  • O(log n) insert/delete/search
  • Graphviz DOT output

Gamut Mask

Color theory tool implementing gamut masking techniques for harmonious palette generation.
  • Interactive gamut mask editor
  • Real-time palette preview
  • Export color schemes
Gamut Mask
av
Anton VeretennikovPersonal Landing Page