Vitaliy Yaryna

I build products from zero to production. And I stay with them after that.

Fullstack developer. Fifteen years in IT, ten of them paid work.

A dark server room. Racks of green status lights along both walls, a figure at a desk between two bright monitors, cables running across the floor, and a glowing wireframe globe above. Open
The same page, as a room you can walk into and talk to me in. It is the main version — this one is for reading.
01 Why me
6 claims

Why me

01  end-to-end

You can hand me the whole product, not a piece of it.

The database, the API, the interface and the server are all my work, so nothing waits for the next person. That line between people is where projects lose most of their time, and it is where "that part is not mine" comes from. And I mean built, not assembled: my own marketplace started as an empty folder, not as a platform with a theme on it.

Proved by shopcastingtaxiown
02  stay

I finish what I start, and I am still there after the launch.

Most of the real problems arrive after the first release, when the first hundred people use the thing in ways nobody planned. That is when many developers are already gone. Two of the systems I built years ago are still running, and I still support both.

Proved by doctorscastingshop
03  money

If your product takes money, it will take it correctly.

Connecting a payment provider is the easy half. The hard questions come after: what happens when the same payment arrives twice, when a customer wants a refund after the parcel is already delivered, or when one discount can be used from two tabs at the same moment. I answer those before the first payment, not after the first complaint.

Proved by shopecs
04  consequences

I look at your business, not only at the task you gave me.

Code can be correct and the result can still be wrong for a real person, or expensive for you. So I ask two questions that are never in the task: who pays if this runs twice, and who gets hurt if this leaks. That kind of problem does not come back as a bug. It comes back as a refund, an angry customer, or a question from a lawyer — and it costs far more then.

Proved by shopdoctors
05  infra

You will not pay for a system that is bigger than your product.

Many engineers add complexity, because it looks good later. I have done the opposite: I took Kubernetes out of a project because the real traffic never needed it, and both the bill and the work went down. I set up the servers, the deploys, the backups and the monitoring myself, so I see the price of every decision I make.

Proved by ecsshop
06  handover

You will not be locked to me.

I write a spec before the work, a page about how the system works, and a guide about how to run it. So a new developer, or a whole new team, can start without asking me anything. I also write down why I chose one way and not the other, which is the part nobody can read from the code. If your people change, the product does not stop.

Proved by shopdoctors
02 Cases
6 cases

What I actually did

The shop I built and run myself

Context

My wife sells there. I am everything else: the API, the website, the database and the server. If it breaks at night, the person who fixes it is me.

Decision

NestJS and GraphQL on the server, PostgreSQL behind them, Next.js on the front. But the stack was not the decision. The decision was to build it so that one person can run it: everything slow — video, images, email, the nightly checks — happens in a queue, away from the customer waiting for a page. A busy evening does not turn into a slow website, and one job that fails does not take the shop with it.

Result

I run it the way I would run it for a client. The machine that holds the data has no open web port at all, so there is nothing on it to attack from the internet — traffic reaches it only through a tunnel that opens outwards. The data leaves the machine every day, and the copy is checked before it is kept, so a broken backup can never quietly replace a good one. Losing the machine would not mean losing the shop.

Proof

The easiest thing to check is the shop itself: it is open, and it takes real orders. The rest shows in how it behaves. Since it went live I have not had to repair anything, and I have never spent a night bringing it back. It is also written down well enough that another engineer could take it over from me.

02
doctors

A doctors portal that outgrew WordPress

Context

Think of a simple Facebook, but only for doctors. They share knowledge there, publish online courses and stream lectures. There is a job board, a shop for medical equipment, and podcasts. It is free and open to every doctor in the country it serves. And all of it was built on WordPress.

Decision

We moved it to Laravel. I did the backend, with one frontend developer. People sign in there with the national identity system of that country, so I had to build that part again, through a separate provider. It is its own flow — close to OAuth, but not OAuth.

Result

It went live, and years later it is still running. I still support it. If I were you, that is the part I would look at: not that it launched, but that the same person still answers for it today.

Proof

"Moved it off WordPress" sounds small until you hear what was inside. One backend developer moved a social network with live lectures, a job board, a shop and a national identity check.

03
ecs
Proves inframoney

Kubernetes fell over, and I chose not to fix it

Context

