readme.txt

Full-stack engineer · open to relocation

I built a marketplace on my own. It has been in production ever since.

Schema, API, storefront, deploy pipeline — one engineer, end to end. Bronyka Shop runs on NestJS, PostgreSQL and Docker, and I am the one who ships it and keeps it up.

Five more products beyond it, ~75,000 lines of TypeScript, and a habit of testing anything that touches someone's money.

Download CV (PDF) See the work Email me

whoami.nfo
Maksim Miliutin
Name
Maksim Miliutin
Role
Full-stack engineer
Based in
Russia · open to relocation & visa sponsorship
Education
Computer Science, RTU MIREA — two years completed
Languages
Russian, Ukrainian — native · English — improving toward B2
trellis\

Currently building

Trellis

Grammar is a dependency graph, not a list of topics

Currently building

A language app from A0 to C2 where topics unlock when their prerequisites are consolidated, explanations are written for the learner's native language, and essays feed back into the same graph: a mistake in your text drops the topic and schedules it for review.

97,494 lines · 358 files · 598 tests · six languages

Not shipped yet. The learning logic, the schema contracts and the seams between layers are covered by tests; the app has not been run end to end. The first real launch will find things, and that is worth budgeting for rather than hiding.

Design decisions

Questions are not generated at runtime
Templates are expanded ahead of time and slots are filled only with words the learner already knows.

Slots are not independent
Hence compatibility tags and links between slots, rather than filling each one at random.

Mistakes are seeded from the native language
The error-hunt exercise corrupts sentences along interference patterns.

Pseudo-words in the placement test
If a false positive costs nothing, the measurement does not work.

Learning logic knows no framework
Server, app and tests run the same code.

The seams are tested on purpose
Almost every bug found so far lived between modules, not inside them.

Stack
TypeScript · gRPC · Prisma · Expo · React Native · monorepo
bronykashop.com — Properties

Projects

Bronyka Shop

A collectibles marketplace with real-time buyer–seller chat, order management and a mobile-first PWA storefront. Built solo, running in production.

operational

Users
250+
Products
252
Orders
70+
Owner
1 engineer — architecture to deploy
Runtime
NestJS · Prisma · PostgreSQL · Redis
Client
React · Vite · PWA · i18next
Edge
Docker · nginx · Cloudflare R2
Realtime
Socket.IO buyer–seller chat

Visit the site

More on GitHub

  • C++ desktop library

    A C++ library with a Qt GUI, talking to PostgreSQL through libpqxx.

  • C# / .NET APIs

    REST services in C# with data access through Entity Framework Core.

  • Academic web projects

    Full-stack coursework projects, built and hosted end to end.

  • This site

    Hand-written HTML, CSS and JavaScript. Three languages, two themes, no framework and no build step.

products\

Beyond the marketplace

Bronyka Shop pays the bills. These are the products I build when I get to choose the problem — mostly things I needed myself and could not find.

  • Reste

    French medical quotes advertise "70% reimbursed" and mean 70% of a reimbursement base that can be a fifth of the price. An €800 crown returns €84, not €560. Reste reads the quote and shows what you will actually pay, with every number traced to its official source.

    React Native · TypeScript · 67 tests
  • Veilla

    A daily check-in call for an elderly parent living alone, scheduled in the parent's timezone. Transcript and audio are never stored — only structure leaves the call. The product is not the call: it is the decision about when to wake the daughter at two in the morning, and, more importantly, when not to. Suppressed alarms are a measured number.

    Monorepo · 7 packages · 54 + 103 checks
  • Pasmurno

    A mood journal for a circle of five people rather than a feed — no likes, no algorithm. The AI companion answers at four in the morning and says plainly that it is not a therapist. Chat never reaches the server and sits encrypted on the device. When the words sound like a real crisis, it surfaces the helplines for the user's country.

    NestJS · Prisma · PostgreSQL · Expo · 8 languages
  • Vydokh

    Quitting vape without shame. A slip resets the streak and nothing else: current streak, best streak and total clean days are three separate numbers, and the last two never burn. Money saved counts every clean day, because it really was not spent. There is no red anywhere in the palette — a slip is data, not a failure.

    Expo · Supabase · 7 languages · 262 core tests
  • Mira

    Point the camera at a plate for calories and macros, or at yourself for a face and skin read. It keeps both histories and correlates habits against the face score with a lag of nought to two days, entirely on device — always with the sample size, never claiming a cause. Barcodes are scored from Open Food Facts with a source link on every finding.

    Expo SDK 57 · React 19 · 8 languages

