Monaf Horany
Portrait of Monaf Horany

Full-stack engineer · Istanbul

I build the whole system, not one layer of it.

APIs, web apps, admin dashboards, mobile apps, background workers, media pipelines and the infrastructure they run on — designed and shipped as one system rather than assembled from parts.

Six years of it. Most has been commerce, because that is where the work was — but the stack does not care what you point it at. A storefront, an internal tool, a booking system, a video pipeline: same layers, same problems, same engineer.

Open to full-stack roles — remote or Istanbul

6years in production
9applications shipped
4surfaces covered
3languages, RTL-first

Working stack

  • TypeScript
  • NestJS
  • Flutter
  • PostgreSQL
  • Docker
  • Next.js
  • Prisma
  • Redis
  • FFmpeg
  • Kubernetes
  • React
  • BullMQ
  • Dart
  • Sharp
  • Traefik
  • Zod

Range

Whatever the stack can build.

The case studies below happen to be commerce, so here is the honest version of the range. Every line names something already shipped, not something I would be willing to try.

  • Web apps & products

    Storefronts, marketing sites, portals, multi-tenant apps. Server components, streaming, i18n with real RTL, and Core Web Vitals treated as a requirement rather than a report.

    Built

    • Megastore storefront
    • Golden Minds
    • imPhone
  • APIs & backends

    REST APIs with typed contracts, auth that separates identities cryptographically instead of by a role column, queues, schedulers, webhooks, and third-party integrations that fail loudly.

    Built

    • Megastore API
    • OUKITEL shared API
    • Orjeen
  • Mobile apps

    Flutter on iOS and Android, shipped to the Play Store — offline handling, push, deep links, payment SDKs, and the shared API behind them written by the same person.

    Built

    • 4 Flutter apps
    • Play Store
    • iOS + Android
  • Internal tools & dashboards

    Admin panels, warehouse and inventory systems, operations dashboards, role-scoped back offices. Unglamorous software that decides whether a business actually functions.

    Built

    • Admin dashboards
    • TeleTab
    • Warehouse system
  • Media & data pipelines

    Image and video processing, HLS transcoding, thumbnailing, background removal, object storage with presigned uploads, and search built on Postgres before reaching for a search cluster.

    Built

    • HLS pipeline
    • Sharp / FFmpeg
    • rembg
  • Infrastructure & delivery

    Containers, reverse proxies, TLS, CI, monorepos, secrets, backups, monitoring — self-hosted on a VPS or on a Kubernetes cluster I built and can explain line by line.

    Built

    • Docker / Traefik
    • Turborepo
    • Kubernetes (kubeadm)

Selected work

Four systems worth explaining.

Each of these I architected and wrote myself, end to end. Where a repository is private I have described the design instead of showing the source — the reasoning is the part that transfers anyway.

001 / Megastore

2026

Megastore

A trilingual, multi-currency commerce platform: five applications behind one set of shared contracts, plus a Flutter client.

apps in the monorepo
5apps in the monorepo
shared packages
6shared packages
locales, RTL-first
3locales, RTL-first
currencies
5currencies
Megastore platform architectureBrowsers and the Flutter app reach the Next.js storefront and admin dashboard, which call a single NestJS API. The API is the only service that touches PostgreSQL. It also reads and writes Redis for caching and rate limiting, enqueues jobs onto BullMQ for a separate worker process, stores processed media in MinIO, and calls an internal Python service for background removal. The worker handles image and video transcoding, scheduled statistics rollups and notifications.CLIENTSAPPSSERVICESDATAenqueueBrowserwebFlutter appiOS · AndroidStorefrontNext.js 16DashboardNext.js 16NestJS APIsole DB ownerWorkerBullMQPostgreSQLPrisma 7Rediscache · queue · ratesMinIOprocessed mediamedia-pyFastAPI · rembg
Browsers and the Flutter app reach the Next.js storefront and admin dashboard, which call a single NestJS API. The API is the only service that touches PostgreSQL. It also reads and writes Redis for caching and rate limiting, enqueues jobs onto BullMQ for a separate worker process, stores processed media in MinIO, and calls an internal Python service for background removal. The worker handles image and video transcoding, scheduled statistics rollups and notifications.
  • Client
  • Service
  • Data store
  • External

