const utku = {
role: "Fullstack Developer · Backend & DevOps",
location: "Konya, Türkiye",
currently: ["okutgitsin.com, a live-streamed vehicle-auction platform (launching soon)", "penpick.com.tr, a marketplace for pen collectors (launching soon)", "Reveil, an AI habit-tracking app"],
shipped: ["A distributed-systems series: CRDT sync, rate limiting, sagas, RAG, job queues"],
learning: ["Distributed systems", "AI · Data Science"],
collab: ["Interactive web experiences", "Anything that ships ✨"],
reach: "utkudemirtas0@gmail.com",
};🏆 Flagship: okutgitsin.com
🔨 okut: a live-streamed group vehicle-auction platform. An admin opens a live broadcast, puts N cars up for auction, and users join with tokens and bid in real time. A Redis + Lua atomic bid engine handles millisecond-level bidding, Socket.IO broadcasts every offer, and LiveKit powers the camera/mic streams. Escrow deposit flow (HELD → REFUNDED/FORFEITED), IBAN verification, expert reports, a dealer dashboard, admin analytics, and Resend-powered transactional email.
NestJS 11 · Next.js 16 · React 19 · PostgreSQL + Prisma · Redis + Lua · Socket.IO · LiveKit · Turborepo · Deployed on Vercel
Source is private; launching soon, the waitlist is open at okutgitsin.com.
🖋️ Flagship: penpick.com.tr
🖋️ Penpick: a marketplace for pen collectors. Buy and sell pens safely: the buyer's payment is held by Penpick until the pen is delivered. Fixed-price listings and timed auctions with scheduled endings, a launch perk that waives the first sale's commission for the first 100 members (granted under Postgres advisory locks so exactly 100 get it), username + password auth with e-mail/SMS verification, an admin panel, and a React Native (Expo) mobile app on the same API.
Next.js 16 · React 19 · TypeScript · Prisma 7 · Neon Postgres · Tailwind v4 · Expo · Resend · Deployed on Vercel
Source is private; launching soon, the waitlist is open at penpick.com.tr.
Five from-scratch builds around the problems that show up in real backends: concurrent state, distributed limits, partial failure, retrieval and job scheduling. Each one ships with tests and a runnable demo.
|
Google-Docs-style collaborative editor. Yjs CRDTs synced over a custom y-websocket protocol server, live cursors and presence, JWT auth with viewer/editor sharing, and debounced snapshot persistence with version history instead of a write per keystroke.
|
API gateway with three rate-limiting algorithms (fixed window, token bucket, sliding window log), each with an in-memory and a Redis + Lua store so limits hold across replicas. Uses Redis server time to sidestep clock drift, with Prometheus metrics, a Grafana dashboard and a k6 load test.
|
|
Ask questions about a codebase, get answers with
|
Five microservices coordinating an order saga. Failed steps trigger compensating transactions (refund, stock release), a transactional inbox keeps consumers idempotent under at-least-once delivery, and W3C trace context follows each order across every service.
|
|
A mini Celery built from scratch. Race-safe job claiming (SQLite
|
|
Smaller, focused repos across Rust, Go, TypeScript and Nix. Every one has CI, and all but the Nix configs ship a reproducible Nix dev shell.
| Repo | What it does | Stack |
|---|---|---|
| ari-check | Asks the CA when to renew: reads a host's TLS certificate or a certificate file and fetches its ACME Renewal Information (RFC 9773) window, with exit codes for cron | TypeScript · TLS |
| nix-oci-images | One Go server packaged as an OCI image six ways, Dockerfiles against Nix builders, measured in CI for size, shell, CVEs and rebuild reproducibility | Nix · Docker · Go |
| arb-gas-exporter | A Prometheus exporter for Arbitrum gas prices, read from the chain's own precompiles: L2 base fee, parent-chain data prices, pricing backlogs, ArbOS version | TypeScript · Arbitrum |
| doh-stub | A DNS-over-HTTPS stub for setups that used the removed cloudflared proxy-dns: same flags, UDP and TCP in, RFC 8484 out |
Rust · DNS |
| pq-hybrid-kex | X-Wing, the key exchange that pairs post-quantum ML-KEM-768 with X25519, written step by step and checked against the draft's test vectors | Rust · Cryptography |
| chaos-proxy | A TCP proxy that adds latency, jitter, bandwidth limits, dropped and cut connections, and partitions, changeable while it runs | Rust · Testing |
| rs-loadgen | An HTTP load generator that measures latency from when each request was due, so a stalled server can't hide its stall | Rust · Load testing |
| agent-trace-viewer | A local viewer for AI agent traces in OpenTelemetry's GenAI conventions: model and tool calls on a timeline, tokens counted once | TypeScript · OpenTelemetry |
| bloom-cuckoo-rs | Bloom, cuckoo and xor filters from scratch, with false positive rates measured against the theory | Rust · Data structures |
| idempotency-kit | Idempotency-Key middleware for Express, Fastify and Hono, following the IETF draft, with memory and Redis stores | TypeScript · Redis |
| omnichain-portfolio | Native balances across 12 blockchains from public endpoints, with every address checked against its chain's format and checksum first | TypeScript · Multichain |
| lsm-lite | A small LSM-tree key-value store, tested by crashing it at every filesystem operation on a simulated disk | Rust · Storage |
| webhook-relay | Signed webhook delivery on Postgres with retries, dead letters, redrive and SSRF protection checked when the connection opens | Go · Postgres |
| raft-visualizer | Raft in the browser: crash nodes, split the network and watch five safety properties checked live (try it) | TypeScript · Raft |
| tiny-kv-raft | A replicated key-value store on openraft, run under partitions, lost messages and crashes, with a linearizability checker | Rust · Raft |
| outbox-relay | Publishes committed rows of a Postgres outbox table to NATS JetStream from a logical replication slot, with crash-safety tests and slot lag metrics | Go · Postgres · NATS |
| go-saga | Sagas for Go: every step has a compensating action, and a durable log lets a saga resume after a crash | Go |
| agent-file-census | A scan of the 10,000 most-starred repos for hidden text in agent instruction files, with the method, data and limits | TypeScript · GitHub API |
| erc4626-vault-kit | ERC-4626 vault with an idle buffer and a pluggable strategy, tested with a16z's conformance suite and invariants. Unaudited, testnets only | Solidity · Foundry |
| chainpulse | Health monitoring for blockchain RPC endpoints across 15 chains: uptime, head height, lag behind peers and stalls, with Prometheus metrics and alert rules | Go · Prometheus |
| anchor-escrow | Token escrow on Solana with optional expiry and Token-2022 support, tested in LiteSVM. Unaudited and not deployed | Rust · Solana · Anchor |
| mcp-postgres-guard | MCP server that lets AI agents query Postgres without being able to break it: read-only, one statement at a time, time and row limits | Go · MCP · Postgres |
| mcp-tcmb-kur | MCP server for the Central Bank of Türkiye's daily exchange rates, with history and no API key | Go · MCP |
| llm-gateway-go | One OpenAI-compatible endpoint for all your LLM providers: fallback, per-client keys and limits, response cache, Prometheus metrics | Go · LLM |
| baited | Harmless traps that test whether your coding agent hands over your .env, with a fake secret and a local listener. Includes a small pilot on Claude Code and Codex CLI |
TypeScript · Claude Code · Codex CLI |
| gcra-lite | Dependency-free GCRA rate limiter: one atomic per limiter, plus a keyed limiter for per-user quotas | Rust |
| backend-agent-skills | Agent Skills for Postgres migration review, k6 load test plans and incident response, linted in CI with skill-lint | Agent Skills · Postgres · k6 |
| nixos-wsl-dev | My Windows dev machine as a NixOS-WSL flake: the whole Linux side rebuilds from the repo | Nix · NixOS |
| agent-memory-sqlite | Persistent memory for coding agents as an MCP server: SQLite FTS5, BM25 + recency ranking, zero native deps | TypeScript · MCP · SQLite |
| context-compressor | ctxc: shrinks test and build logs to an LLM token budget, 94% smaller on a real cargo test run with the failure intact |
Rust |
| skill-lint | Linter and GitHub Action for Agent Skills (SKILL.md): spec rules, broken links, nested references |
TypeScript · GitHub Actions |
| nix-devshells | Flake templates for Rust, Go, Node/TS, Python and Solidity dev shells, smoke-tested in CI | Nix |
| dotfiles-nix | My whole shell and editor setup as a home-manager flake for NixOS-WSL | Nix · home-manager |
|
Cloud cost anomaly detection on AWS CUR data. Three detectors run in parallel (STL · Isolation Forest · Z-Score), with severity-banded alerts and a Streamlit dashboard. Benchmarked across 25 random seeds: STL wins overall (F1 ≈ 0.76), Z-Score is a perfect point-spike detector, Isolation Forest sits in between.
|
Sorting algorithm benchmarking suite: Quick / Heap / Shell / Merge / Radix tested on Random, Partially Sorted, and Reverse Sorted data across sizes from 1K to 500K. Spring Boot REST API + React/Vite UI for interactive comparison, with line / bar / radar charts and CSV/JSON export.
|
|
5-stage 16-bit MIPS CPU simulator with hazard handling (data forwarding EX-EX and MEM-EX, load-use stall detection, branch flush), plus a Verilog RTL twin and live web visualization of registers, memory, and pipeline state.
|
Used-car marketplace with JWT auth, role-based access (admin / seller / buyer), favorites, in-app messaging, image uploads, and a full Cypress E2E suite. Helmet, rate-limiting, and CORS hardening on the API.
|
⏰ Reveil WIPAI-powered habit-tracking mobile app. Three-tier architecture: React Native (Expo) client + NestJS API + FastAPI AI engine, all backed by PostgreSQL.
|
Personal portfolio at utkudemirtas.tech with a WebGL fluid background, bilingual TR/EN content, an interactive terminal and command palette, a live theme lab, an auto lite mode for weaker machines, and an EmailJS contact form.
|
Repos I contribute to as a collaborator on @thefcan's org. My role is mainly test suites and CI pipelines (across Go, Python, Rust, C++ and the web stack), plus fixes along the way.
|
Multi-tenant, AI-powered knowledge SaaS. Teams upload documents and chat with an assistant that answers only from those documents, with citations (RAG). Go core for tenancy/billing/metering, a FastAPI LLM + embedding pipeline, a Next.js front-end, Postgres + pgvector, and a provider-agnostic model layer, with a live demo and CI/CD/CodeQL.
My contribution: the web Vitest suite + CI step. |
A blockchain written from scratch in Go: proof of work, a signed UTXO transaction model, ECDSA wallets, BoltDB persistence, and TCP peer-to-peer sync. Built to a production standard: property-based and fuzz tests, a security-reviewed network layer, and static analysis.
My contribution: the |
|
Kubernetes chaos / resilience harness in Go. Inject controlled faults into a system on Kubernetes, check a steady-state hypothesis, measure recovery, and report a deterministic pass/fail, with an ML-based anomaly layer over accumulated runs.
My contribution: buildinfo + k8s-client tests. |
From-scratch 2D finite-element solver for steady-state heat conduction in modern C++17. Hand-written Galerkin assembly, a Jacobi-preconditioned CG solve (Eigen), and HDF5/XDMF output for ParaView, validated to second-order accuracy by the Method of Manufactured Solutions.
My contribution: Point/Material value-type tests. |
|
A container runtime in ~80 lines of Go: a learning re-implementation of the core of
My contribution: config helpers + tests + CI go-test. |
End-to-end ML predicting whether a second-hand fashion listing sells within 7 days. Covers scraping, time-aware labeling, feature engineering, model comparison, ablation analysis, and a live demo, with XGBoost on top.
My contribution: pytest suite + first CI workflow. |
Also contributing to rust-url-shortener (Rust · Axum) and unity-match3 (Unity · C#).
| Frontend |
|
| Backend |
|
| Data & Infra |
|
| Tools |
|
"Build it. Break it. Ship it. Then learn what broke."


