Furkan Durna — Full Stack Developer
Software that scales, settles correctly, and keeps working when the network doesn't.
Building scalable software architectures, games, and web applications. I focus on performance, reliability, and infrastructure designed to scale.
Open to freelance and contract work: mobile apps, backend systems, and payment or token infrastructure.
Contact: LinkedIn, or the contact form in the Mail app on this site. Working languages: English and Turkish.
How this site works
The site looks like a desktop operating system. Apps open in windows from the dock (at the bottom of the screen by default) and from the desktop icons; on phones they open full-screen, one at a time. The EN/TR switch in the top bar changes the language.
- About Me: profile, skills and availability, also available at /about.
- Projects: each project with its description, stack, links and, where possible, a live demo. Each project also has its own page under /projects.
- Experience: work history.
- Blog: technical write-ups on the projects, also available at /blog.
- Mail: the contact form. There is no public email address; messages sent here reach Furkan directly.
- Terminal: a small shell. Type help to list the commands.
- Browser: live demos of projects, embedded in the site.
- Music: a Spotify playlist.
- Mini games: Snake, played on a GitHub contribution graph, and Tetris. /games/snake and /games/tetris open the desktop with that game running.
- Settings: accent color, wallpaper, dock, sound, game controls and accessibility.
Everything on the desktop is also available as plain text on this page and at /llms.txt. The site is in English at / and in Turkish at /tr.
Skills
TypeScript, Dart, PHP, Python, C, Java, Bash, React, Next.js, Tailwind CSS, Flutter, Node.js, Express, FastAPI, Supabase, PostgreSQL, Redis, Docker, n8n, NocoDB, Airtable, Godot 3 & 4, Agentic coding, Cursor (CLI), Claude Code
Projects
The Finger of Hope (2025–2026)
One press sends an emergency alert with the user's location to trusted contacts, and an "I'm safe" update afterwards. When the server can't be reached, a transport state machine falls back through SMS, Wi-Fi Direct, BLE and Huawei Nearby, fragmenting each message to fit the channel and relaying it phone to phone with hop and time limits. Three codebases: a native Java app on Huawei Mobile Services, a Flutter app for Google devices, and a TypeScript/Express server with PostgreSQL, Redis job queues, WebSockets, dual push delivery (FCM and Huawei Push) and Prometheus metrics. Built for Huawei's Innovation Category competition, where it placed 1st in 2025 and 2nd in 2026. Development stopped after the 2026 competition with the core features complete and working: alerts, the fallback chain, relaying and the server. An encryption layer (X25519, Ed25519, AES-256-GCM, keys in the Android Keystore) was written but not connected to the send path.
Stack: Java, Flutter, HMS Core, TypeScript, Express, PostgreSQL, Redis, Docker
Age of Pirates Online (2026)
Contract backend engineering for Age of Pirates Online, a live online game. Integrated Xsolla payments into the website from scratch. Cut website load time by about 30% with paginated JSON, preloading and a ~2 MB transfer budget, where the site used to load everything at once. Cut server-side processing time by about 30% by moving work off the main thread onto helper threads and running low-value jobs less often. Hardened the server and its link to the website against UDP floods, rate-limit bots and other automated attacks, and set up an hourly traffic and attack report for the owner.
Stack: C, PHP, JavaScript
DRAPAI (2025)
A photo of a person and a garment in, a photorealistic preview of that outfit out. Results can be edited in an on-device Studio and kept in a local wardrobe. The generation pipeline runs as a job lifecycle: tokens are held up front and settled only when a job finishes, so a step that times out doesn't charge the user twice. Postgres row-level security and server-side ownership checks protect every request.
Stack: Flutter, Dart, PostgreSQL, Next.js
gdmetrics (2026)
A Godot editor plugin and CLI that measures Cyclomatic Complexity and Cognitive Complexity for every GDScript function, then tells you what to fix first. The editor dock lists Top fixes with plain labels (OK / Hard to read / Fix soon) and jumps to the function; functions over the failure threshold get script editor annotations. The CLI exports JSON and CSV reports and a threshold gate for CI, with a GitHub Actions example. Two editions share one core: gdmetrics-g4 for Godot 4.2+ and gdmetrics-g3 for Godot 3.1+, tested across a local version matrix. Published on itch.io.
Stack: GDScript, Godot 3, Godot 4, GitHub Actions
Gerilim Elektrik (2025)
Company website for Gerilim Elektrik, an electrical, energy and construction contractor in Dursunbey, Balıkesir: low/medium-voltage work, solar installations, and construction and interior projects, with a project gallery and phone/WhatsApp contact. The site owner manages content and gallery images through an admin panel, with safeguards against conflicting edits and duplicate submissions.
Stack: React, TypeScript, Tailwind CSS, Node.js, PostgreSQL
Track Analyzer (2025)
A FastAPI backend and React panel for monitoring Spotify catalogs: detection of tracks that became unplayable in playlists and artist catalogs across regional markets, discovery of playlists that feature an artist, and stream history with daily averages from the Soundcharts API. Bulk updates run as background tasks with rate limiting and logging.
Stack: Python, FastAPI, React, TypeScript, Docker
HARDWEY Web (2025)
Marketing site for HARDWEY, an app for buying shares in artists' brands. Every section (hero, FAQ, founders, partners, legal pages) is editable from an admin app instead of redeploying: the React site loads all content in one request, and an Express API stores each section as JSON in SQLite, handles image uploads, and protects edits with httpOnly cookie tokens and CSRF tokens.
Stack: React, TypeScript, Vite, Express, SQLite
Zarhan İnşaat (2023)
Corporate website for Zarhan İnşaat, a construction company with offices in Bursa, Erzurum and Istanbul. Covers the company profile, construction and contracting services, a project portfolio with image galleries, references, partners, and office contact details. Built on WordPress so the company can publish projects without a developer.
Stack: WordPress, PHP
Experience
Full Stack Developer, DRAPAI (2025 – Present)
- Built DRAPAI, an AI virtual try-on app on the App Store and Google Play: a person photo and a garment image in, a photorealistic preview of the outfit out.
- Cross-platform mobile client with an on-device photo editor and a local wardrobe.
- Postgres backend with row-level security, social sign-in and server-side ownership checks before any generation runs.
- Generation pipeline modeled as a job lifecycle, with tokens held first and settled only when a job finishes.
- In-app token purchases and subscriptions on both stores, plus a bilingual (EN/TR) marketing site.
Backend Software Engineer (Contract), Age of Pirates Online (Jun 2026)
- Integrated Xsolla payments into the game's website from scratch.
- Cut website load time by 30%: paginated the JSON responses, added preloading and set a ~2 MB transfer budget where the site used to load everything at once, and untangled deeply nested code.
- Cut server-side processing time by 30% by moving work off the main thread onto helper threads and running low-value job types less often.
- Hardened the server and game-server-to-website communication on selected API gateways: banning abusive IPs, filtering UDP floods, a CDN protection layer, and a baseline for access control, backups, monitoring, scheduled restarts and file permissions.
- Built an hourly report to the owner's Discord covering traffic, IP distribution, access attempts and attacks per endpoint.
Full Stack Developer Intern, Level2app (Aug 2024 – Sep 2024)
- Developed 5+ internal APIs used for payments, database connections, server stability and quality-of-life workflows.
Full Stack Developer, Softworks LLC (2021 – 2024)
- Built websites on demand for brands and businesses, from requirements to launch.
- Delivered e-commerce stores with product catalogs, carts, checkout and admin panels for managing products and orders.
- Owned projects end to end across frontend, backend and deployment.
Full Stack Developer, Cafesoft (2017 – 2019)
- Built Cafesoft, a restaurant operating system used by local cafés and pubs.
- Digital menu, table and order management, and a back office for menus, prices and daily operations.
Full Stack Developer, Finde360 (2016 – 2017)
- Built the entire platform: an on-demand services marketplace where users post listings and find providers.
- Listings with categories, location and filters, search, user accounts and profiles, and an admin panel for moderation.
Full Stack Developer, Video streaming platforms (client names under NDA) (2012 – 2016)
- Built and maintained widely used movie and TV streaming platforms.
- Owned the full stack: content catalog and CMS, search, the video player and the user-facing UI.
Blog
- How a deep-sea website turned into DRAPAI's fashion blog — A conversation about NASA, neal.fun's Deep Sea, and how my friend and I ended up building blog.drapai.com.
- Why agentic coding, not vibe coding — Both let an AI write the code. Only one of them checks it. The case for keeping the loop closed, with the evidence and with examples from building this site.
- Backend work on a live online game — A month on Age of Pirates Online: payments, performance, and protecting the link between the game server and the website.
- An emergency button that keeps trying without internet — The Finger of Hope sends an alert and a location to trusted contacts, then falls back through SMS, Wi-Fi Direct and Bluetooth when the network is gone. Notes on the fallback state machine, mesh relaying and Android's rough edges.
- Measuring GDScript complexity without an AST — gdmetrics scores every GDScript function for cyclomatic and cognitive complexity, then tells you what to fix first. Godot has no public parser API, so it brings its own tokenizer.
- A marketing site where every section is editable — HARDWEY's site keeps each section as JSON in SQLite, loads everything in one request, and survives old content shapes with small normalizers. Notes on the content model, the admin app and hosting quirks.
- Watching a Spotify catalog for tracks that go dark — Track Analyzer is an internal tool that finds tracks that became unplayable in playlists and artist catalogs, region by region, and keeps a stream history longer than its data source provides.
- Charging for AI generations without double-charging — How DRAPAI keeps a token balance correct across a pipeline where any step can time out.
- A small business site with a real CMS — Gerilim Elektrik's site: a React front end, an API the owner edits through, and the details that stop two edits from overwriting each other.
- Building a construction company site on WordPress — Zarhan İnşaat's corporate site: why WordPress, how it is structured, and what I would change today.
- Building this site — How the desktop-style portfolio is put together.