002 / OUKITEL B2B Suite

2025 — 2026

OUKITEL B2B Suite

Four Flutter applications and a web client sharing one NestJS backend, covering business sales, repair intake and returns.

Flutter apps
4Flutter apps
shared API
1shared API
published
Play Storepublished

Mobile

FlutterDartFirebase

Backend

NestJSPrismaPostgreSQLRedisBullMQSwagger

Storage

AWS S3Presigned URLsMinIO

Frontend

Next.jsTypeScript

003 / Netlastik

2024 — 2025

Netlastik

A B2B tyre commerce app for dealers, shipped to both the App Store and Google Play.

shipped on
iOS + Androidshipped on
app stores, both live
2app stores, both live
feature modules
17feature modules

Mobile

FlutterDartBloc / Cubitgo_routerget_itdio

Data

dartzequatableshared_preferences

Frontend

flutter_screenutilflutter_svgcached_network_imageinfinite_scroll_paginationpinputwebview_flutter

004 / Orjeen

2021 — 2024

Orjeen

A cross-platform commerce app for a Saudi online store, with instalment and card payment gateways integrated end to end.

payment gateways
2payment gateways
shipped on
iOS + Androidshipped on
market
KSAmarket

Mobile

FlutterMVVMCubitFCMFirebase Analytics

Payments

TabbyUrway

Location

GeolocationGeocoding

Backend

NestJSNode.jsWooCommerce REST

Also built

Smaller, still real. Listed rather than case-studied so the four above keep their weight.

  • Kartçek

    2025

    A debt-collection app for field agents — the same Flutter architecture as Netlastik at a quarter the size, which is what made it quick to build. Live on Google Play.

    FlutterBloc / Cubitgo_routerget_itdioGoogle Play
  • TeleTab

    2025 — 2026

    Full-stack Next.js product for the TELETAB brand — Prisma over PostgreSQL, better-auth, MinIO object storage, transactional email with React Email, and server-driven tables.

    Next.jsPrismabetter-authMinIOReact Email
  • Golden Minds

    2025 — 2026

    Trilingual marketing site with a considered motion layer. Built to load fast on mobile connections and read correctly in Arabic.

    Next.jsnext-intlMotion
  • Turkish Recycle

    2026

    Turborepo monorepo pairing a public site with an operations dashboard over a shared component library and database package, containerised for staging.

    TurborepoNext.jsPrismaDocker
  • IM Phone

    2025

    Marketing site with GSAP-driven sequences and a technical SEO baseline — generated sitemap, structured metadata, mobile-first performance budget.

    Next.jsGSAPnext-sitemap

How I work

The parts that are hard to see from a screenshot.

Anyone can list technologies. These are the habits that actually show up in the systems above.

  1. 01

    Decide in writing, then build

    Megastore's architecture exists as a specification with numbered decisions — each one carrying its rationale and the alternatives I rejected and why. Writing it down first is what makes a decision reviewable later, and it is why the implementation still matches the design months in.

  2. 02

    Put boundaries where they cost something to cross

    Only the API touches the database. Customers and admins get separate cryptographic identities rather than a role column. Boundaries that are merely conventions get crossed the first time someone is in a hurry.

  3. 03

    Design the invariant, not the cleanup

    Media is processed before it is stored, so orphaned files cannot exist. Bearer tokens instead of cookies, so CSRF is not something to defend against. The best handling for a class of bug is a design where it cannot occur.

  4. 04

    Add infrastructure when it earns its place

    Postgres full-text search before Meilisearch. Docker Compose before an orchestrator. Every container is something to operate, back up and secure — so it has to pay for itself first.

Experience