Full source and READMEs on GitHub.

how-i-work.txt

How I work

Money code gets tests
Reste has 67 tests and Veilla 103. Not because tests are a ritual, but because a wrong number about someone's money is worse than no number: the user has no way to tell it is wrong.

Rates are data, not constants
The French GP consultation went from €26.50 to €30 in December 2024. Hardcoded figures go stale silently and keep returning answers. Every rate in Reste carries a validity period and a source, and every calculation is made as of a date.

"Cannot compute" is a valid answer
When a line has no known reimbursement base, Reste says so instead of treating it as zero. A line without a base looks exactly like an honest full-cost line, so a silent zero would put a wrong total next to four right ones.

Bugs live between modules
Almost every defect I have found sat in the seam, not inside a unit: a column renamed on one side only, a rule declared in two places, a contract field written but never read. So the seams get their own tests: schema against queries, contract against both ends.

What I leave out
No invented regional averages, no annual cap I cannot verify. If the data to do it honestly does not exist, the feature does not ship.

about.txt

About

I am a full-stack engineer with production experience rather than a folder of tutorials. I designed and built an online marketplace from an empty repository: database schema, backend, frontend, infrastructure. It now serves real customers and processes real orders, and every incident on it is mine to fix.

Two years of Computer Science at RTU MIREA gave me the fundamentals; everything past that I learned by shipping. I am looking for a team where I can bring the same ownership — and learn from engineers who have run systems larger than mine.

Shipped solo
One marketplace in production, five more products beside it
Comfortable with
Owning a feature from schema to production
Looking for
Full-stack or backend role, relocation welcome
resume.doc

Resume

Experience

Founder & lead full-stack developer 2026 — present

Bronyka Shop — bronykashop.com

  • Owned the whole stack: architecture, development, deployment and production upkeep across backend, frontend and infrastructure.
  • Backend on NestJS, Prisma and PostgreSQL — REST API, JWT auth with access/refresh rotation, role-based access control, rate limiting.
  • Buyer–seller messaging over WebSockets (Socket.IO), with an admin panel that watches live message flow.
  • Storefront on React and Vite: catalog, cart, checkout, order tracking, RU/EN localisation, mobile-first PWA with offline support.
  • Ran it as a business: checkout funnel, SEO (sitemap, Open Graph), and customer orders handled through the built-in chat.
  • Deployed with Docker Compose behind nginx and Cloudflare, assets on R2, CI through GitHub Actions.

Technical skills

Languages
  • TypeScript
  • JavaScript
  • Python
  • SQL
  • C#
  • C++
Backend
  • NestJS
  • Node.js
  • Prisma
  • PostgreSQL
  • Redis
  • Socket.IO
  • gRPC
  • Supabase
  • REST
  • JWT
Frontend
  • React
  • React Native
  • Expo
  • Vite
  • TanStack Query
  • Zustand
  • i18next
  • PWA
Infrastructure
  • Docker
  • nginx
  • Cloudflare
  • GitHub Actions
  • Sentry
  • Ubuntu
Also worked with
  • .NET (EF Core)
  • Qt
  • libpqxx

Education

RTU MIREA
Computer Science — two years completed
notes\

Technical notes

Decisions I made while building Bronyka Shop, written up short.

    atlas.exe

    Where I am

    Moscow now. Both targets are cities I can work from on site, and the paperwork is mine to start.

    Map of Europe with Moscow, Paris and Dublin marked Moscow Paris Dublin

    From
    Moscow, Russia
    To
    Pick a destination
    Status
    Available for remote work now; on site from 2027.
    1995.nfo

    Dressed as 1995

    The chrome is a costume; the year is not.

    Two of them are still in my stack.

    contact.dlg

    Get in touch

    Open to full-stack and backend roles. Relocation welcome — I am actively planning a move to the EU and can start the paperwork on my side.

    Email
    maksim.milutin06@gmail.com
    Telegram
    @QQWaffles
    GitHub
    github.com/maksim-miliutin
    LinkedIn
    in/maksim-milyutin
    Website
    bronykashop.com

    Available for remote work now; on site from 2027.

    Email me Download CV (PDF)

    © 2026 Maksim Miliutin Hand-written HTML, CSS and JavaScript. No framework, no build step.