DMK
Status: online [v3.1.0]

DurduMehmetKeskin

>FULL-STACK DEVELOPER

I design scalable microservices, build the CI/CD that ships them, and wire AI into products that have to stay up. Based in Istanbul, working anywhere.

Resume
Scroll
Traffic×13/3 · 42ms
C#//.NET Core//React//Next.js//TypeScript//Python//FastAPI//Docker//Kubernetes//PostgreSQL//Elasticsearch//Redis//Azure//GitHub Actions//RabbitMQ//LangGraph//
C#//.NET Core//React//Next.js//TypeScript//Python//FastAPI//Docker//Kubernetes//PostgreSQL//Elasticsearch//Redis//Azure//GitHub Actions//RabbitMQ//LangGraph//
00+
Years shipping to production
00%
Uptime across managed infra
00
Public repositories
00
Contributions · last 365d
01 //

One request, end to end

A distributed trace of a single GET, span by span. Scroll to scrub it, replay it in real time, then break the database and watch the retry path keep the user at 200 OK.

trace_id 4f2a9c1eGET /api/orders/1289
00.0
MS
in flight

Scroll to scrub the trace

Each bar is a span from a real request shape: client, edge, gateway, service, cache, database, queue. Scroll, or press replay.

span · ms
010203040
browser
42ms
├edge
3ms
├api-gateway
4ms
├orders-api
29ms
└redis
2ms
└postgres
10ms
└rabbitmq
2ms
└worker
10ms
├response
6ms
structured logs · nominal9 spans · 0 lines
awaiting request…
02 //

Deployments

Three production systems, their architecture and the decisions behind them. Scroll to draw each one.

012024 — present● live

Hukukarama.com

AI-powered semantic search across Turkish legal documents.

Role · Founder · full-stack · infra
FastAPIReactInstantSearch.jsTypesenseLangGraphGroqDocker Compose
Decisions
  • Typesense over Elasticsearch
    One binary, typo tolerance and vectors built in. The whole stack fits on one small VM with room to spare.
  • LangGraph routes, the LLM only answers
    A small graph classifies the query (statute, case law, plain question) before anything expensive runs. Most searches never hit the model.
  • Compose with health checks
    Every service has a health endpoint and a restart policy; the deploy is a single `docker compose up`.
0ms
p95 search latency
keyword + vector
0k+
documents indexed
0%
LLM calls avoided
routed to plain search
What I would changeI would replace the LangGraph router with a tiny fine-tuned classifier and add a Typesense replica so reindexing never blocks search.
architecture · 6 serviceshukukarama.svg
SEARCHCLASSIFYRETRIEVESYNTHESIZEFACETSUPSERTReactINSTANTSEARCH.JSFastAPIQUERY SERVICELangGraphQUERY ROUTERTypesenseKEYWORD · VECTORGroq LLMANSWER SYNTHESISIngest workerDOCS → INDEX
022023 — 2024 · InData● deployed

Learning Management Platform

End-to-end LMS with interactive H5P content for an enterprise client.

Role · Full-stack lead · DevOps
.NET CoreReactPostgreSQLH5PWordPress SSODockerESXi
Decisions
  • H5P as a service, not a plugin
    The runtime lives behind the API so content works in the React dashboard and inside WordPress without two integrations.
  • Docker on ESXi, not a cloud bill
    The client already owned the hardware. A reproducible Compose stack on VMs met the SLA at a fraction of the cost.
  • Interns on real tickets
    Four interns shipped production code behind reviews and pair sessions; the practices outlived the project.
0%+
uptime maintained
0%
faster delivery cycle
estimated
0
interns mentored
What I would changeI would introduce a queue for grading and report jobs earlier; they ran in request scope for too long before being moved to Hangfire.
architecture · 6 serviceslms.svg
SSORENDERASSETSReactDASHBOARDWordPressSSO · CONTENT.NET Core APICOURSES · PROGRESSH5P runtimeINTERACTIVE CONTENTPostgreSQLPRIMARYObject storageMEDIA
032023 · DarkSN (remote)● scaling

