Skip to content
View risenxxx's full-sized avatar
🐈‍⬛
Building awesome applications
🐈‍⬛
Building awesome applications

Organizations

@random-ru

Block or report risenxxx

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
risenxxx/README.md

Evgenii Zakharov · risen

Full-Stack & Platform Engineer

I build the whole path — the interface, the services behind it, and the cluster they run on — and keep all of it in code.

Website • LinkedIn • Telegram • to@risen.dev

Open to Senior Full-Stack and Platform / DevOps roles — remote (contractor or EOR), or hybrid in Yerevan
Previously: X5 Group (food.ru, ~7.5M MAU) · SberEducation · Haiku Dev


How I work

  • Infrastructure is a repository. Machines, clusters, deploys, dashboards and alerts are declared and reconciled by GitOps. Nothing in production is changed by hand.
  • Broken states shouldn't compile. Typed contracts from the database to the UI, validation at every boundary, and enough metrics to know something is wrong before a user reports it.
  • The interface gets the same bar as the backend. States, motion, accessibility and the exact frame under the cursor are designed and measured, not left to whatever a generator outputs.
  • Agents type, I specify. Requirements, constraints and failing tests come first. Nothing ships until edge cases, security and performance bars pass.

Stack

Domain Technologies
Platform Kubernetes Talos Linux Pulumi Terraform Ansible FluxCD Prometheus Grafana
Backend .NET Node.js Hono
Data PostgreSQL Redis ClickHouse NATS Temporal
Frontend TypeScript React Next.js

Infrastructure

Gift Fight: four generations of the same cluster

Generation Why it changed
Ansible roles + kubeadm on VPS the hosts had no API and no Terraform provider
Terraform + Talos on DigitalOcean an API arrived, but values like registry credentials were awkward to build
Terragrunt brought in for templating, and turned into nesting nobody could follow
Pulumi + Talos + Flux everything in code, no generated config

Bare metal and cloud in one cluster. Secrets come from Infisical through External Secrets and never live in the repo. Cloudflare and DragonflyDB sit at the edge. Releases and rollbacks take under 3 minutes.

Infrastructure • Codebase

Tuned: current

Talos on Hetzner via Pulumi, Flux GitOps, and content-hash image builds, so an unchanged service is never redeployed. VictoriaMetrics alerts. CI runs 400+ integration tests against real PostgreSQL and Redis before any image is built. An operator MCP server queries production in plain language through column-level database grants; writes go through a port with human confirmation and an audit journal.

Private repository — happy to walk through it on a call.


Products

Gift Fight: real-time PvP Telegram game

TypeScript Temporal Socket.IO Hono

Built with a business partner. Launched to ~1,500 players and closed on funnel data: free channels were bringing in players who didn't pay.

  • Provably fair, not "trust us": HMAC over a server seed committed before the round and a client seed the player controls. The commitment is published first and the seed revealed after, so anyone can recompute the outcome.
  • Rounds survive a deploy: each game lives in a Temporal workflow, not in a server's memory. p95 state-sync latency was 120 ms in load tests with 300 concurrent sessions.
  • Money is idempotent: TON and Telegram Stars payments go through transfer and settlement services that are separate from gameplay.

Sigma Games: iGaming platform on .NET 9

.NET PostgreSQL NATS React

  • 10 ASP.NET Core services: payments, wallets, affiliate, gaming and auth. NATS pub/sub, Redis, distributed locking and Hangfire.
  • Money movement is transactional and idempotent under concurrency, on a 27-entity PostgreSQL schema with EF Core.
  • Integration tests run on Testcontainers against real PostgreSQL, Redis and NATS.

Organization

Tuned: AI resume tailoring

The model proposes and the code decides. Grounding checks reject any claim the source resume can't back, page fitting runs against the real PDF renderer, and an eval harness on real resumes picks prompts and models by measured quality and cost. Live payments five weeks after the first commit.

tunedhq.io

Frame Player: video player for Windows and macOS

Rust Tauri Svelte libmpv

  • Casts to the TV untouched: a 4K HEVC HDR file with Dolby audio goes to the television as-is, over Google Cast or DLNA, while the window stays a working remote. A copy is made only when the set can't take the original, and even then the video is stream-copied.
  • Torrents play while they download: piece priority follows the playhead, the seekbar shades what has arrived, and the next episode is prefetched.
  • A real interface over mpv: mpv renders into a native view behind a transparent webview, with the UI composited on top as HTML. On macOS that meant patching libmpv, which had no --wid support.
  • Measured, not assumed: seek previews land on the exact frame (naive keyframe mapping showed the wrong scene 60% of the time), and audio and subtitle choices are re-found in the next episode by language and codec, never by track index.

Repository • Download


Also built

  • DeskVolt: a battery widget for wireless peripherals from six vendors (Logitech HID++ 2.0, SteelSeries, Corsair, HyperX, DualSense) over reverse-engineered HID protocols. Native Win32 with Direct2D, under 10 MB resident.
  • dubsync: moves a dub from one release onto another, aligned with GCC-PHAT segment by segment to ~50 ms. Every match carries a confidence score, so a bad one is reported instead of shipped.

Open source

  • nestjs-zod: original author. ~5.5M downloads/month; one schema serves validation, types and API docs. Transferred to another maintainer in 2024.
  • eslint-kit: author. A preset-based ESLint config, now obsolete since Biome. It was the right answer while ESLint was the only option.

Pinned Loading

  1. frame-player frame-player Public

    A video player for Windows and macOS built on Tauri 2 and libmpv: local files, links, torrent streaming with a built-in catalog, casting to Chromecast and DLNA televisions, and watching together in…

    TypeScript 34

  2. gift-fight/gift-fight gift-fight/gift-fight Public

    A real-time PvP gift roulette game built as a Telegram Mini App. Players bet collectible Telegram gifts against each other in provably fair roulette rounds.

    TypeScript 1 1

  3. BenLorantfy/nestjs-zod BenLorantfy/nestjs-zod Public

    All NestJS + Zod utilities you need

    TypeScript 1.1k 119

  4. DeskVolt DeskVolt Public

    Lightweight Windows desktop widget displaying battery status for wireless peripherals via direct HID communication

    Rust 1

  5. finalizer-cleaner finalizer-cleaner Public

    Remove finalizers from kubernetes resources

    Go 1

  6. perfect-graves perfect-graves Public

    A polished, claims-aware death-recovery system for Minecraft Forge 1.20.1. Lose nothing, find everything, suit up in one motion.

    Java