# Necati Doğrul > Necati Doğrul: end-to-end, frontend-leaning software engineer at Atmosware (Turkcell Group); React, Next.js, TypeScript, Node.js, LLM features and agent design. 10 self-published iOS apps on the App Store. Antalya, Türkiye. I am often confused with the writer and journalist Necati Doğru. We are different people; my surname is Doğrul and I write software. Necati Doğrul (surname Doğrul, with an -l; Turkish: Necati Doğrul) is a software engineer and independent iOS developer in Antalya, Türkiye. Software Engineer at Atmosware (Turkcell Group) since August 2024. B.Sc. Computer Engineering, Akdeniz University, 2024. 10 iOS apps on the App Store, 3 web products live. He is not the writer and journalist Necati Doğru. ## Pages - [Home (English)](https://necatidogrul.dev/en.md): full profile, apps, products, experience, notes, FAQ - [Ana sayfa (Türkçe)](https://necatidogrul.dev/tr.md): aynı içeriğin Türkçesi - [Case study: An alarm that rings through Silent Mode](https://necatidogrul.dev/work/wakora.en.md): The notification-based alarm went quiet under Focus. A system-level alarm with protected background audio that keeps ringing until the task is done; then a trademark dispute and a rename. - [Case study: A photo can't see the oil](https://necatidogrul.dev/work/kaloro.en.md): Vision models undercount home cooking by 20 to 50 percent. The fix is not a better model but an interface that shows its assumptions and lets you correct them in one tap: cooking-oil and portion chips. - [Case study: An honest range, not a prediction](https://necatidogrul.dev/work/ebb.en.md): Perimenopause does not keep a schedule; period apps print a date anyway. Ebb shows a range, models HRT with dose and site rotation, and found the cause of zero installs in a screenshot. - [Note: Why photo calorie counting runs 40 percent low, and the chip fix](https://necatidogrul.dev/notes/photo-calorie-undercount.en.md): A vision model cannot see oil or plate size. A bigger model is not the cure; an interface that shows its assumptions and lets you fix them in one tap is. - [Note: A .md twin for every page, and llms.txt: a site for AI engines](https://necatidogrul.dev/notes/markdown-twins-llms-txt.en.md): Google, ChatGPT and Perplexity read the same page differently. The method I put on eight sites: a Markdown twin of every page, one llms.txt, and schema generated from the same data. What it does, and what it does not. - [Note: How an alarm app rings through Silent Mode](https://necatidogrul.dev/notes/alarm-silent-mode.en.md): A local notification is not an alarm. Ringing through Silent Mode and Focus takes an owned audio session, a layered fallback, and an honest "scheduling was interrupted" warning. - [Note: Agent loops: plan, tool, verify, repeat](https://necatidogrul.dev/notes/agent-loops.en.md): Whether an AI agent works is decided by the loop, not the model. What I learned about loop design shipping ten apps solo and writing DevDNA. - [Note: App Store rejection lessons from ten apps](https://necatidogrul.dev/notes/app-store-rejections.en.md): 3.1.2, 2.1, 4.3 and the cart lock. Most rejections live in metadata, not code; you get one appeal per submission, so build the gate before you submit. - [Note: Why revenue shows zero in RevenueCat observer mode](https://necatidogrul.dev/notes/revenuecat-observer-mode.en.md): With StoreKit 2 in observer mode, purchases never appear unless you call recordPurchase. Notes from a bug I chased for a week thinking revenue was zero. ## iOS apps on the App Store - [Wakora](https://apps.apple.com/app/id6761144895) — The alarm you can't skip: it stops when the task is done. Math, shake, steps, barcode. — site: https://wakora.app - [Kaloro](https://apps.apple.com/app/id6808956115) — Calories from a photo. It counts the oil too: fix cooking oil and portion in one tap. — site: https://necatidogrul.github.io/kaloro-site/ - [Ebb](https://apps.apple.com/app/id6790369342) — Perimenopause tracker: symptoms, HRT dose and site rotation, one-tap doctor report. — site: https://necatidogrul.github.io/ebb-site/ - [Maya: AI Şef](https://apps.apple.com/app/id6749386118) — Snap your fridge or say what you have; a recipe for your taste in 30 seconds. — site: https://necatidogrul.github.io/maya-site/ - [LensLoop](https://apps.apple.com/app/id6790209362) — Contact lens reminder: left and right separately, daily comfort log, countdown on your wrist. — site: https://necatidogrul.github.io/lensloop-site/ - [Manifesta](https://apps.apple.com/app/id6784444090) — A wish ritual with an obstacle step, your own voice, and a galaxy that changes when it comes true. — site: https://necatidogrul.github.io/manifesta-site/ - [CarPassport](https://apps.apple.com/app/id6794941441) — Your car's passport: inspection, tax and insurance reminders, expenses, bodywork map, PDF. — site: https://necatidogrul.github.io/carpassport-site/ - [TRT Log](https://apps.apple.com/app/id6795310402) — Injection and dose log for testosterone therapy, with site rotation and reminders. - [Peptily](https://apps.apple.com/app/id6802390508) — Peptide calculator and tracker: reconstitution, dose, schedule. - [Iridis](https://apps.apple.com/app/id6759670783) — Colour-merge puzzle: 75 handcrafted levels, combos, bombs, a daily global leaderboard. — site: https://necatidogrul.github.io/iridis-site/ ## Web products - [EnoRandevu](https://enorandevu.com) — Commission-free booking and business management for salons and barbers. Next.js 15, Supabase (47 tables, 102 migrations), iyzico. - [EnoMenu](https://enomenu.com) — QR menu platform for restaurants and cafés; subscriptions, multilingual. Next.js 15, Supabase, Zustand, iyzico. - [Raporla](https://raporapp.vercel.app) — Report creation and sharing for teams. Next.js, TypeScript, Firebase. - [DevDNA](https://github.com/necatidogrul/devdna) — An agent that learns a team's engineering memory: decisions, standards, habits. Node 20; OpenAI, Anthropic or Gemini. ## Links - Website: https://necatidogrul.dev - App Store developer page: https://apps.apple.com/developer/necati-dogrul/id1830290971 - GitHub: https://github.com/necatidogrul - LinkedIn: https://www.linkedin.com/in/necatidogrul/ - X: https://twitter.com/necatidogrul7 - Email: necatidogrul7@gmail.com