Multi-tenant ERP SaaS

One platform, isolated data for 10+ client organisations.

Role · Full-stack developer
.NET CoreAngularOcelotFinbucklePostgreSQLRabbitMQDocker
Decisions
  • Schema-per-tenant with Finbuckle
    Isolation strong enough for enterprise clients, operations simple enough for a small team. One migration run, N schemas.
  • Ocelot in front of everything
    Routing, load balancing and auth in one place so services stayed small and stayed honest about their contracts.
  • Events for reporting
    Reporting consumed domain events instead of querying the write models, which kept dashboards off the hot path.
0+
organisations on one stack
0
microservices behind the gateway
0
environments with parity
dev · staging · prod
What I would changeI would add an outbox table from day one; a few events were lost during deploys before we had it.
architecture · 7 serviceserp.svg
RESOLVEPUBLISHCONSUMEAngularTENANT APPSOcelotAPI GATEWAYTenancyFINBUCKLE RESOLVERRequirementsSERVICEReportingSERVICERabbitMQEVENTSPostgreSQLPER-TENANT SCHEMA
03 //

Career Audit Logs

Every entry shipped. Scroll the log; the active commit opens on the left.

$git log --graph --oneline --decorate
4f2485cHEAD → mainportfolio v3.1.0 · now
44428bctag: v3.0merge feat/indata → main
bdc9299ship: full-stack dev & devops @ InData
b284d82init: indata onboarding
a9b1e6fcheckout -b feat/indata
7c87cbetag: v2.0merge feat/darksn → main
1cff884ship: full-stack developer @ DarkSN
b1acd9ainit: darksn onboarding
9799fbbcheckout -b feat/darksn
ecbd951tag: v1.0merge ops/omu → main
8845c05ship: tech support specialist @ Ondokuz Mayıs University
7b89ec0init: ondokuz mayıs university onboarding
c5f321fcheckout -b ops/omu
[ 2023.08 — 2024.12 ] · v3.0

Full-Stack Dev & DevOps

InData

Designed and implemented full-stack B2B architectures with .NET Core and React. Maintained Docker deployment pipelines and resilient ESXi virtualized infrastructure, achieving 99%+ uptime. Led a team of four interns.

.NET CoreReactDockerESXi
[ 2023.01 — 2023.08 ] · v2.0

Full-Stack Developer

DarkSN

Developed a multi-tenant ERP SaaS platform using .NET Core, Angular, and microservices behind an Ocelot API Gateway. Implemented Finbuckle for isolated per-organisation data management across 10+ clients.

.NET CoreAngularOcelotMulti-tenant
[ 2021.01 — 2023.01 ] · v1.0

Tech Support Specialist

Ondokuz Mayıs University

Maintained university IT networking infrastructure and OS deployments, and provided hardware diagnostics for 50+ systems monthly. Where the uptime obsession started.

NetworkingLinuxHardware
Full résumé
04 //

Live Activity

Pulled from GitHub at build time (@durdumehmetkeskin). Not a mock, not a widget.

33
Contributions · 365d
2
Public repositories
8
Active days
8
Peak day
OCTFEBMARMONWEDFRI
05 //

Where it runs

Istanbul to the edge: the regions a request from this site touches, with measured latency.

OriginIST · Istanbul
Edge regions · latency
  • FRAFrankfurt38 ms
  • AMSAmsterdam46 ms
  • LHRLondon58 ms
  • IADAshburn132 ms
  • SINSingapore171 ms
  • BOMMumbai118 ms
  • GRUSão Paulo214 ms
  • SYDSydney268 ms
dots = land · arcs = requests from this page
06 //

Data Archives

Technical write-ups, architecture decisions, and deployment logs.

LOG_01

What's New in .NET 10 / .NET 10'daki Yenilikler

3 min