The same portal. Another engineer had set up Kubernetes for it. One day it broke. Repairing it would take a long time and cost a lot.

Decision

I have set up Kubernetes myself, on another project, so I know what it costs to keep alive. That is why I looked at the real traffic first. It was small. Kubernetes had been too big for this project from the start. I moved it to AWS ECS instead.

Result

The bill went down, and it became simple enough to run without a specialist to keep it alive. I also set it up to add servers by itself when traffic grows. So you do not pay today for traffic you do not have yet, and nobody has to move the project again on the day it arrives.

Proof

Many engineers add complexity, because it looks good on paper. This was the opposite, and I did it during an outage, when repairing the old thing looked like the safe choice.

04
casting
Proves end-to-end

A casting platform, from an empty repository

Context

A large database of producers, projects, roles and actors. A casting agent searches by many criteria, then invites an actor to an audition, or asks for more photos and video. Actors build a profile with photos, video and skills, and the system suggests roles for them.

Decision

I was the backend and the DevOps person, in a small team. Laravel, PostgreSQL, AWS, and deploys through Jenkins.

Result

We took it from an empty repository to production. It is still alive, and I still support it.

Proof

The hard parts were the search across many criteria and the media pipeline — a lot of photos and video from users. I built the same two things again years later, from zero, on a completely different stack.

05
taxi
Proves end-to-end

Where it started: a taxi company, 2011

Context

My brother had a radio taxi company with three phone lines. I had no computer science degree, and nobody to ask.

Decision

I wrote the whole system for it. Customers, drivers, trip prices, bonus points, booking online. No framework at all — plain PHP and MySQL. The dispatchers needed a desktop program as well, so I wrote that too, in Java.

Result

They used it every day for four years. Web and desktop, both mine, at the very start. This is where my fifteen years begin.

Proof

The technology here is simple, and that is not the point. The point is that the first person who trusted me with a business was my brother, and it worked.

06
own
Proves end-to-end

Three small products of my own

Context

I build tools for myself when something annoys me, and I finish them.

Decision

An activity tracker, a playlist builder for YouTube Music, and a Chrome extension that helps me learn English. All three are open right now, and the extension is in the Chrome Web Store — Google reviewed it, and the people who installed it are strangers, not friends I asked.

Result

None of the three needs a machine I have to keep alive. The tracker runs at the edge — the API, the database and the shared leaderboard all live there. The playlist builder has no backend at all. The extension does its work on your own computer, so what you watch never leaves it.

Proof

Each one had to answer the same question in a different way: where the rules live, and who guards the data. In the tracker three apps share one package, so the website, the phone and the API can never disagree about when a day ends. In the playlist builder there is no backend to trust, so every request is checked with Google before it touches anything.

03 Products
4 live

Open them yourself

Live, not screenshots. Open any of them right now.

01  the lead

Pasuye

pasuye.com

Pasuye is a marketplace, and it is the work I am most proud of. It is not Shopify. It is not OpenCart with a new theme on top. It started as an empty folder, and everything after that is mine.

Model

I built it for many sellers. Each one gets their own shop, and the money from a sale goes straight to them — it never passes through me. Today it runs as a single store, ours, while we grow.

NestJSGraphQLPostgreSQLNext.js
What is inside
  • Much more than a cart and a checkout. An admin panel, a whole side for sellers, search with filters, reviews and questions under every product, moderation, and two languages.
  • Customers can bid in auctions, collect cashback into a wallet, message a seller directly, and get a push notification on their phone. Sellers get an AI that writes the first draft of a listing for them.
  • Behind that: three delivery companies, two card providers, cash on delivery, email and SMS, and a queue for everything slow — video, images, notifications, and the nightly checks.
  • 25 modules on the server, 58 schema files, 240 database migrations, 2204 commits. No team, no ready-made platform underneath. One person, from an empty folder.
2204
commits
240
database migrations
58
schema files
25
modules on the server
02
ember

Ember

An activity tracker. You mark what you practised today, and it draws a heatmap of your whole year. It counts streaks, gives achievements, and has leaderboards.

I made it for myself. Every day I walk 40 minutes on the stairs and listen to podcasts in English. From memory it always felt like I was doing very little. The heatmap showed me the truth.

