Skip to content
Emre.dev — home
Emre.dev

Available for product, cloud and mobile work

Emre Doğan

Full-Stack & AI Developer

I build production systems where the language model is the least trustworthy component — and the architecture is what makes the result safe to ship.

  • TypeScript
  • Next.js
  • React
  • Flutter
  • Python
  • AWS
  • Postgres
commits
1,068commitsgit rev-list on the default branch of the six of these projects under version control. Five are public.
projects built
8projects builtThe eight presented on this site — web, mobile, game and research.
live or released
3live or releasedTwo reachable over the public internet and verified at HTTP 200; one approved production release.

Adana, Türkiye

Working in

TypeScript + Flutter

Technologies used across these projects

About

How I work

  • Full-Stack Developer
  • AI Developer
  • Indie Hacker

Nineteen. Self-taught, two years in, no computer science degree. The early work happened around 01:30 bakery shifts and high-school exams — that is part of the record, but it is not the interesting part.

The interesting part is what the code does. Eight projects, six of them under version control, a little over a thousand commits between April and August 2026. Two are live on the public internet, one is an approved production release, and one was deliberately never shipped.

The through-line is narrow and on purpose: probabilistic systems constrained by deterministic ones. A hardcoded emergency check that runs before the model. A scheduling engine the framework is not allowed to touch. A simulation core that knows nothing about its renderer.

  1. Production-first

    Every system is designed for real users from day one. No prototypes wearing the costume of products.

  2. Reproducible or it does not exist

    If it cannot be re-created from a repository, I do not consider it built. Infrastructure in code, decisions written down, gates that must be green before work continues.

  3. Cost-aware engineering

    Every architectural decision considers what it costs per request. At scale those choices compound faster than feature velocity does.

  4. AI as leverage, never as authority

    Augment with AI; never replace engineering rigour. Models hallucinate. Types and tests do not.

What I build

Four areas, each backed by something in the work below rather than by a self-assessed skill bar.

  • Product engineering

    End-to-end products rather than front ends: authentication, metered billing, scanning engines, observability, and authorization derived from the token rather than trusted from the client. Four of the eight projects here went from an empty repository to something a stranger could use.

    • Next.js
    • React
    • TypeScript
    • PostgreSQL
    • Supabase
  • AI systems

    Orchestration where the model is bounded by design: structured output validated against a schema, confidence floors that resolve to "not enough information", deterministic overrides that execute before inference, and remediation produced by playbooks rather than generation.

    • Claude
    • Gemini
    • ML Kit
    • Zod
  • Mobile engineering

    Flutter applications shipped to production release tracks: on-device machine vision, row-level-secured backends, subscription entitlement mirrored server-side, and paths that still work when the network does not.

    • Flutter
    • Dart
    • Riverpod
    • ML Kit
  • Cloud and delivery

    Production resources provisioned in Terraform, edge functions, object storage, and CI that gates on lint, types, tests, accessibility and performance budgets before anything reaches a branch.

    • Terraform
    • AWS
    • Cloudflare R2
    • Vercel
    • Playwright

Selected work

Things I have shipped

Production systems, not prototypes. Each one links to the live product or the public repository where one exists — and says plainly where one does not.

All 8 projects

4 more, including the two that were deliberately never shipped.

Proof

Don't take my word for it

No testimonials. There are no clients to quote yet, and inventing one would tell you more about my judgement than any quote could. Here is what can be checked instead — every number below links to the place you can verify it.

  • 40public repositories

    Original public repositories under one account — web, mobile, cloud tooling, games and research. Two further repositories are forks and are not counted.

    Method: GitHub REST API: 42 public repositories, minus the 2 marked as forks.

    Open the account (opens in a new tab)
  • 2live on the public internet

    A learning platform on its own domain and a product site, both answering 200 to an ordinary request. Not a staging link, not a screenshot.

    Method: HTTP GET against each origin, re-checked on the date shown below.

    Open the live platform (opens in a new tab)
  • 1.0.0+8approved production release

    PawDoc reached an approved production release build. The full source is public, including the hardcoded emergency path that runs before the model and the test that keeps it in parity across three languages.

    Method: Release build number from the repository, whose source is open for inspection.

    Read the source (opens in a new tab)
  • 1,068commits, default branches

    Across the six projects on this site that are under version control, between April and August 2026. Counted on the default branch, so the figure does not move when a feature branch does.

    Method: git rev-list --count on each default branch. Five of the six repositories are public.

    Count them yourself (opens in a new tab)
  • Openthis site, source and all

    Including the CI that gates every push on lint, types, unit and browser tests, axe with zero violations, and a bundle budget that fails the build when exceeded.

    Method: Public repository; the workflow file and its run history are both readable.

    Read this site’s source (opens in a new tab)
  • 28 daysfirst commit to live domain

    Ehliyet Akademi went from an empty repository to a live production domain in under a month, with architecture decision records kept in-repo the whole way.

    Method: git log --reverse for the first commit, against the domain’s launch.

    Check the history (opens in a new tab)

Links last checked by hand on . Published so you know how old the check is instead of having to guess.

Available for product, cloud and mobile work

Let’s build something that ships

Tell me what you are working on. If I am not the right person for it, I will say so — and usually say who is.

Contact

Let's build something

Freelance work, collaboration, or a full-time role — if you are building something where correctness matters, I would like to hear about it.

Based in

Adana, Türkiye

Working hours

GMT+3

Remote, and comfortable across European and Middle Eastern hours.

Send me a message

Three fields. It goes straight to my inbox — nothing else happens to it.

A sentence about the problem is more useful than a full brief.

No newsletter, no CRM. The message reaches one inbox.