Skip to content
View nahkar's full-sized avatar
:octocat:
Working from home
:octocat:
Working from home
  • Ukraine

Block or report nahkar

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
nahkar/README.md
A message from Earth — hello fellow galaxy member. I build software. Dmytro Bielienov, Senior Full-Stack Engineer, Ukraine.

Senior Full-Stack Engineer · React and Next.js on the front · Node.js and NestJS behind it

Website LinkedIn Medium npm YouTube Résumé

Dmytro Bielienov
Profile views

Senior Full-Stack Engineer in Ukraine, building web products since 2013. Frontend first — React and Next.js — and at home across the stack with Node.js, NestJS and PostgreSQL when the product needs it.

Complex systems from architecture to production support, with a strong focus on testing (Cypress, Playwright, Storybook), code review and mentoring — and Claude Code and Codex every day to ship faster without lowering the bar. In my spare time I write on Medium and take courses.

🛰️  Full-Stack Developer at ITRDev since March 2023
🧭  Making FSD Guard — the architecture linter that lives in your Pull Request
📱  Two Android apps on Google Play and four open-source UI packages on npm
✍️  Latest post: FSD is easy to start and hard to keep


My projects

🧭 FSD Guard  Chrome & VS Code extension

FSD Guard — Feature-Sliced Design linter for GitHub & GitLab

The architecture linter that lives in your Pull Request. Feature-Sliced Design rules live in people's heads, and a reviewer skimming a 300-line diff misses the import that reaches into another slice. FSD Guard checks them where the code is read: inside the Pull or Merge Request on GitHub and GitLab, across the whole repository in one click, and in VS Code as you type. No CI, no ESLint plugin, no setup in the project — nothing leaves the browser.

Chrome Web Store VS Code Marketplace Open VSX Website

FSD Guard in 35 seconds: a Pull Request check, the dependency graph, tracing a module, the Layers and Matrix views and the health score
FSD Guard in 35 seconds — a PR check, the dependency graph, tracing a module, Layers & Matrix, the health score

🔍 Pull Request check 🗺️ Architecture graph 🩺 Cycles & health score
Violations in the added lines, highlighted inline in the diff with why it's wrong and how to fix it. Every slice laid out by layer; upward and cross-slice imports light up, edge thickness is the import count. Circular dependencies, the share of clean edges, violations by type and layer, hubs and orphans.
📦 Full-repository audit ✍️ In your editor too 🤖 Copy for AI
One click scans every source file in the browser and groups the report by file. Squiggles as you type, hovers that explain, quick fixes and a whole-workspace scan. Findings exported as a prompt for ChatGPT, Claude or Copilot, with an architecture overview.
📸 Screenshots
A public-API bypass flagged in a GitHub diff, with the details panel
Review inside the PR — the details panel explains why and how to fix it
Slices laid out by layer, violating imports highlighted
Dependency graph — violating imports solid and colour-coded
Layers graph next to a layer-to-layer dependency matrix
Layers & Matrix — red cells hold violations
Full repository audit listing layer violations
Repository audit — every violation, listed by file
Health popover with violations, cycles, orphans and hotspots
Health, cycles & hotspots
Hovering a slice highlights its imports and importers
Trace any module — what it imports, who imports it

Stack: TypeScript · Manifest V3 · 6 languages  ·  Runs on: Chrome · VS Code · GitHub · GitLab


💳 Cardfold  Android app

Cardfold — loyalty cards live on your phone, nowhere else

Your loyalty cards live on your phone. Nowhere else. An offline wallet for loyalty cards: scan the barcode once, show it at the till — the screen turns itself up so the scanner reads it first time. No account, no cloud, no analytics.

Google Play Website

Cardfold in 38 seconds: all cards and search, a card at the till, the card editor, themes and the offline backup
10 barcode formats · reminders before a card expires · pin a card to a shop on the map · five themes, light and dark · fingerprint lock · widget · EN / UK / RU
Stack: React Native · Expo · TypeScript · MMKV

💧 DrinkUp  Android app

DrinkUp — a water tracker that fits your day

A water tracker that fits your day. Works out your daily goal from your weight, activity, waking hours and meals, reminds you only while you are up, and logs a glass in one tap. No account, no ads, everything on the phone.

Google Play Website

DrinkUp in 40 seconds: one tap logs a glass, twelve drinks counted honestly, stats and streaks, light and dark themes
A goal with the arithmetic shown · twelve drinks counted honestly · stats & streaks · widgets · Health Connect · EN / UK / RU
Stack: React Native · Expo · TypeScript · Health Connect
📱 App screenshots

Cardfold: every card in one place Cardfold: show it at the till Cardfold: the shop you're in Cardfold: colour, cover, number Cardfold: dates that remind you Cardfold: five themes

DrinkUp: today at a glance DrinkUp: your daily goal DrinkUp: log it in one tap DrinkUp: stats and streaks DrinkUp: reminders inside your day DrinkUp: dark theme


Open source

Three were pulled out of DrinkUp, the fourth brings the swipe to the web — all typed, accessible and on npm.

Full Swipe: delete + undo

One swipe. Any action, on either side.
Full-swipe rows for React Native: delete, archive or mark as read past a threshold you can feel, with an undo bar for the swipe you didn't mean.

npm iOS and Android
Reanimated · Gesture Handler · Expo
Wheel Kit: WheelPicker

Wheel pickers that feel the same on iOS and Android.
A snapping WheelPicker plus TimePicker and DatePicker: a haptic tick per row, virtualised for long lists, any locale.

npm iOS and Android
Reanimated · Expo
Liquid Fill: water in a ring, tilting with the phone

Progress that sloshes when you tilt the phone.
Water that fills any shape — circle, card, bottle, any SVG path — with travelling waves, rising bubbles and a surface that stays level.