It is one monorepo with three apps: the website, a phone app, and the API. The rules — how a streak is counted, when a day ends — live in one shared package, so all three always agree. No app has its own version of the truth. TypeScript everywhere, in strict mode.

What you install on your phone is the website itself, not something from a store. It opens full screen, updates itself, and still works with no connection, from a copy it keeps. I did build the native app as well — Expo, Android and iOS both — and then chose not to publish it: a free app still costs a developer account every year, and two more places to answer support. The API runs on Cloudflare Workers with Hono, Drizzle and D1.

ember.pp.ua
ReactPWAReact NativeCloudflare Workers
03
songdrop

Songdrop

A playlist builder for YouTube Music. You paste a list of songs as plain text. It signs you in with Google, finds every track, and builds the playlist for you.

The interesting part is what is not there: no server. It is Next.js on Cloudflare Pages, the API routes run as Workers, and the history is kept in Cloudflare D1. Sign-in happens in the browser itself.

Even so, your history stays private. Every route asks Google to confirm the token before it reads or writes anything, so one public site can hold many people’s playlists safely.

songdrop.pp.ua
Next.jsCloudflare WorkersD1No server
04
study-subs

Study Subs

A Chrome extension that turns a YouTube video into a language lesson. You see two lines of subtitles at the same time: the original one, and the translation under it.

It also stops the video at the end of every sentence, so you can repeat it out loud. Subtitles are saved on your own computer, so nothing is sent anywhere.

I made it for myself, in the evenings, to learn English. I tried many methods and only one worked for me — repeating after the speaker. Every other tool made that awkward, so I built one that does not.

04 About
15 years · since 2011

Me, briefly

I am a fullstack developer. I build the API, the database and the interface, and then I put the whole thing in production myself. That last part is why I care how a system behaves at three in the morning.

I wrote my first sites in 2006 — guestbooks, small pages for friends. I do not count those. My fifteen years start in 2011, when it was somebody’s business and not my hobby: my brother had a taxi company, and I wrote the whole system for it. No framework, just PHP and a database. Nobody taught me — I learned it by building that.

For most of the years after that it was PHP with Laravel. Today I work mostly in TypeScript: NestJS and GraphQL on the server, Next.js and React on the front, PostgreSQL and Redis behind them.

What I like most is starting from an empty repository — and still being there years later, when the thing needs me.

Day to day 13
TypeScriptNestJSNext.jsReactGraphQLPostgreSQLRedisTailwindPHPLaravelDockerAWSLinux
Also worked with 22

Node.js Fastify Hono Prisma Drizzle BullMQ Socket.IO Expo / React Native Cloudflare (Workers, Pages, D1, R2) Astro + Three.js Sentry Vitest / Playwright / Jest Python Django Vue.js Bootstrap MySQL MongoDB Kubernetes Terraform RabbitMQ GCP

05 Client work
8 rows · NDA

Client work

Most of my fifteen years went into projects I cannot name. I cannot give you names, and I cannot say how long each one took. In a year, you will want me to say the same about you.

01

A platform for tracking what you pay every month — internet, streaming, and other subscriptions

I designed and built both sides from scratch: the interface and the server. Payment schedules, a history of what each service was used for, and how often it charges you.

Laravel · Vue.js

02

A platform that connects investors with people who need money for property

I worked on the server side and kept the infrastructure stable.

Docker · Kubernetes · Jenkins

03

A system that writes investor letters, with objects, photos, documents and tables

I built part of the system and looked after it afterwards.

Laravel

04

An online shop for professional and home tools

Fullstack, on my own: the interface, the server side, and the whole way from picking a tool to paying for it.

Laravel · Vue.js

05

CRM systems for a visa office, a travel agency and a taxi company

Client lists, bookings, bonus points, and the daily work that should happen by itself.

Laravel · PHP

06

A platform for selling property, with a referral programme and bonuses

I designed and built it, including how the bonuses are calculated.

Laravel

07

An app for parents of children with cancer

Not my code. I was the person the developer came to — how to design the database, how to structure the code, and which tools to pick.

Laravel · AWS · Docker

08

A service for changing money into crypto, and crypto back into money

I led the development: accounts, virtual wallets, the conversion itself, and the payments behind it. Moving someone else’s money safely was the whole job, and that part carries into any product that takes payments.

Laravel · JavaScript

I build products from zero to production. And I stay with them after that.