Six years, across the whole stack.

  1. 2024Present

    Istanbul, Türkiye

    Full-Stack Engineer

    Independent / contract

    Designing and building the Megastore commerce platform, the OUKITEL B2B application suite and the TeleTab product — architecture, APIs, web front ends, Flutter clients and the container infrastructure underneath.

    NestJSNext.jsFlutterPostgreSQLRedisDocker
  2. 02/202406/2024

    Istanbul, Türkiye

    Full-Stack Developer

    OXO Teknoloji

    Built social-media tooling: automated interaction services running against platform APIs, on a Node.js backend with a React front end.

    Node.jsNestJSReactPuppeteer
  3. 03/202102/2024

    Istanbul, Türkiye

    Full-Stack Developer

    Orjeen / Perllamoda

    Built and maintained an online store serving the Saudi market. Delivered the Orjeen cross-platform app with Tabby and Urway payment gateways, and built a warehouse management system integrated with the WooCommerce REST API.

    FlutterIonicNestJSNode.jsWooCommerceMongoDB
  4. 07/202003/2021

    Istanbul, Türkiye

    Front-End Developer

    Midad Tek

    Front-end development on the team that shipped the Zakati mobile app for Android and iOS, plus web work for a charity client.

    ReactWordPressMobile
  5. 20172021

    Education

    BSc Computer Engineering

    Istanbul Aydın University

Capabilities

What I reach for, and why.

Ordered by how much of it I have actually shipped, not by how many tutorials I have seen.

Languages
4
  • TypeScript
  • JavaScript
  • Dart
  • SQL
Backend & APIs
9
  • NestJS
  • Node.js
  • Express
  • Prisma
  • Zod
  • BullMQ
  • REST
  • JWT / JWKS
  • OAuth 2.0
Frontend
8
  • Next.js
  • React
  • Server Components
  • Tailwind CSS
  • shadcn/ui
  • Base UI
  • next-intl
  • Motion
Mobile
6
  • Flutter
  • Bloc / Cubit
  • go_router
  • get_it
  • Firebase
  • Ionic
Data
4
  • PostgreSQL
  • Redis
  • MongoDB
  • Prisma migrations
Infrastructure
9
  • Docker
  • Docker Compose
  • Turborepo
  • pnpm
  • MinIO / S3
  • Traefik
  • Cloudflare
  • Infisical
  • VPS (Ubuntu)
Orchestration
7
  • Kubernetes (kubeadm)
  • HA control plane / HAProxy
  • Flannel CNI
  • MetalLB
  • NGINX Ingress
  • cert-manager
  • Helm
Media processing
5
  • Sharp
  • FFmpeg
  • HLS
  • WebP pipelines
  • SVG sanitisation

About

How I got here.

I studied computer engineering at Istanbul Aydın University and started working before I finished — front-end first, in 2020, on a small team in Istanbul shipping a mobile app and web work for clients.

The front end stopped being enough fairly quickly. I moved backwards through the stack because the interesting problems kept turning out to be on the other side of the API: how a payment reconciles when a customer closes the app mid-redirect, why a price filter falls apart the moment products are priced in different currencies, what happens to an upload that claims to be a JPEG and is not. By 2021 I was building whole products — a warehouse system, a cross-platform store app with two payment gateways, the backend serving both.

What I actually do now is take a business that needs a real system and build all of it: the data model, the API, the storefront, the admin tooling that the staff use every day, the mobile client, and the infrastructure it runs on. Working solo across that whole surface has made me careful in a specific way — I design so that mistakes are structurally impossible rather than caught later, because there is no second engineer to catch them.

I work in English, Arabic and Turkish, and I build software the same way. Arabic being right-to-left is an architectural constraint that reaches into routing, layout and the database schema, not a translation task at the end. Having shipped that several times over is the part of my experience that is hardest to pick up quickly.

Contact

Let's talk.

I'm open to full-stack roles, remote or in Istanbul, and to selective contract work. The fastest way to reach me is email.