npm iOS and Android
Reanimated worklets · react-native-svg · Expo
Swipe Row: a short swipe opens buttons, a long one deletes

Swipeable rows for React on the web.
Reveal buttons like iOS Mail or full-swipe like Telegram and Gmail — or both in one row. Keyboard and screen-reader friendly, ~5 kB.

npm Live demo
React · Pointer Events · zero dependencies

My skills

React, Next.js, TypeScript, JavaScript, Tailwind, Node.js, NestJS, GraphQL, PostgreSQL, Prisma, MongoDB, Docker, Flutter, Python, Cypress, Figma

🎨 Frontend React Next.js TypeScript JavaScript Tailwind CSS shadcn/ui Styled-Components Zustand Zod Apollo / GraphQL Feature-Sliced Design
🛠️ Backend Node.js NestJS Express GraphQL PostgreSQL Prisma Drizzle ORM MongoDB Docker
📱 Mobile React Native Flutter Capacitor
📊 Data & ML Python Django pandas NumPy scikit-learn matplotlib
🧪 Testing Cypress Playwright Unit & integration testing Storybook
🤖 AI tools Claude Code Codex LLMs Generative AI
🗂️ Process & tools Scrum Kanban Jira Linear Confluence Notion Slack GitHub / GitLab Figma
🧠 Practices Code review Clean architecture Performance optimization Testing Mentoring

My work experience

Mar 2023 — now
Ukraine · Remote
Full-Stack Developer · ITRDev
Features end to end — from requirements and technical design to release and production support — across a Next.js front end and a NestJS back end. The place FSD Guard grew out of.
  • Next.js and TypeScript front ends: SSR/SSG, Zustand, Apollo / GraphQL, Zod and a shared component library.
  • NestJS services and APIs with DTO validation, auth and role-based access; PostgreSQL through Prisma and Drizzle.
  • Cypress and Playwright end-to-end tests on every pull request, unit and integration tests, Storybook for the UI library.
  • Code reviews, onboarding, architecture decisions; performance work on bundle size, Core Web Vitals and API response times.
React Next.js TypeScript NestJS PostgreSQL Prisma Drizzle GraphQL Playwright Cypress Storybook
Jul 2022 — Mar 2023
Ukraine · Remote
Software Engineer · Seeking Alpha
Frontend features end to end — website features, mobile web screens and landing pages in React and TypeScript. Interactive charts, tables and ad hoc reports for financial data; reusable typed components; code splitting, lazy loading and fewer re-renders with an eye on Core Web Vitals.
React TypeScript JavaScript SCSS Figma
Jul 2015 — May 2022
Ukraine · On-site
Full-Stack Developer · CHI Software
Nearly seven years on full-stack web applications that processed, analysed and visualised data — from the database schema and API to the UI. GraphQL APIs in Node.js, Express and NestJS; React dashboards with Apollo Client; cross-platform apps with Capacitor.
Node.js NestJS Express React GraphQL PostgreSQL MongoDB Capacitor Cypress Storybook
Sep 2013 — Jul 2015
Ukraine · On-site
Frontend Developer · W3
Websites, hybrid mobile apps and landing pages from concept through deployment: pixel-perfect, cross-browser, mobile-first markup and Apache Cordova apps wired into native device features.
JavaScript jQuery HTML/CSS Apache Cordova

Self taught

Certificate Issuer Issued
🎓 Claude Academy: AI Fluency for Builders Anthropic Sep 2026
🎓 Python, Django, Data Science, ML Udemy Mar 2026
🎓 Generative AI Udemy Feb 2026
🎓 GraphQL with React: The Complete Developers Guide Udemy Jul 2025
🎓 Go — The Complete Guide Udemy Dec 2024
🎓 SQL and PostgreSQL: The Complete Developer's Guide Udemy Oct 2024
🎓 Node JS: Advanced Concepts Udemy Sep 2024
…and four more
Certificate Issuer Issued
🎓 NestJS: The Complete Developer's Guide Udemy May 2022
🎓 MongoDB — M001: MongoDB Basics MongoDB University Feb 2022
🎓 Python — The Practical Guide Udemy Feb 2022
🎓 Microservices with Node JS and React Udemy Feb 2022

My writing — notes on building software

All posts on Medium


Flight log — GitHub activity, updated daily

GitHub stats

Contributions per week over the last year

Contribution streak

The contribution grid, eaten by a snake


Contact me — developer.living

Write to me on developer.living LinkedIn Résumé

Banners are drawn from the developer.living scenes by banners/render.mjs; the stats cards are redrawn every day by scripts/stats.mjs.

Pinned Loading

  1. swipe-row swipe-row Public

    Swipeable rows for React on the web: reveal buttons like iOS Mail, full-swipe to delete, archive or mark as read like Telegram and Gmail, or both in one row. Threshold you can feel, undo bar, keybo…

    TypeScript 5 1

  2. react-native-full-swipe react-native-full-swipe Public

    Full-swipe actions for React Native lists: delete, archive, mark as read, with a different action on each side. No half-open buttons: swipe past a threshold you can feel and the action happens, or …

    TypeScript 1

  3. react-native-liquid-fill react-native-liquid-fill Public

    Liquid progress for React Native: water that fills any shape (circle, rounded, or any SVG path) with travelling waves and rising bubbles, and a surface that sloshes when the phone tilts. Plus a Pro…

    TypeScript 1

  4. react-native-wheel-kit react-native-wheel-kit Public

    Wheel pickers for React Native that look and feel the same on iOS and Android: a snapping WheelPicker, plus ready-made TimePicker and DatePicker. A haptic tick per row, virtualised for long lists, …

    TypeScript 1