{"id":31937,"date":"2025-10-15T19:32:05","date_gmt":"2025-10-15T16:32:05","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/"},"modified":"2025-10-15T19:32:05","modified_gmt":"2025-10-15T16:32:05","slug":"fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/","title":{"rendered":"FatAdvisor: .NET Beslenme AI Arac\u0131s\u0131 Temelleri Nas\u0131l At\u0131l\u0131r?"},"content":{"rendered":"<p><body><\/p>\n<p>Ki\u015fiselle\u015ftirilmi\u015f beslenme dan\u0131\u015fmanl\u0131\u011f\u0131na eri\u015fmek ve sa\u011fl\u0131kl\u0131 ya\u015fam hedeflerinize ula\u015fmak karma\u015f\u0131k olabilir. \u0130\u015fte tam bu noktada, yapay zeka destekli bir beslenme asistan\u0131 olan FatAdvisor projesinin temellerini atarak bu zorluklar\u0131n \u00fcstesinden nas\u0131l gelece\u011fimizi ke\u015ffedeceksiniz.<\/p>\n<p>Modern ya\u015fam\u0131n getirdi\u011fi yo\u011fun tempo, insanlar\u0131n sa\u011fl\u0131kl\u0131 beslenme al\u0131\u015fkanl\u0131klar\u0131 edinmesini veya s\u00fcrd\u00fcrmesini zorla\u015ft\u0131r\u0131yor. G\u00fcn i\u00e7inde ne yedi\u011fimizi takip etmek, makro ve mikro besin dengesini sa\u011flamak, ki\u015fisel hedeflerimize uygun diyetler olu\u015fturmak \u00e7o\u011fu zaman g\u00f6z\u00fcm\u00fczde b\u00fcy\u00fcyor. Fast food se\u00e7eneklerinin cazibesi, bilgi kirlili\u011fi ve uzman dan\u0131\u015fmanl\u0131k hizmetlerinin maliyeti de bu s\u00fcreci daha karma\u015f\u0131k hale getiren fakt\u00f6rlerden. Peki, bu kaotik ortamda bize rehberlik edebilecek, ki\u015fisel ihtiya\u00e7lar\u0131m\u0131za g\u00f6re uyarlanm\u0131\u015f, do\u011fru ve anl\u0131k geri bildirim sa\u011flayabilecek bir \u00e7\u00f6z\u00fcm m\u00fcmk\u00fcn m\u00fc? \u0130\u015fte tam da bu noktada, yapay zeka destekli bir beslenme asistan\u0131 olan FatAdvisor devreye giriyor. FatAdvisor, kullan\u0131c\u0131lar\u0131n g\u00fcnl\u00fck yiyecek al\u0131mlar\u0131n\u0131 analiz ederek, besin de\u011ferlerini hesaplayarak, ki\u015fisel hedefler (kilo kayb\u0131, kas kazan\u0131m\u0131, genel sa\u011fl\u0131k) do\u011frultusunda \u00f6neriler sunarak ve hatta potansiyel alerjenler veya besin eksiklikleri konusunda uyararak sa\u011fl\u0131kl\u0131 beslenme yolculu\u011funu kolayla\u015ft\u0131rmay\u0131 hedefliyor.<\/p>\n<p>Bu proje, sadece bir kalori takip uygulamas\u0131 olman\u0131n \u00f6tesine ge\u00e7erek, bir sohbet botu gibi kullan\u0131c\u0131yla do\u011fal bir dilde ileti\u015fim kurabilen, yemek foto\u011fraflar\u0131n\u0131 tan\u0131yabilen (ilerleyen a\u015famalarda) ve en \u00f6nemlisi, ki\u015fiye \u00f6zel adaptif beslenme planlar\u0131 olu\u015fturabilen bir sistem olmay\u0131 ama\u00e7l\u0131yor. D\u00fc\u015f\u00fcnsenize, ak\u015fam yeme\u011finde ne yiyece\u011finize karar veremedi\u011finizde, telefonunuza &#8220;Bug\u00fcn ne yesem?&#8221; diye sordu\u011funuzda, FatAdvisor size buzdolab\u0131n\u0131zdaki malzemelere, beslenme hedeflerinize ve hatta o g\u00fcnk\u00fc aktivite seviyenize g\u00f6re an\u0131nda bir tarif \u00f6neriyor. Veya bir restoranda men\u00fcye bakarken, hangi yeme\u011fin diyetinize en uygun oldu\u011funu an\u0131nda s\u00f6yleyebiliyor. Bu, beslenme dan\u0131\u015fmanl\u0131\u011f\u0131n\u0131 cebimize getiren, 7\/24 yan\u0131m\u0131zda olan bir ki\u015fisel ko\u00e7 gibi d\u00fc\u015f\u00fcn\u00fclebilir. Bu t\u00fcr bir sistem, sadece bireysel sa\u011fl\u0131k ve refah\u0131 art\u0131rmakla kalm\u0131yor, ayn\u0131 zamanda genel halk sa\u011fl\u0131\u011f\u0131na da \u00f6nemli katk\u0131lar sa\u011flayabilir. Kronik hastal\u0131klar\u0131n \u00f6nlenmesinden sporcular\u0131n performans\u0131n\u0131 art\u0131rmaya kadar geni\u015f bir yelpazede fayda sunma potansiyeli ta\u015f\u0131yor. Dolay\u0131s\u0131yla, evet, beslenme al\u0131\u015fkanl\u0131klar\u0131m\u0131z\u0131 k\u00f6kten de\u011fi\u015ftirebilecek, bize \u00f6zel \u00e7\u00f6z\u00fcmler sunan bir AI asistan\u0131na kesinlikle ihtiyac\u0131m\u0131z var ve FatAdvisor bu ihtiyac\u0131 kar\u015f\u0131lamak \u00fczere yola \u00e7\u0131k\u0131yor. Bu makale serisinin ilk b\u00f6l\u00fcm\u00fcnde, bu vizyonu ger\u00e7e\u011fe d\u00f6n\u00fc\u015ft\u00fcrecek sa\u011flam bir teknolojik temelin nas\u0131l at\u0131laca\u011f\u0131n\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h2>FatAdvisor Projesinin Temel Ta\u015flar\u0131 Neler Olmal\u0131?<\/h2>\n<p>Her b\u00fcy\u00fck yaz\u0131l\u0131m projesi gibi, FatAdvisor&#8217;\u0131n da ba\u015far\u0131l\u0131 olabilmesi i\u00e7in sa\u011flam ve d\u00fc\u015f\u00fcn\u00fclm\u00fc\u015f bir temel mimariye ihtiyac\u0131 vard\u0131r. Bu temel, projenin sadece bug\u00fcnk\u00fc ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamakla kalmay\u0131p, gelecekteki geni\u015flemeleri ve yeni \u00f6zellik entegrasyonlar\u0131n\u0131 da sorunsuz bir \u015fekilde destekleyebilmelidir. FatAdvisor i\u00e7in bu temel ta\u015flar\u0131 olu\u015ftururken, performans, g\u00fcvenlik, \u00f6l\u00e7eklenebilirlik ve kullan\u0131c\u0131 deneyimi gibi kritik fakt\u00f6rleri g\u00f6z \u00f6n\u00fcnde bulundurmal\u0131y\u0131z. Projemizin \u00e7ekirde\u011fini, .NET ekosisteminin g\u00fcc\u00fcn\u00fc kullanarak bir API katman\u0131, robust bir veri modellemesi ve gelecekteki yapay zeka entegrasyonlar\u0131na a\u00e7\u0131k bir yap\u0131 olu\u015fturacak \u015fekilde tasarlayaca\u011f\u0131z.<\/p>\n<p>\u0130lk olarak, <b>API Katman\u0131<\/b> projenin beyni ve sinir sistemi olacak. Bu katman, hem mobil uygulamam\u0131zdan hem de web aray\u00fcz\u00fcm\u00fczden gelen t\u00fcm talepleri i\u015fleyecek, veri taban\u0131yla ileti\u015fim kuracak ve yapay zeka mod\u00fclleriyle entegrasyonu sa\u011flayacak. .NET Core, y\u00fcksek performans\u0131, \u00e7apraz platform deste\u011fi ve geni\u015f geli\u015ftirici toplulu\u011fu sayesinde bu katman i\u00e7in ideal bir se\u00e7im. RESTful prensiplerine uygun olarak tasarlanacak bir API, farkl\u0131 istemcilerle kolayca ileti\u015fim kurabilmemizi garantileyecek. \u0130kinci temel ta\u015f\u0131m\u0131z <b>Veri Modellemesi ve Saklama<\/b>. Beslenme verileri olduk\u00e7a \u00e7e\u015fitlidir: kullan\u0131c\u0131 bilgileri, yiyecek maddeleri, \u00f6\u011f\u00fcnler, besin de\u011ferleri, alerjiler ve daha fazlas\u0131. Bu verilerin mant\u0131kl\u0131 ve ili\u015fkisel bir \u015fekilde modellenmesi, hem veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak hem de sorgulama performans\u0131n\u0131 optimize etmek a\u00e7\u0131s\u0131ndan hayati \u00f6neme sahip. \u0130li\u015fkisel bir veritaban\u0131 (\u00f6rne\u011fin SQL Server veya PostgreSQL) Entity Framework Core ile birlikte, bu karma\u015f\u0131k veri yap\u0131s\u0131n\u0131 y\u00f6netmek i\u00e7in g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcm sunuyor.<\/p>\n<p>\u00dc\u00e7\u00fcnc\u00fc ve belki de en heyecan verici temel ta\u015f ise <b>Yapay Zeka Entegrasyonu<\/b>. FatAdvisor&#8217;\u0131 di\u011fer beslenme uygulamalar\u0131ndan ay\u0131ran en \u00f6nemli \u00f6zellik yapay zeka yetenekleri olacak. Bu ilk a\u015famada, Azure OpenAI gibi hizmetlerle temel bir entegrasyon kurarak, kullan\u0131c\u0131lardan do\u011fal dil girdilerini al\u0131p i\u015fleyebilecek ve basit beslenme tavsiyeleri veya sorulara yan\u0131tlar \u00fcretebilecek bir yap\u0131 in\u015fa edece\u011fiz. Bu entegrasyon, gelecekte makine \u00f6\u011frenimi modelleriyle daha derinlemesine ki\u015fiselle\u015ftirilmi\u015f \u00f6neriler sunman\u0131n kap\u0131lar\u0131n\u0131 aralayacak. Son olarak, <b>Kullan\u0131c\u0131 Aray\u00fcz\u00fc (UI) ve Kullan\u0131c\u0131 Deneyimi (UX)<\/b> FatAdvisor&#8217;\u0131n benimsenmesi i\u00e7in kilit bir rol oynayacak. Temelleri atarken, API&#8217;mizin farkl\u0131 frontend teknolojileri (\u00f6rne\u011fin React, Angular, Vue.js veya .NET MAUI ile mobil uygulamalar) taraf\u0131ndan kolayca t\u00fcketilebilir olmas\u0131n\u0131 sa\u011flayaca\u011f\u0131z. Temiz, sezgisel ve eri\u015filebilir bir aray\u00fcz, kullan\u0131c\u0131lar\u0131n uygulamay\u0131 keyifle kullanmas\u0131n\u0131 sa\u011flayacak. Bu d\u00f6rt temel ta\u015f, FatAdvisor&#8217;\u0131n sadece bug\u00fcn de\u011fil, gelecekte de b\u00fcy\u00fcy\u00fcp geli\u015febilece\u011fi sa\u011flam bir zemin olu\u015fturacak. \u015eimdi bu temel ta\u015flar\u0131n her birini daha detayl\u0131 inceleyerek, projemizin in\u015faat\u0131na ba\u015flayal\u0131m.<\/p>\n<h3>.NET Core ile API Olu\u015fturma: Beslenme Verilerine Giden Yol<\/h3>\n<p>FatAdvisor projemizin bel kemi\u011fi olacak olan API katman\u0131n\u0131 olu\u015fturmakla i\u015fe ba\u015fl\u0131yoruz. Bu API, hem mobil hem de web uygulamalar\u0131ndan gelen t\u00fcm veri isteklerini i\u015fleyecek, i\u015f mant\u0131\u011f\u0131n\u0131 uygulayacak ve veritaban\u0131 ile yapay zeka servisleri aras\u0131nda bir k\u00f6pr\u00fc g\u00f6revi g\u00f6recektir. .NET Core, y\u00fcksek performans\u0131, esnek mimarisi ve zengin k\u00fct\u00fcphane deste\u011fi sayesinde bu g\u00f6rev i\u00e7in m\u00fckemmel bir se\u00e7imdir. Ad\u0131m ad\u0131m, FatAdvisor i\u00e7in temel bir .NET Core Web API projesi nas\u0131l ba\u015flat\u0131l\u0131r ve ilk endpoint&#8217;ler nas\u0131l olu\u015fturulur ona bakal\u0131m.<\/p>\n<p>\u0130lk olarak, sisteminizde .NET SDK&#8217;n\u0131n kurulu oldu\u011fundan emin olun. Visual Studio veya Visual Studio Code gibi bir IDE kullanarak yeni bir .NET Core Web API projesi olu\u015fturabiliriz. Komut sat\u0131r\u0131n\u0131 tercih edenler i\u00e7in a\u015fa\u011f\u0131daki komut yeterli olacakt\u0131r:<\/p>\n<pre><code class=\"language-csharp\">\ndotnet new webapi -n FatAdvisorApi\ncd FatAdvisorApi\n<\/pre>\n<p><\/code><\/p>\n<p>Bu komut, <code>FatAdvisorApi<\/code> ad\u0131nda yeni bir Web API projesi olu\u015fturur ve \u00e7al\u0131\u015fma dizinimizi bu projenin i\u00e7ine ta\u015f\u0131r. Proje yap\u0131s\u0131n\u0131 inceledi\u011finizde, <code>Controllers<\/code> klas\u00f6r\u00fcnde \u00f6rnek bir <code>WeatherForecastController.cs<\/code> dosyas\u0131 g\u00f6receksiniz. Bu, API'mizin nas\u0131l \u00e7al\u0131\u015faca\u011f\u0131n\u0131 g\u00f6steren iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Biz kendi beslenme verilerimiz i\u00e7in kontrolc\u00fcleri olu\u015fturaca\u011f\u0131z. \u00d6rne\u011fin, yiyecek maddelerini y\u00f6netmek i\u00e7in bir <code>FoodItemsController<\/code> ve kullan\u0131c\u0131lar\u0131n beslenme kay\u0131tlar\u0131n\u0131 tutmak i\u00e7in bir <code>NutritionLogsController<\/code> ihtiyac\u0131m\u0131z olacak.<\/p>\n<p>Temel bir <code>FoodItem<\/code> modeli tan\u0131mlayal\u0131m. Bu model, bir yiyecek maddesinin ad\u0131, kalorisi ve di\u011fer besin de\u011ferleri gibi \u00f6zelliklerini i\u00e7erecektir. A\u015fa\u011f\u0131da basit bir \u00f6rnek g\u00f6rebilirsiniz:<\/p>\n<pre><code class=\"language-csharp\">\n\/\/ Models\/FoodItem.cs\nnamespace FatAdvisorApi.Models\n{\n    public class FoodItem\n    {\n        public int Id { get; set; }\n        public string Name { get; set; }\n        public double Calories { get; set; }\n        public double Protein { get; set; }\n        public double Carbohydrates { get; set; }\n        public double Fat { get; set; }\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>\u015eimdi, bu modele CRUD (Create, Read, Update, Delete) i\u015flemleri yapabilen bir kontrolc\u00fc olu\u015ftural\u0131m. Basit\u00e7e, t\u00fcm yiyecek maddelerini getiren bir GET endpoint'i ile ba\u015flayabiliriz:<\/p>\n<pre><code class=\"language-csharp\">\n\/\/ Controllers\/FoodItemsController.cs\nusing Microsoft.AspNetCore.Mvc;\nusing System.Collections.Generic;\nusing FatAdvisorApi.Models; \/\/ Model dosyam\u0131z\u0131 dahil ediyoruz\n\nnamespace FatAdvisorApi.Controllers\n{\n    [ApiController]\n    [Route(\"[controller]\")]\n    public class FoodItemsController : ControllerBase\n    {\n        private static List<FoodItem> _foodItems = new List<FoodItem>\n        {\n            new FoodItem { Id = 1, Name = \"Elma\", Calories = 52, Protein = 0.3, Carbohydrates = 14, Fat = 0.2 },\n            new FoodItem { Id = 2, Name = \"Tavuk G\u00f6\u011fs\u00fc\", Calories = 165, Protein = 31, Carbohydrates = 0, Fat = 3.6 }\n        };\n\n        [HttpGet]\n        public IEnumerable<FoodItem> Get()\n        {\n            return _foodItems;\n        }\n\n        [HttpGet(\"{id}\")]\n        public ActionResult<FoodItem> GetById(int id)\n        {\n            var item = _foodItems.Find(f => f.Id == id);\n            if (item == null)\n            {\n                return NotFound();\n            }\n            return item;\n        }\n\n        [HttpPost]\n        public ActionResult<FoodItem> Post(FoodItem newFoodItem)\n        {\n            newFoodItem.Id = _foodItems.Count > 0 ? _foodItems.Max(f => f.Id) + 1 : 1;\n            _foodItems.Add(newFoodItem);\n            return CreatedAtAction(nameof(GetById), new { id = newFoodItem.Id }, newFoodItem);\n        }\n\n        \/\/ Di\u011fer Put ve Delete i\u015flemleri de benzer \u015fekilde eklenebilir.\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, veritaban\u0131 entegrasyonu hen\u00fcz yap\u0131lmad\u0131\u011f\u0131 i\u00e7in verileri statik bir liste (<code>_foodItems<\/code>) i\u00e7inde tutuyoruz. Ancak bu yap\u0131, API'mizin nas\u0131l \u00e7al\u0131\u015faca\u011f\u0131n\u0131 g\u00f6stermek i\u00e7in yeterlidir. <code>[ApiController]<\/code> ve <code>[Route(\"[controller]\")]<\/code> nitelikleri, bu s\u0131n\u0131f\u0131n bir API kontrolc\u00fcs\u00fc oldu\u011funu ve istekleri <code>\/FoodItems<\/code> yolu \u00fczerinden kar\u015f\u0131layaca\u011f\u0131n\u0131 belirtir. <code>[HttpGet]<\/code>, <code>[HttpPost]<\/code> gibi nitelikler ise HTTP metotlar\u0131n\u0131 belirler. API'mizi \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>dotnet run<\/code> komutunu kullanabilir ve Swagger UI (varsay\u0131lan olarak gelir) \u00fczerinden endpoint'lerimizi test edebiliriz. Bu basit ba\u015flang\u0131\u00e7, FatAdvisor'\u0131n temel veri ak\u0131\u015f\u0131n\u0131 y\u00f6netecek API omurgas\u0131n\u0131 olu\u015fturmak i\u00e7in ilk ad\u0131md\u0131r. \u0130lerleyen a\u015famalarda, bu yap\u0131y\u0131 veritaban\u0131 entegrasyonu, kimlik do\u011frulama, yetkilendirme ve daha karma\u015f\u0131k i\u015f mant\u0131klar\u0131yla geni\u015fletece\u011fiz. Bu katman, FatAdvisor'\u0131n di\u011fer t\u00fcm mod\u00fcllerinin birbiriyle tutarl\u0131 ve verimli bir \u015fekilde konu\u015fmas\u0131n\u0131 sa\u011flayacak kritik bir bile\u015fendir.<\/p>\n<h3>Veri Modellemesi ve Saklanmas\u0131: Diyet Bilgilerini Nas\u0131l D\u00fczenlemeliyiz?<\/h3>\n<p>Herhangi bir beslenme uygulamas\u0131n\u0131n kalbinde, do\u011fru ve tutarl\u0131 bir \u015fekilde yap\u0131land\u0131r\u0131lm\u0131\u015f veri yatar. FatAdvisor i\u00e7in de bu durum ge\u00e7erli. Kullan\u0131c\u0131lar\u0131n beslenme al\u0131\u015fkanl\u0131klar\u0131n\u0131 anlamak, ki\u015fiselle\u015ftirilmi\u015f \u00f6neriler sunmak ve ilerlemeyi takip etmek i\u00e7in, verileri mant\u0131ksal bir d\u00fczende modellememiz ve g\u00fcvenli bir \u015fekilde saklamam\u0131z gerekiyor. Bu b\u00f6l\u00fcm, FatAdvisor i\u00e7in temel veri modellerini ve bu modelleri .NET ekosisteminde pop\u00fcler bir ORM (Object-Relational Mapper) olan Entity Framework Core ile nas\u0131l kullanaca\u011f\u0131m\u0131z\u0131 ele alacakt\u0131r.<\/p>\n<p>FatAdvisor i\u00e7in d\u00fc\u015f\u00fcnebilece\u011fimiz temel varl\u0131klar \u015funlard\u0131r:<\/p>\n<ol>\n<li><strong>User (Kullan\u0131c\u0131):<\/strong> Uygulamay\u0131 kullanan bireyin temel bilgileri (Id, Ad, Soyad, E-posta, Ya\u015f, Cinsiyet, Boy, Kilo, Aktivite Seviyesi, Hedef Kilo vb.).<\/li>\n<li><strong>FoodItem (Yiyecek Maddesi):<\/strong> Besin veri taban\u0131m\u0131zda yer alan her bir yiyecek maddesi (Id, Ad, Kalori, Protein, Karbonhidrat, Ya\u011f, Lif, Porsiyon Boyutu vb.).<\/li>\n<li><strong>Meal (\u00d6\u011f\u00fcn):<\/strong> Kullan\u0131c\u0131n\u0131n belirli bir zamanda t\u00fcketti\u011fi bir veya birden fazla yiyecek maddesinin birle\u015fimi (Id, Kullan\u0131c\u0131Id, Tarih, Saat, \u00d6\u011f\u00fcn Tipi - Kahvalt\u0131, \u00d6\u011fle Yeme\u011fi, Ak\u015fam Yeme\u011fi, Ara \u00d6\u011f\u00fcn).<\/li>\n<li><strong>NutritionLog (Beslenme Kayd\u0131):<\/strong> Bir \u00f6\u011f\u00fcn i\u00e7indeki belirli bir yiyecek maddesinin ve t\u00fcketilen miktar\u0131n\u0131n detay\u0131 (Id, \u00d6\u011f\u00fcnId, YiyecekMaddesiId, Miktar, Birim).<\/li>\n<li><strong>UserGoal (Kullan\u0131c\u0131 Hedefi):<\/strong> Kullan\u0131c\u0131n\u0131n kilo kayb\u0131, kas kazan\u0131m\u0131 gibi beslenme hedefleri ve bu hedeflere ula\u015fmak i\u00e7in gerekli makro besin da\u011f\u0131l\u0131mlar\u0131.<\/li>\n<\/ol>\n<p>Bu varl\u0131klar\u0131 C# s\u0131n\u0131flar\u0131 olarak modelleyebiliriz. \u0130\u015fte birka\u00e7 \u00f6rnek:<\/p>\n<pre><code class=\"language-csharp\">\n\/\/ Models\/User.cs\nnamespace FatAdvisorApi.Models\n{\n    public class User\n    {\n        public int Id { get; set; }\n        public string FirstName { get; set; }\n        public string LastName { get; set; }\n        public string Email { get; set; }\n        public int Age { get; set; }\n        public string Gender { get; set; } \/\/ \"Male\" veya \"Female\"\n        public double HeightCm { get; set; }\n        public double WeightKg { get; set; }\n        public string ActivityLevel { get; set; } \/\/ \"Sedentary\", \"LightlyActive\", etc.\n        public double TargetWeightKg { get; set; }\n\n        \/\/ \u0130li\u015fkisel \u00f6zellikler\n        public ICollection<Meal> Meals { get; set; }\n        public ICollection<UserGoal> Goals { get; set; }\n    }\n}\n\n\/\/ Models\/Meal.cs\nnamespace FatAdvisorApi.Models\n{\n    public class Meal\n    {\n        public int Id { get; set; }\n        public int UserId { get; set; }\n        public DateTime MealDateTime { get; set; }\n        public string MealType { get; set; } \/\/ e.g., \"Breakfast\", \"Lunch\", \"Dinner\", \"Snack\"\n\n        \/\/ \u0130li\u015fkisel \u00f6zellikler\n        public User User { get; set; }\n        public ICollection<NutritionLog> NutritionLogs { get; set; }\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Veritaban\u0131 olarak SQL Server, PostgreSQL veya MySQL gibi ili\u015fkisel bir veritaban\u0131 tercih edebiliriz. .NET Core ekosisteminde, Entity Framework Core (EF Core) bu C# modellerini veritaban\u0131 tablolar\u0131na d\u00f6n\u00fc\u015ft\u00fcrmek ve bu tablolarla etkile\u015fim kurmak i\u00e7in harika bir ara\u00e7t\u0131r. EF Core, kodumuzdan veritaban\u0131 i\u015flemlerini soyutlayarak, SQL sorgular\u0131 yazmak yerine LINQ (Language Integrated Query) kullanarak verilerle \u00e7al\u0131\u015fmam\u0131z\u0131 sa\u011flar.<\/p>\n<p>EF Core'u projemize entegre etmek i\u00e7in gerekli NuGet paketlerini kurmam\u0131z gerekir:<\/p>\n<pre><code class=\"language-csharp\">\ndotnet add package Microsoft.EntityFrameworkCore.SqlServer \/\/ veya .PostgreSQL, .Sqlite\ndotnet add package Microsoft.EntityFrameworkCore.Tools\n<\/pre>\n<p><\/code><\/p>\n<p>Daha sonra, uygulaman\u0131n veritaban\u0131yla nas\u0131l etkile\u015fim kuraca\u011f\u0131n\u0131 tan\u0131mlayan bir <code>DbContext<\/code> s\u0131n\u0131f\u0131 olu\u015fturmal\u0131y\u0131z:<\/p>\n<pre><code class=\"language-csharp\">\n\/\/ Data\/ApplicationDbContext.cs\nusing Microsoft.EntityFrameworkCore;\nusing FatAdvisorApi.Models;\n\nnamespace FatAdvisorApi.Data\n{\n    public class ApplicationDbContext : DbContext\n    {\n        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)\n            : base(options)\n        {\n        }\n\n        public DbSet<User> Users { get; set; }\n        public DbSet<FoodItem> FoodItems { get; set; }\n        public DbSet<Meal> Meals { get; set; }\n        public DbSet<NutritionLog> NutritionLogs { get; set; }\n\n        protected override void OnModelCreating(ModelBuilder modelBuilder)\n        {\n            \/\/ \u0130li\u015fkileri ve k\u0131s\u0131tlamalar\u0131 burada tan\u0131mlayabiliriz\n            modelBuilder.Entity<User>()\n                .HasMany(u => u.Meals)\n                .WithOne(m => m.User)\n                .HasForeignKey(m => m.UserId);\n            \n            \/\/ Di\u011fer ili\u015fkiler...\n        }\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p><code>Startup.cs<\/code> veya .NET 6+ ile <code>Program.cs<\/code> dosyas\u0131nda veritaban\u0131 ba\u011flant\u0131 dizesini yap\u0131land\u0131rmam\u0131z ve <code>ApplicationDbContext<\/code>'i servislere eklememiz gerekecektir:<\/p>\n<pre><code class=\"language-csharp\">\n\/\/ Program.cs (\u00f6rnek .NET 6+)\nusing Microsoft.EntityFrameworkCore;\nusing FatAdvisorApi.Data;\n\nvar builder = WebApplication.CreateBuilder(args);\n\n\/\/ DbContext'i servislere ekleme\nbuilder.Services.AddDbContext<ApplicationDbContext>(options =>\n    options.UseSqlServer(builder.Configuration.GetConnectionString(\"DefaultConnection\")));\n\n\/\/ Di\u011fer servisler ve middleware'ler...\n<\/pre>\n<p><\/code><\/p>\n<p><code>appsettings.json<\/code> dosyam\u0131zda ise ba\u011flant\u0131 dizemizi tan\u0131mlar\u0131z:<\/p>\n<pre><code class=\"language-json\">\n{\n  \"ConnectionStrings\": {\n    \"DefaultConnection\": \"Server=(localdb)\\\\mssqllocaldb;Database=FatAdvisorDb;Trusted_Connection=True;MultipleActiveResultSets=true\"\n  },\n  \/\/ Di\u011fer ayarlar...\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Veritaban\u0131 tablolar\u0131n\u0131 olu\u015fturmak i\u00e7in EF Core Migrations'\u0131 kullanaca\u011f\u0131z. Komut sat\u0131r\u0131ndan a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131rarak ilk migrasyonu olu\u015fturabilir ve veritaban\u0131n\u0131 g\u00fcncelleyebiliriz:<\/p>\n<pre><code class=\"language-csharp\">\ndotnet ef migrations add InitialCreate\ndotnet ef database update\n<\/pre>\n<p><\/code><\/p>\n<p>Bu ad\u0131mlar, FatAdvisor'\u0131n t\u00fcm beslenme verilerini tutarl\u0131, g\u00fcvenli ve kolayca eri\u015filebilir bir \u015fekilde depolamas\u0131n\u0131 sa\u011flayacak sa\u011flam bir veritaban\u0131 altyap\u0131s\u0131 kurmam\u0131za olanak tan\u0131r. Do\u011fru veri modellemesi, uygulaman\u0131n performans\u0131, \u00f6l\u00e7eklenebilirli\u011fi ve en \u00f6nemlisi, yapay zeka mod\u00fcllerinin do\u011fru ve anlaml\u0131 verilerle \u00e7al\u0131\u015fabilmesi i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<div class=\"expert-tip\">\n  Uzman \u0130pucu: Veri modellemesini yaparken, gelecekteki olas\u0131 geni\u015fletmeleri (\u00f6rne\u011fin tarifler, alerjen bilgileri, porsiyon boyutlar\u0131) g\u00f6z \u00f6n\u00fcnde bulundurarak esnek bir yap\u0131 kurmaya \u00e7al\u0131\u015f\u0131n. Bu, ileride yap\u0131lacak de\u011fi\u015fikliklerin maliyetini azaltacakt\u0131r. Ayr\u0131ca, s\u0131k\u00e7a sorgulanan veriler i\u00e7in indekslemeyi unutmay\u0131n!\n<\/div>\n<h2>Yapay Zeka Entegrasyonuna \u0130lk Ad\u0131mlar: Azure OpenAI ile Konu\u015fma Nas\u0131l Ba\u015flar?<\/h2>\n<p>FatAdvisor'\u0131 di\u011fer beslenme takip uygulamalar\u0131ndan ay\u0131ran en \u00f6nemli \u00f6zelliklerden biri, do\u011fal dil i\u015fleme yetenekleri sayesinde kullan\u0131c\u0131larla etkile\u015fim kurabilen ve ak\u0131ll\u0131 \u00f6neriler sunabilen bir yapay zeka ajan\u0131 olmas\u0131d\u0131r. Bu yapay zeka yeteneklerini uygulamaya entegre etmek i\u00e7in, Microsoft Azure OpenAI hizmetlerinden yararlanaca\u011f\u0131z. Azure OpenAI, OpenAI'\u0131n g\u00fc\u00e7l\u00fc dil modelleri olan GPT-3, GPT-4 ve DALL-E gibi modelleri Azure'\u0131n g\u00fcvenlik, kurumsal yetenekleri ve \u00f6l\u00e7eklenebilirli\u011fi ile sunar. Bu b\u00f6l\u00fcmde, FatAdvisor API'mizi Azure OpenAI ile nas\u0131l konu\u015fturaca\u011f\u0131m\u0131z\u0131 ve yapay zeka entegrasyonuna ilk ad\u0131mlar\u0131 nas\u0131l ataca\u011f\u0131m\u0131z\u0131 ke\u015ffedece\u011fiz.<\/p>\n<p>\u00d6ncelikle, bir Azure aboneli\u011finizin olmas\u0131 ve Azure OpenAI hizmetine eri\u015fiminiz bulunmas\u0131 gerekmektedir. Azure portal\u0131nda bir Azure OpenAI kayna\u011f\u0131 olu\u015fturduktan sonra, bir da\u011f\u0131t\u0131m (deployment) olu\u015fturman\u0131z ve bir model (\u00f6rne\u011fin <code>gpt-35-turbo<\/code>) se\u00e7meniz gerekecektir. Bu da\u011f\u0131t\u0131m, API'mizin yapay zeka isteklerini g\u00f6nderece\u011fi endpoint ve anahtarlar\u0131 sa\u011flayacakt\u0131r. API'mizin bu hizmetle ileti\u015fim kurabilmesi i\u00e7in bir API anahtar\u0131na ve endpoint URL'sine ihtiyac\u0131m\u0131z olacak.<\/p>\n<p>FatAdvisor API'sinde Azure OpenAI ile ileti\u015fim kurmak i\u00e7in <code>HttpClient<\/code> s\u0131n\u0131f\u0131n\u0131 kullanabiliriz. Basit bir <code>ChatGPTService<\/code> veya <code>OpenAIService<\/code> s\u0131n\u0131f\u0131 olu\u015fturarak bu entegrasyonu soyutlayabiliriz:<\/p>\n<pre><code class=\"language-csharp\">\n\/\/ Services\/OpenAIService.cs\nusing System.Net.Http;\nusing System.Text;\nusing System.Text.Json;\nusing System.Threading.Tasks;\nusing Microsoft.Extensions.Configuration; \/\/ IConfiguration i\u00e7in\n\nnamespace FatAdvisorApi.Services\n{\n    public class OpenAIService\n    {\n        private readonly HttpClient _httpClient;\n        private readonly IConfiguration _configuration;\n        private readonly string _endpoint;\n        private readonly string _apiKey;\n        private readonly string _deploymentName; \/\/ \u00d6rne\u011fin \"gpt-35-turbo\"\n\n        public OpenAIService(HttpClient httpClient, IConfiguration configuration)\n        {\n            _httpClient = httpClient;\n            _configuration = configuration;\n            _endpoint = _configuration[\"AzureOpenAI:Endpoint\"];\n            _apiKey = _configuration[\"AzureOpenAI:ApiKey\"];\n            _deploymentName = _configuration[\"AzureOpenAI:DeploymentName\"]; \/\/ appsettings.json'dan okunacak\n            _httpClient.DefaultRequestHeaders.Add(\"api-key\", _apiKey);\n        }\n\n        public async Task<string> GetNutritionAdviceAsync(string prompt)\n        {\n            \/\/ Azure OpenAI Chat Completions API i\u00e7in istek URL'si\n            var requestUrl = $\"{_endpoint}openai\/deployments\/{_deploymentName}\/chat\/completions?api-version=2023-05-15\";\n\n            var requestBody = new\n            {\n                messages = new[]\n                {\n                    new { role = \"system\", content = \"You are a helpful nutrition assistant named FatAdvisor. Provide concise and healthy food advice.\" },\n                    new { role = \"user\", content = prompt }\n                },\n                max_tokens = 150, \/\/ Yan\u0131t\u0131n uzunlu\u011funu s\u0131n\u0131rlar\n                temperature = 0.7 \/\/ Yarat\u0131c\u0131l\u0131k seviyesi\n            };\n\n            var jsonContent = new StringContent(\n                JsonSerializer.Serialize(requestBody),\n                Encoding.UTF8,\n                \"application\/json\"\n            );\n\n            var response = await _httpClient.PostAsync(requestUrl, jsonContent);\n\n            if (response.IsSuccessStatusCode)\n            {\n                var responseContent = await response.Content.ReadAsStringAsync();\n                var jsonResponse = JsonDocument.Parse(responseContent);\n                \/\/ Yan\u0131ttan mesaj i\u00e7eri\u011fini \u00e7ekme\n                var messageContent = jsonResponse.RootElement\n                                                .GetProperty(\"choices\")[0]\n                                                .GetProperty(\"message\")\n                                                .GetProperty(\"content\")\n                                                .GetString();\n                return messageContent;\n            }\n            else\n            {\n                var errorContent = await response.Content.ReadAsStringAsync();\n                \/\/ Hata y\u00f6netimini iyile\u015ftirmek \u00f6nemlidir.\n                return $\"API iste\u011fi ba\u015far\u0131s\u0131z oldu: {response.StatusCode} - {errorContent}\";\n            }\n        }\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu <code>OpenAIService<\/code> s\u0131n\u0131f\u0131n\u0131 <code>Program.cs<\/code> dosyam\u0131zda ba\u011f\u0131ml\u0131l\u0131k enjeksiyonu (dependency injection) i\u00e7in kaydedebiliriz:<\/p>\n<pre><code class=\"language-csharp\">\n\/\/ Program.cs\n\/\/ ...\nbuilder.Services.AddHttpClient<OpenAIService>(); \/\/ HttpClient'\u0131 OpenAIService i\u00e7in kaydet\nbuilder.Services.AddScoped<OpenAIService>(); \/\/ OpenAIService'i DI konteynerine ekle\n\/\/ ...\n<\/pre>\n<p><\/code><\/p>\n<p><code>appsettings.json<\/code> dosyam\u0131zda ise Azure OpenAI yap\u0131land\u0131rmas\u0131n\u0131 saklar\u0131z:<\/p>\n<pre><code class=\"language-json\">\n{\n  \"AzureOpenAI\": {\n    \"Endpoint\": \"https:\/\/[your-resource-name].openai.azure.com\/\",\n    \"ApiKey\": \"YOUR_AZURE_OPENAI_KEY\",\n    \"DeploymentName\": \"gpt-35-turbo\" \/\/ Veya kulland\u0131\u011f\u0131n\u0131z modelin da\u011f\u0131t\u0131m ad\u0131\n  },\n  \/\/ ...\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Son olarak, API kontrolc\u00fclerimizde bu servisi kullanarak AI destekli yan\u0131tlar alabiliriz:<\/p>\n<pre><code class=\"language-csharp\">\n\/\/ Controllers\/NutritionController.cs (\u00f6rnek)\nusing Microsoft.AspNetCore.Mvc;\nusing FatAdvisorApi.Services;\nusing System.Threading.Tasks;\n\nnamespace FatAdvisorApi.Controllers\n{\n    [ApiController]\n    [Route(\"[controller]\")]\n    public class NutritionController : ControllerBase\n    {\n        private readonly OpenAIService _openAIService;\n\n        public NutritionController(OpenAIService openAIService)\n        {\n            _openAIService = openAIService;\n        }\n\n        [HttpGet(\"advice\")]\n        public async Task<IActionResult> GetNutritionAdvice([FromQuery] string query)\n        {\n            if (string.IsNullOrWhiteSpace(query))\n            {\n                return BadRequest(\"L\u00fctfen bir beslenme sorgusu sa\u011flay\u0131n.\");\n            }\n\n            var advice = await _openAIService.GetNutritionAdviceAsync(query);\n            return Ok(new { Advice = advice });\n        }\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sayede, kullan\u0131c\u0131lar <code>\/Nutrition\/advice?query=bugun+ne+yemeliyim<\/code> gibi bir istek g\u00f6nderdi\u011finde, Azure OpenAI bu sorguyu i\u015fleyecek ve FatAdvisor ad\u0131na bir yan\u0131t \u00fcretecektir. Bu entegrasyon, FatAdvisor'a do\u011fal dil anlama ve \u00fcretme yetene\u011fi kazand\u0131rarak, kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde zenginle\u015ftirecek ilk ad\u0131md\u0131r. \u0130lerleyen a\u015famalarda, bu yap\u0131y\u0131 kullanarak daha karma\u015f\u0131k sorgular\u0131 i\u015fleyebilir, ki\u015fiselle\u015ftirilmi\u015f tarifler \u00f6nerebilir ve hatta kullan\u0131c\u0131lar\u0131n hedefleri do\u011frultusunda dinamik diyet planlar\u0131 olu\u015fturabiliriz.<\/p>\n<div class=\"expert-tip\">\n  Uzman \u0130pucu: Azure OpenAI modelleri ile etkile\u015fim kurarken \"prompt m\u00fchendisli\u011fi\" kritik \u00f6neme sahiptir. Modellerden daha iyi yan\u0131tlar almak i\u00e7in prompt'lar\u0131n\u0131z\u0131 net, spesifik ve ba\u011flam a\u00e7\u0131s\u0131ndan zengin tutmaya \u00f6zen g\u00f6sterin. Sistem mesajlar\u0131n\u0131 kullanarak modelin ki\u015fili\u011fini ve amac\u0131n\u0131 belirlemek, tutarl\u0131 yan\u0131tlar alman\u0131z\u0131 sa\u011flar.\n<\/div>\n<h3>Mobil ve Web Uyumlulu\u011fu: FatAdvisor Her Cihazda Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz d\u00fcnyas\u0131nda kullan\u0131c\u0131lar, bir uygulamaya farkl\u0131 cihazlardan (ak\u0131ll\u0131 telefonlar, tabletler, diz\u00fcst\u00fc bilgisayarlar) sorunsuz bir \u015fekilde eri\u015fmeyi beklerler. FatAdvisor'\u0131n da geni\u015f bir kitleye ula\u015fabilmesi ve \u00fcst\u00fcn bir kullan\u0131c\u0131 deneyimi sunabilmesi i\u00e7in mobil ve web uyumlulu\u011funa sahip olmas\u0131 hayati \u00f6neme sahiptir. API'mizi .NET Core ile olu\u015fturarak, arka u\u00e7 (backend) taraf\u0131nda zaten platformdan ba\u011f\u0131ms\u0131z bir temel att\u0131k. \u015eimdi s\u0131ra, bu API ile etkile\u015fime girecek olan \u00f6n u\u00e7 (frontend) katman\u0131n\u0131n her cihazda sorunsuz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamakta. Bu, kullan\u0131c\u0131 aray\u00fcz\u00fc (UI) ve kullan\u0131c\u0131 deneyimi (UX) tasar\u0131m\u0131nda responsive (duyarl\u0131) tasar\u0131m prensiplerini benimsemeyi ve potansiyel olarak \u00e7apraz platform mobil geli\u015ftirme teknolojilerini kullanmay\u0131 gerektirir.<\/p>\n<p><strong>Web Uygulamalar\u0131 i\u00e7in Responsive Tasar\u0131m:<\/strong><\/p>\n<p>FatAdvisor'\u0131n bir web aray\u00fcz\u00fc olaca\u011f\u0131n\u0131 varsayarsak, responsive tasar\u0131m, ekran boyutuna g\u00f6re otomatik olarak ayarlanan bir d\u00fczen demektir. Bu, kullan\u0131c\u0131lar\u0131n masa\u00fcst\u00fc bilgisayarda veya ak\u0131ll\u0131 telefonda ayn\u0131 web sitesini ziyaret etti\u011finde farkl\u0131 ama optimize edilmi\u015f bir deneyim ya\u015fad\u0131\u011f\u0131 anlam\u0131na gelir. Bu genellikle HTML, CSS ve JavaScript kullan\u0131larak elde edilir. CSS'in <code>@media<\/code> kurallar\u0131, farkl\u0131 ekran boyutlar\u0131 i\u00e7in farkl\u0131 stil kurallar\u0131 tan\u0131mlamam\u0131za olanak tan\u0131r. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-css\">\n\/* Genel stiller (\u00f6rne\u011fin masa\u00fcst\u00fc i\u00e7in) *\/\nbody {\n    font-family: Arial, sans-serif;\n    margin: 0;\n    padding: 20px;\n}\n\n.container {\n    max-width: 960px;\n    margin: 0 auto;\n    padding: 20px;\n    background-color: #f0f0f0;\n}\n\n.sidebar {\n    width: 25%;\n    float: left;\n    padding-right: 20px;\n}\n\n.main-content {\n    width: 75%;\n    float: left;\n}\n\n\/* K\u00fc\u00e7\u00fck ekranlar i\u00e7in medya sorgusu *\/\n@media (max-width: 768px) {\n    .container {\n        padding: 10px;\n    }\n\n    .sidebar, .main-content {\n        width: 100%; \/* K\u00fc\u00e7\u00fck ekranlarda yan \u00e7ubuk ve ana i\u00e7erik tam geni\u015flikte olsun *\/\n        float: none;\n        padding: 0;\n    }\n\n    .sidebar {\n        margin-bottom: 20px; \/* Yan \u00e7ubuk ile i\u00e7erik aras\u0131na bo\u015fluk b\u0131rak *\/\n    }\n}\n\n\/* \u00c7ok k\u00fc\u00e7\u00fck ekranlar i\u00e7in medya sorgusu (mobil cihazlar) *\/\n@media (max-width: 480px) {\n    body {\n        font-size: 14px;\n    }\n\n    h1 {\n        font-size: 24px;\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte, <code>.sidebar<\/code> ve <code>.main-content<\/code> elementleri masa\u00fcst\u00fcnde yan yana dururken (<code>float: left;<\/code> ile), ekran geni\u015fli\u011fi 768 pikselin alt\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcnde alt alta s\u0131ralan\u0131r (<code>width: 100%; float: none;<\/code>). Bu, web tabanl\u0131 FatAdvisor aray\u00fcz\u00fcn\u00fcn tabletlerde ve mobil cihazlarda daha okunakl\u0131 ve kullan\u0131labilir olmas\u0131n\u0131 sa\u011flar. G\u00f6rsel betimlemelerle anlatacak olursak, masa\u00fcst\u00fcnde men\u00fcn\u00fcn solda oldu\u011fu, i\u00e7eri\u011fin sa\u011fda yer ald\u0131\u011f\u0131 bir d\u00fczen d\u00fc\u015f\u00fcn\u00fcn. Medya sorgusu sayesinde mobil cihazlarda men\u00fc yukar\u0131ya \u00e7\u0131kar ve tam geni\u015flikte g\u00f6sterilir, i\u00e7erik ise men\u00fcn\u00fcn alt\u0131nda yine tam geni\u015flikte s\u0131ralan\u0131r. Bu, kullan\u0131c\u0131lar\u0131n kayd\u0131rma ve yak\u0131nla\u015ft\u0131rma ihtiyac\u0131n\u0131 azaltarak daha do\u011fal bir etkile\u015fim sunar.<\/p>\n<p><strong>Mobil Uygulamalar i\u00e7in \u00c7apraz Platform Geli\u015ftirme:<\/strong><\/p>\n<p>Web uygulamas\u0131n\u0131n yan\u0131 s\u0131ra, FatAdvisor i\u00e7in native mobil bir uygulama deneyimi de sunmak isteyebiliriz. Burada .NET geli\u015ftiricileri i\u00e7in en cazip se\u00e7eneklerden biri <a href=\"https:\/\/dotnet.microsoft.com\/en-us\/apps\/maui\">.NET MAUI (Multi-platform App UI)<\/a>'dir. .NET MAUI, tek bir C# kod taban\u0131 ile iOS, Android, macOS ve Windows i\u00e7in native uygulamalar olu\u015fturman\u0131za olanak tan\u0131r. Bu, ayr\u0131 ayr\u0131 her platform i\u00e7in kod yazmak yerine, geli\u015ftirme s\u00fcrecini \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r ve maliyetleri d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-csharp\">\n\/\/ .NET MAUI'de basit bir UI tan\u0131m\u0131 (XAML)\n<ContentPage xmlns=\"http:\/\/schemas.microsoft.com\/dotnet\/2021\/maui\"\n             xmlns:x=\"http:\/\/schemas.microsoft.com\/winfx\/2009\/xaml\"\n             x:Class=\"FatAdvisor.MauiApp.MainPage\"\n             Title=\"FatAdvisor\">\n\n    <ScrollView>\n        <VerticalStackLayout\n            Padding=\"30,0\"\n            Spacing=\"25\">\n\n            <Image\n                Source=\"dotnet_bot.png\"\n                HeightRequest=\"185\"\n                Aspect=\"AspectFit\"\n                SemanticProperties.Description=\"FatAdvisor Logo\" \/>\n\n            <Label\n                Text=\"Ho\u015f Geldiniz, FatAdvisor'a!\"\n                SemanticProperties.HeadingLevel=\"Level1\"\n                FontSize=\"32\"\n                HorizontalOptions=\"Center\" \/>\n\n            <Button\n                x:Name=\"CounterBtn\"\n                Text=\"Bug\u00fcnk\u00fc \u00d6\u011f\u00fcnlerimi G\u00f6r\"\n                SemanticProperties.Hint=\"Bug\u00fcnk\u00fc \u00f6\u011f\u00fcnlerinizi g\u00f6r\u00fcnt\u00fclemek i\u00e7in t\u0131klay\u0131n\"\n                Clicked=\"OnCounterClicked\"\n                HorizontalOptions=\"Center\" \/>\n\n            <!-- Daha fazla UI eleman\u0131 eklenebilir -->\n        <\/VerticalStackLayout>\n    <\/ScrollView>\n\n<\/ContentPage>\n<\/pre>\n<p><\/code><\/p>\n<p>Bu XAML kodu, .NET MAUI uygulamas\u0131nda basit bir sayfa d\u00fczenini tan\u0131mlar. Bu t\u00fcr bir yakla\u015f\u0131m, FatAdvisor'\u0131n mobil uygulamalar\u0131n\u0131n her platformda tutarl\u0131 bir g\u00f6r\u00fcn\u00fcm ve his sunmas\u0131n\u0131 sa\u011flarken, ayn\u0131 zamanda cihaz\u0131n native \u00f6zelliklerine (kamera, konum, bildirimler vb.) eri\u015fim imkan\u0131 tan\u0131r. \u00d6rne\u011fin, yemek foto\u011fraf\u0131 \u00e7ekme ve bu foto\u011fraflar\u0131 AI modelimize g\u00f6ndererek yemek tan\u0131ma \u00f6zelli\u011fi (gelecekteki a\u015famalar i\u00e7in) native mobil uygulama \u00fczerinden \u00e7ok daha verimli bir \u015fekilde \u00e7al\u0131\u015fabilir.<\/p>\n<p>\u00d6zetle, FatAdvisor'\u0131n farkl\u0131 cihazlarda sorunsuz \u00e7al\u0131\u015fabilmesi i\u00e7in responsive web tasar\u0131m\u0131 prensiplerini ve .NET MAUI gibi \u00e7apraz platform mobil geli\u015ftirme ara\u00e7lar\u0131n\u0131 kullanmak, hem geli\u015ftirme verimlili\u011fini art\u0131racak hem de kullan\u0131c\u0131lara en iyi deneyimi sunacakt\u0131r. API'mizin bu \u00e7e\u015fitli \u00f6n u\u00e7 uygulamalar\u0131yla g\u00fcvenli ve verimli bir \u015fekilde ileti\u015fim kurabilmesi i\u00e7in sa\u011flam bir HTTP ileti\u015fimi ve veri format\u0131 (JSON) kulland\u0131\u011f\u0131m\u0131zdan emin olmal\u0131y\u0131z.<\/p>\n<div class=\"expert-tip\">\n  Uzman \u0130pucu: Tasar\u0131m s\u00fcrecinde \"mobil \u00f6ncelikli\" bir yakla\u015f\u0131m benimsemek, responsive web siteleri geli\u015ftirmek i\u00e7in en etkili yollardan biridir. \u00d6nce en k\u00fc\u00e7\u00fck ekranlar i\u00e7in tasar\u0131m\u0131 tamamlay\u0131n, ard\u0131ndan daha b\u00fcy\u00fck ekranlara do\u011fru geni\u015fletmeler yap\u0131n. Bu, performans ve kullan\u0131c\u0131 deneyimi a\u00e7\u0131s\u0131ndan genellikle daha iyi sonu\u00e7lar verir.\n<\/div>\n<h2>Vaka Analizi: \"FitChef\" Uygulamas\u0131 ve \u00d6l\u00e7eklenebilirlik Dersleri<\/h2>\n<p>Teorik bilgileri peki\u015ftirmek ve ger\u00e7ek d\u00fcnya zorluklar\u0131n\u0131 anlamak i\u00e7in hayali bir vaka analizine dalal\u0131m. \"FitChef\" ad\u0131nda, FatAdvisor'a benzer, yapay zeka destekli bir beslenme ve tarif \u00f6nerme uygulamas\u0131 d\u00fc\u015f\u00fcnelim. FitChef, ba\u015flang\u0131\u00e7ta k\u00fc\u00e7\u00fck bir kullan\u0131c\u0131 kitlesi i\u00e7in olduk\u00e7a ba\u015far\u0131l\u0131 bir \u015fekilde \u00e7al\u0131\u015f\u0131yordu. Kullan\u0131c\u0131lar, g\u00fcnl\u00fck \u00f6\u011f\u00fcnlerini kaydedebiliyor, FitChef'in AI algoritmas\u0131ndan ki\u015fiselle\u015ftirilmi\u015f tarif \u00f6nerileri alabiliyor ve beslenme hedeflerini takip edebiliyorlard\u0131. Uygulama, geli\u015ftiricilerin beklentilerini a\u015fan bir h\u0131zda b\u00fcy\u00fcd\u00fc ve k\u0131sa s\u00fcrede on binlerce aktif kullan\u0131c\u0131ya ula\u015ft\u0131.<\/p>\n<p>Ancak, bu h\u0131zl\u0131 b\u00fcy\u00fcme beraberinde ciddi \u00f6l\u00e7eklenebilirlik sorunlar\u0131n\u0131 getirdi. Uygulama, \u00f6zellikle yo\u011fun saatlerde yava\u015flamaya ba\u015flad\u0131, AI yan\u0131t s\u00fcreleri uzad\u0131 ve veritaban\u0131 ba\u011flant\u0131 hatalar\u0131 s\u0131k\u00e7a ya\u015fan\u0131r oldu. Kullan\u0131c\u0131lar, \"FitChef'in AI'\u0131 donuyor\" veya \"Uygulama \u00e7ok yava\u015f, kaydetti\u011fim \u00f6\u011f\u00fcnler g\u00f6z\u00fckm\u00fcyor\" gibi \u015fikayetlerde bulunmaya ba\u015flad\u0131lar. FitChef ekibi, mevcut mimarilerinin bu ani y\u00fck\u00fc kald\u0131ramad\u0131\u011f\u0131n\u0131 fark etti ve acil bir revizyona gitmek zorunda kald\u0131.<\/p>\n<p><strong>FitChef'in Kar\u015f\u0131la\u015ft\u0131\u011f\u0131 Sorunlar ve \u00c7\u00f6z\u00fcmleri:<\/strong><\/p>\n<ol>\n<li><strong>Veritaban\u0131 Performans\u0131:<\/strong> Ba\u015flang\u0131\u00e7ta tek bir sunucuda \u00e7al\u0131\u015fan ili\u015fkisel veritaban\u0131, artan e\u015f zamanl\u0131 istekleri ve karma\u015f\u0131k sorgular\u0131 kald\u0131ramaz hale geldi. \u00d6zellikle kullan\u0131c\u0131lar\u0131n ge\u00e7mi\u015f beslenme kay\u0131tlar\u0131n\u0131 ve AI'\u0131n besin veritaban\u0131n\u0131 s\u0131k\u00e7a sorgulamas\u0131, kilitlenmelere neden oluyordu.\n<ul>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong> Veritaban\u0131, daha g\u00fc\u00e7l\u00fc bir sunucuya ta\u015f\u0131nd\u0131 ve indeksleme stratejileri optimize edildi. S\u0131k okunan ama nadiren yaz\u0131lan veriler (\u00f6rne\u011fin yiyecek maddeleri listesi) i\u00e7in Redis gibi bir da\u011f\u0131t\u0131k \u00f6nbellek (distributed cache) sistemi entegre edildi. Bu sayede, AI modelinin her defas\u0131nda veritaban\u0131na gitmesi yerine \u00f6nbellekten h\u0131zl\u0131ca veri almas\u0131 sa\u011fland\u0131.<\/li>\n<\/ul>\n<\/li>\n<li><strong>API Katman\u0131 T\u0131kan\u0131kl\u0131\u011f\u0131:<\/strong> .NET Core API'si, gelen t\u00fcm istekleri tek bir monolitik uygulama olarak i\u015flemeye \u00e7al\u0131\u015f\u0131yordu. \u00d6zellikle AI modeline yap\u0131lan \u00e7a\u011fr\u0131lar zaman al\u0131c\u0131 oldu\u011fu i\u00e7in, bu \u00e7a\u011fr\u0131lar di\u011fer API isteklerini bloke etmeye ba\u015flad\u0131.\n<ul>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong> Uygulama, mikroservis mimarisine do\u011fru evriltildi. Kullan\u0131c\u0131 y\u00f6netimi, beslenme takibi ve AI \u00f6nerileri gibi farkl\u0131 i\u015f alanlar\u0131 ayr\u0131 mikroservislere b\u00f6l\u00fcnd\u00fc. AI modeline yap\u0131lan \u00e7a\u011fr\u0131lar ise asenkron bir kuyruk (\u00f6rne\u011fin RabbitMQ veya Azure Service Bus) arac\u0131l\u0131\u011f\u0131yla i\u015flendi. Kullan\u0131c\u0131 bir AI talebi g\u00f6nderdi\u011finde, bu talep kuyru\u011fa at\u0131l\u0131r ve AI servisi arka planda i\u015fi tamamlay\u0131p sonucu kullan\u0131c\u0131ya bildirimle iletir. Bu, ana API'nin h\u0131zl\u0131 yan\u0131t vermesini sa\u011flad\u0131.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Yapay Zeka Servis Y\u00fck\u00fc:<\/strong> FitChef'in AI modeli, \u00f6zellikle ki\u015fiselle\u015ftirilmi\u015f tarif olu\u015fturma gibi yo\u011fun i\u015flemler s\u0131ras\u0131nda y\u00fcksek CPU ve bellek t\u00fcketimine neden oluyordu. Tek bir AI servis \u00f6rne\u011fi bu y\u00fck\u00fc kald\u0131ram\u0131yordu.\n<ul>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong> Azure OpenAI gibi bulut tabanl\u0131 AI servislerine ge\u00e7i\u015f yap\u0131ld\u0131. Bu servisler, talebe g\u00f6re otomatik olarak \u00f6l\u00e7eklenebilme yetene\u011fine sahiptir. Ayr\u0131ca, daha karma\u015f\u0131k ve pahal\u0131 AI model \u00e7a\u011fr\u0131lar\u0131 i\u00e7in bir \"kredilendirme\" veya \"s\u0131n\u0131rlama\" mekanizmas\u0131 (rate limiting) uyguland\u0131, b\u00f6ylece hizmetin k\u00f6t\u00fcye kullan\u0131m\u0131 veya a\u015f\u0131r\u0131 y\u00fcklenmesi engellendi.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Frontend Performans\u0131:<\/strong> Mobil uygulama, API'den \u00e7ok fazla veri \u00e7ekmeye \u00e7al\u0131\u015f\u0131yor ve bu da yava\u015f y\u00fcklenmelere neden oluyordu.\n<ul>\n<li><strong>\u00c7\u00f6z\u00fcm:<\/strong> Mobil uygulamada lazy loading (tembel y\u00fckleme) ve veri paginasyonu (sayfalama) teknikleri uyguland\u0131. Kullan\u0131c\u0131n\u0131n sadece ihtiya\u00e7 duydu\u011fu veriler \u00e7ekildi ve ekran\u0131n tamam\u0131n\u0131 dolduracak \u015fekilde de\u011fil, kayd\u0131rma yapt\u0131k\u00e7a daha fazla veri y\u00fcklendi. G\u00f6rsel optimizasyonlar ve daha k\u00fc\u00e7\u00fck resim boyutlar\u0131 kullan\u0131larak bant geni\u015fli\u011fi kullan\u0131m\u0131 azalt\u0131ld\u0131.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>FitChef'in ya\u015fad\u0131\u011f\u0131 bu deneyim, FatAdvisor projesi i\u00e7in de\u011ferli dersler sunuyor. Daha projenin temellerini atarken, FatAdvisor'\u0131n mimarisini \u00f6l\u00e7eklenebilirli\u011fi g\u00f6z \u00f6n\u00fcnde bulundurarak tasarlamal\u0131y\u0131z. Bu, mod\u00fcler bir API yap\u0131s\u0131, Entity Framework Core ile do\u011fru indekslenmi\u015f bir veritaban\u0131, Azure OpenAI gibi \u00f6l\u00e7eklenebilir bulut servislerini kullanmak ve frontend'i performans odakl\u0131 geli\u015ftirmek anlam\u0131na geliyor. Bu vaka analizi, \"Part 1: Building the Foundation\" b\u00f6l\u00fcm\u00fcnde att\u0131\u011f\u0131m\u0131z ad\u0131mlar\u0131n, gelecekteki b\u00fcy\u00fcme ve ba\u015far\u0131n\u0131n ne kadar \u00f6nemli bir par\u00e7as\u0131 oldu\u011funu vurgulamaktad\u0131r. Do\u011fru temelleri atmak, FatAdvisor'\u0131n FitChef gibi zorluklarla kar\u015f\u0131la\u015fmas\u0131n\u0131 engeller ve sorunsuz bir b\u00fcy\u00fcme sa\u011flar.<\/p>\n<h2>Gelece\u011fe Y\u00f6nelik \u0130pu\u00e7lar\u0131: FatAdvisor'\u0131 Daha G\u00fc\u00e7l\u00fc Hale Nas\u0131l Getirebiliriz?<\/h2>\n<p>FatAdvisor projesinin temellerini atarken, sadece mevcut gereksinimleri kar\u015f\u0131lamakla kalmay\u0131p, gelecekteki b\u00fcy\u00fcmeyi ve geli\u015fimi de destekleyecek \u015fekilde d\u00fc\u015f\u00fcnmek b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Sa\u011flam bir ba\u015flang\u0131\u00e7 yapmak, ilerleyen d\u00f6nemlerde b\u00fcy\u00fck revizyonlar veya performans sorunlar\u0131yla kar\u015f\u0131la\u015fmam\u0131z\u0131 engeller. \u0130\u015fte FatAdvisor'\u0131 daha g\u00fc\u00e7l\u00fc, g\u00fcvenli ve kullan\u0131c\u0131 dostu hale getirmek i\u00e7in d\u00fc\u015f\u00fcnebilece\u011fimiz baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131 ve p\u00fcf noktalar\u0131:<\/p>\n<h3>1. G\u00fcvenlik Katmanlar\u0131n\u0131 Kal\u0131nla\u015ft\u0131r\u0131n:<\/h3>\n<p>Kullan\u0131c\u0131 verileri, \u00f6zellikle sa\u011fl\u0131k ve beslenme bilgileri gibi hassas veriler i\u00e7erdi\u011finde, g\u00fcvenlik en \u00fcst \u00f6ncelik olmal\u0131d\u0131r.<\/p>\n<ul>\n<li><strong>Kimlik Do\u011frulama ve Yetkilendirme (Authentication & Authorization):<\/strong> Kullan\u0131c\u0131lar\u0131n kimliklerini do\u011frulayarak (\u00f6rne\u011fin JWT - JSON Web Tokens ile) ve yaln\u0131zca yetkili olduklar\u0131 kaynaklara eri\u015fmelerini sa\u011flayarak (rol tabanl\u0131 yetkilendirme) API'nizi koruyun. ASP.NET Core Identity veya IdentityServer4 gibi k\u00fct\u00fcphaneler bu konuda size yard\u0131mc\u0131 olabilir.<\/li>\n<li><strong>Veri \u015eifreleme:<\/strong> Hem veritaban\u0131nda depolanan hassas verileri (at rest encryption) hem de API \u00fczerinden iletilen verileri (HTTPS ile in transit encryption) \u015fifreleyin.<\/li>\n<li><strong>Girdi Do\u011frulama ve G\u00fcvenli Kodlama:<\/strong> SQL Enjeksiyonu, XSS (Cross-Site Scripting) gibi yayg\u0131n g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 \u00f6nlemek i\u00e7in t\u00fcm kullan\u0131c\u0131 girdilerini sunucu taraf\u0131nda dikkatlice do\u011frulay\u0131n ve sanitize edin.<\/li>\n<\/ul>\n<h3>2. Performans Optimizasyonu ile H\u0131z Kazan\u0131n:<\/h3>\n<p>Uygulaman\u0131n h\u0131zl\u0131 yan\u0131t vermesi, kullan\u0131c\u0131 memnuniyeti i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<ul>\n<li><strong>Asenkron Programlama (Async\/Await):<\/strong> \u00d6zellikle veritaban\u0131 sorgular\u0131 ve harici API \u00e7a\u011fr\u0131lar\u0131 gibi I\/O yo\u011fun i\u015flemleri asenkron olarak y\u00fcr\u00fcterek API'nizin \u00f6l\u00e7eklenebilirli\u011fini art\u0131r\u0131n. Bu, sunucunun bir iste\u011fi beklerken di\u011fer istekleri i\u015fleyebilmesini sa\u011flar.<\/li>\n<li><strong>\u00d6nbellekleme (Caching):<\/strong> S\u0131k\u00e7a eri\u015filen ancak nadiren de\u011fi\u015fen veriler (\u00f6rne\u011fin yiyecek maddeleri listesi, pop\u00fcler tarifler) i\u00e7in \u00f6nbellekleme kullan\u0131n. Redis gibi da\u011f\u0131t\u0131k bir \u00f6nbellek \u00e7\u00f6z\u00fcm\u00fc, API sunucular\u0131 aras\u0131nda veriyi payla\u015farak performans\u0131 ciddi \u015fekilde art\u0131rabilir.<\/li>\n<li><strong>Veritaban\u0131 \u0130ndekslemesi ve Optimizasyonu:<\/strong> En s\u0131k sorgulanan kolonlara indeksler ekleyin ve karma\u015f\u0131k sorgular\u0131n\u0131z\u0131n performans\u0131n\u0131 analiz ederek optimize edin. Entity Framework Core ile yap\u0131lan sorgular\u0131n SQL \u00e7\u0131kt\u0131s\u0131n\u0131 incelemek, darbo\u011fazlar\u0131 tespit etmede yard\u0131mc\u0131 olabilir.<\/li>\n<\/ul>\n<h3>3. Yapay Zeka Deneyimini Derinle\u015ftirin:<\/h3>\n<p>FatAdvisor'\u0131n AI yeteneklerini daha da geli\u015ftirmek i\u00e7in:<\/p>\n<ul>\n<li><strong>Prompt M\u00fchendisli\u011fi Geli\u015ftirme:<\/strong> Azure OpenAI ile \u00e7al\u0131\u015f\u0131rken, daha spesifik ve ba\u011flam a\u00e7\u0131s\u0131ndan zengin prompt'lar kullanarak daha do\u011fru ve faydal\u0131 yan\u0131tlar elde edin. Kullan\u0131c\u0131n\u0131n ya\u015f\u0131, cinsiyeti, hedefleri gibi ki\u015fisel verileri prompt'a dinamik olarak dahil edin.<\/li>\n<li><strong>Kullan\u0131c\u0131 Geri Bildirimleriyle Modeli E\u011fitme:<\/strong> AI taraf\u0131ndan verilen tavsiyeler hakk\u0131nda kullan\u0131c\u0131 geri bildirimlerini toplay\u0131n. Bu geri bildirimleri, AI modelinin performans\u0131n\u0131 art\u0131rmak ve daha iyi ki\u015fiselle\u015ftirilmi\u015f \u00f6neriler sunmak i\u00e7in kullan\u0131n.<\/li>\n<li><strong>G\u00f6r\u00fcnt\u00fc Tan\u0131ma Entegrasyonu (Gelecek Plan\u0131):<\/strong> Kullan\u0131c\u0131lar\u0131n yedikleri yeme\u011fin foto\u011fraf\u0131n\u0131 \u00e7ekerek AI'\u0131n yeme\u011fi tan\u0131mas\u0131n\u0131 ve besin de\u011ferlerini otomatik olarak kaydetmesini sa\u011flay\u0131n. Azure Computer Vision veya \u00f6zel bir makine \u00f6\u011frenimi modeli bu konuda kullan\u0131labilir.<\/li>\n<\/ul>\n<h3>4. \u0130zleme ve G\u00fcnl\u00fc\u011fe Kaydetme (Monitoring & Logging):<\/h3>\n<p>Uygulaman\u0131n performans\u0131n\u0131 ve sa\u011fl\u0131\u011f\u0131n\u0131 s\u00fcrekli izlemek, sorunlar\u0131 proaktif olarak tespit etmek ve \u00e7\u00f6zmek i\u00e7in \u00f6nemlidir.<\/p>\n<ul>\n<li><strong>Application Insights:<\/strong> Azure Application Insights gibi ara\u00e7lar\u0131 kullanarak uygulaman\u0131z\u0131n performans metriklerini, hata oranlar\u0131n\u0131 ve kullan\u0131c\u0131 davran\u0131\u015flar\u0131n\u0131 izleyin.<\/li>\n<li><strong>Yap\u0131land\u0131r\u0131lm\u0131\u015f G\u00fcnl\u00fckleme:<\/strong> Serilog veya NLog gibi k\u00fct\u00fcphanelerle yap\u0131land\u0131r\u0131lm\u0131\u015f g\u00fcnl\u00fckleme (structured logging) kullanarak, loglar\u0131 okunabilir ve sorgulanabilir bir formatta toplay\u0131n. Bu, hatalar\u0131n tespiti ve performans sorunlar\u0131n\u0131n analizi i\u00e7in kritik \u00f6neme sahiptir.<\/li>\n<\/ul>\n<p>Bu ipu\u00e7lar\u0131, FatAdvisor projesinin sadece bug\u00fcn de\u011fil, gelecekte de ba\u015far\u0131l\u0131 ve s\u00fcrd\u00fcr\u00fclebilir olmas\u0131n\u0131 sa\u011flayacak sa\u011flam bir zemin olu\u015fturman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Her birini uygularken, projenin mevcut \u00f6l\u00e7e\u011fini, b\u00fct\u00e7esini ve ekibin yetkinliklerini g\u00f6z \u00f6n\u00fcnde bulundurarak dengeli bir yakla\u015f\u0131m sergilemek \u00f6nemlidir.<\/p>\n<h2>Sonu\u00e7: FatAdvisor ile Sa\u011fl\u0131kl\u0131 Ya\u015fama \u0130lk Ad\u0131m<\/h2>\n<p>Bu makale serisinin ilk b\u00f6l\u00fcm\u00fcnde, \"Building FatAdvisor: A .NET Nutrition AI Agent\" projesinin temel ta\u015flar\u0131n\u0131 bir araya getirdik. Sa\u011fl\u0131kl\u0131 beslenme al\u0131\u015fkanl\u0131klar\u0131 edinmenin zorluklar\u0131ndan yola \u00e7\u0131karak, yapay zeka destekli bir beslenme asistan\u0131n\u0131n bu alandaki potansiyelini vurgulad\u0131k. .NET Core ile sa\u011flam ve \u00f6l\u00e7eklenebilir bir API katman\u0131 olu\u015fturmay\u0131, beslenme verilerini mant\u0131kl\u0131 bir \u015fekilde modelleyerek Entity Framework Core ile veritaban\u0131na kaydetmeyi \u00f6\u011frendik. Ayr\u0131ca, Azure OpenAI gibi g\u00fc\u00e7l\u00fc bulut tabanl\u0131 yapay zeka hizmetlerini kullanarak FatAdvisor'\u0131n do\u011fal dil i\u015fleme yeteneklerini nas\u0131l kazand\u0131raca\u011f\u0131m\u0131z\u0131n ilk ad\u0131mlar\u0131n\u0131 att\u0131k. Mobil ve web uyumlulu\u011funun \u00f6nemine de\u011finerek, responsive tasar\u0131m ve .NET MAUI gibi teknolojilerin FatAdvisor'\u0131n her cihazda sorunsuz \u00e7al\u0131\u015fmas\u0131n\u0131 nas\u0131l sa\u011flayabilece\u011fini inceledik. FitChef vaka analizi ile, \u00f6l\u00e7eklenebilirlik sorunlar\u0131n\u0131n ger\u00e7ek d\u00fcnyadaki etkilerini ve bu sorunlar\u0131n do\u011fru mimari se\u00e7imlerle nas\u0131l a\u015f\u0131labilece\u011fini g\u00f6rd\u00fck. Son olarak, FatAdvisor'\u0131 daha g\u00fc\u00e7l\u00fc, g\u00fcvenli ve performansl\u0131 hale getirmek i\u00e7in gelece\u011fe y\u00f6nelik \u00f6nemli ipu\u00e7lar\u0131 ve p\u00fcf noktalar\u0131n\u0131 ele ald\u0131k.<\/p>\n<p>Bu ilk a\u015fama, FatAdvisor'\u0131n vizyonunu ger\u00e7e\u011fe d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in at\u0131lan kritik bir ad\u0131md\u0131r. Bir beslenme AI arac\u0131s\u0131n\u0131n sadece bir fikir olmaktan \u00e7\u0131k\u0131p, somut bir teknolojik temele oturmas\u0131, projenin ilerleyen b\u00f6l\u00fcmlerinde daha karma\u015f\u0131k yapay zeka modelleri, ki\u015fiselle\u015ftirilmi\u015f tarif \u00f6nerileri ve geli\u015fmi\u015f kullan\u0131c\u0131 deneyimleri eklememiz i\u00e7in sa\u011flam bir zemin haz\u0131rlar. Unutmay\u0131n ki, herhangi bir b\u00fcy\u00fck yaz\u0131l\u0131m projesinde oldu\u011fu gibi, temel ne kadar sa\u011flam olursa, \u00fczerine in\u015fa edece\u011finiz katlar da o kadar g\u00fc\u00e7l\u00fc ve dayan\u0131kl\u0131 olacakt\u0131r. FatAdvisor ile bireylerin sa\u011fl\u0131kl\u0131 beslenme hedeflerine ula\u015fmalar\u0131na yard\u0131mc\u0131 olmak i\u00e7in \u00e7\u0131kt\u0131\u011f\u0131m\u0131z bu yolculukta, teknoloji ve yapay zekan\u0131n d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fc g\u00fcc\u00fcn\u00fc en iyi \u015fekilde kullanmay\u0131 hedefliyoruz. \u0130kinci b\u00f6l\u00fcmde, bu temel \u00fczerine in\u015fa edece\u011fimiz daha ileri yapay zeka entegrasyonlar\u0131n\u0131, \u00f6zel beslenme algoritmalar\u0131n\u0131 ve zengin kullan\u0131c\u0131 aray\u00fcz\u00fc \u00f6zelliklerini ke\u015ffedece\u011fiz. Sa\u011fl\u0131kl\u0131 ya\u015fama giden yolda FatAdvisor, en g\u00fcvenilir dijital orta\u011f\u0131n\u0131z olmaya aday.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>1. FatAdvisor gibi bir AI beslenme ajan\u0131 i\u00e7in neden .NET tercih edilmeli?<\/strong><\/p>\n<p>.NET, y\u00fcksek performans, g\u00fc\u00e7l\u00fc g\u00fcvenlik \u00f6zellikleri ve kurumsal d\u00fczeyde \u00f6l\u00e7eklenebilirlik sunan bir platformdur. \u00d6zellikle C# dili, geli\u015ftirme h\u0131z\u0131 ve kod bak\u0131m\u0131 a\u00e7\u0131s\u0131ndan olduk\u00e7a avantajl\u0131d\u0131r. Ayr\u0131ca, Azure OpenAI gibi Microsoft ekosistemindeki di\u011fer bulut servisleriyle entegrasyonu kolayd\u0131r, bu da AI destekli bir uygulama geli\u015ftirmek i\u00e7in ideal bir ortam sa\u011flar. Geni\u015f geli\u015ftirici toplulu\u011fu ve zengin k\u00fct\u00fcphane deste\u011fi de \u00f6nemli avantajlard\u0131r.<\/p>\n<p><strong>2. Entity Framework Core (EF Core) kullanmak zorunlu mu? Alternatifleri nelerdir?<\/strong><\/p>\n<p>EF Core, .NET uygulamalar\u0131nda ili\u015fkisel veritabanlar\u0131yla \u00e7al\u0131\u015fmak i\u00e7in olduk\u00e7a pop\u00fcler ve g\u00fc\u00e7l\u00fc bir ORM arac\u0131d\u0131r. Kod ve veritaban\u0131 aras\u0131nda bir k\u00f6pr\u00fc g\u00f6revi g\u00f6rerek geli\u015ftirme s\u00fcrecini h\u0131zland\u0131r\u0131r ve SQL sorgular\u0131 yazma ihtiyac\u0131n\u0131 azalt\u0131r. Ancak zorunlu de\u011fildir. Alternatif olarak, Dapper gibi daha hafif bir mikro-ORM kullanabilir veya ADO.NET ile do\u011frudan SQL sorgular\u0131 yazarak veritaban\u0131yla etkile\u015fim kurabilirsiniz. Se\u00e7im, projenin b\u00fcy\u00fckl\u00fc\u011f\u00fcne, performans gereksinimlerine ve ekibin deneyimine ba\u011fl\u0131d\u0131r.<\/p>\n<p><strong>3. Kullan\u0131c\u0131 verileri (beslenme al\u0131\u015fkanl\u0131klar\u0131, ki\u015fisel bilgiler) FatAdvisor'da ne kadar g\u00fcvende olacak?<\/strong><\/p>\n<p>Kullan\u0131c\u0131 verilerinin g\u00fcvenli\u011fi FatAdvisor i\u00e7in en y\u00fcksek \u00f6nceliktir. Uygulama, hassas verileri korumak i\u00e7in sekt\u00f6r standartlar\u0131n\u0131 ve en iyi uygulamalar\u0131 benimsemelidir: HTTPS \u00fczerinden g\u00fcvenli ileti\u015fim, JWT tabanl\u0131 kimlik do\u011frulama, veritaban\u0131nda \u015fifreleme (hem depolanan hem de iletilen veriler i\u00e7in) ve GDPR\/KVKK gibi yerel d\u00fczenlemelere uygunluk sa\u011flanmal\u0131d\u0131r. Ayr\u0131ca, SQL enjeksiyonu ve XSS gibi yayg\u0131n g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 girdi do\u011frulama mekanizmalar\u0131 titizlikle uygulanmal\u0131d\u0131r.<\/p>\n<p><strong>4. FatAdvisor'\u0131n AI yeteneklerini daha da geli\u015ftirmek i\u00e7in neler yap\u0131labilir?<\/strong><\/p>\n<p>AI yeteneklerini geli\u015ftirmek i\u00e7in bir\u00e7ok yol vard\u0131r. Azure OpenAI ile daha geli\u015fmi\u015f prompt m\u00fchendisli\u011fi teknikleri kullanarak modelin yan\u0131t kalitesini art\u0131rabilirsiniz. Ayr\u0131ca, kullan\u0131c\u0131 geri bildirimleriyle AI modelini s\u00fcrekli olarak fine-tune edebilir veya \u00f6zel makine \u00f6\u011frenimi modelleri (\u00f6rne\u011fin, yemek foto\u011fraf\u0131 tan\u0131ma i\u00e7in Computer Vision modelleri) entegre edebilirsiniz. Ki\u015fiselle\u015ftirilmi\u015f tarif \u00f6nerileri, beslenme eksiklikleri tespiti ve davran\u0131\u015fsal tavsiyeler sunmak i\u00e7in daha karma\u015f\u0131k algoritmalar ve veri analizleri geli\u015ftirilebilir.<\/p>\n<p><strong>5. FatAdvisor projesinin bir sonraki a\u015famas\u0131nda bizi neler bekliyor?<\/strong><\/p>\n<p>Bu makale serisinin ikinci b\u00f6l\u00fcm\u00fcnde, FatAdvisor'\u0131n temelini daha da sa\u011flamla\u015ft\u0131rarak ileri seviye \u00f6zelliklere odaklanaca\u011f\u0131z. Bu, b\u00fcy\u00fck dil modelleri ile daha derin entegrasyonlar, makine \u00f6\u011frenimi tabanl\u0131 ki\u015fiselle\u015ftirilmi\u015f beslenme \u00f6neri sistemlerinin geli\u015ftirilmesi, g\u00f6r\u00fcnt\u00fc tan\u0131ma yeteneklerinin eklenmesi ve kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fcn (web\/mobil) daha interaktif ve zengin hale getirilmesi gibi konular\u0131 i\u00e7erebilir. Ayr\u0131ca, kullan\u0131c\u0131lar\u0131n sa\u011fl\u0131k hedeflerine ula\u015fmalar\u0131na yard\u0131mc\u0131 olacak ek ara\u00e7lar ve \u00f6zellikler de ke\u015ffedilecektir.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ki\u015fiselle\u015ftirilmi\u015f beslenme dan\u0131\u015fmanl\u0131\u011f\u0131na eri\u015fmek ve sa\u011fl\u0131kl\u0131 ya\u015fam hedeflerinize ula\u015fmak karma\u015f\u0131k olabilir. \u0130\u015fte tam bu noktada, yapay zeka destekli&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1342],"tags":[],"class_list":{"0":"post-31937","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ai","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>FatAdvisor: .NET Beslenme AI Arac\u0131s\u0131 Temelleri Nas\u0131l At\u0131l\u0131r?<\/title>\n<meta name=\"description\" content=\"Ki\u015fiselle\u015ftirilmi\u015f beslenme dan\u0131\u015fmanl\u0131\u011f\u0131na eri\u015fmek ve sa\u011fl\u0131kl\u0131 ya\u015fam hedeflerinize ula\u015fmak karma\u015f\u0131k olabilir. \u0130\u015fte tam bu noktada, yapay zeka destekli bir beslenme asistan\u0131 olan FatAdvisor projesinin temellerini atarak bu zorluklar\u0131n \u00fcstesinden nas\u0131l gelece\u011fimizi ke\u015ffedeceksiniz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FatAdvisor: .NET Beslenme AI Arac\u0131s\u0131 Temelleri Nas\u0131l At\u0131l\u0131r?\" \/>\n<meta property=\"og:description\" content=\"Ki\u015fiselle\u015ftirilmi\u015f beslenme dan\u0131\u015fmanl\u0131\u011f\u0131na eri\u015fmek ve sa\u011fl\u0131kl\u0131 ya\u015fam hedeflerinize ula\u015fmak karma\u015f\u0131k olabilir. \u0130\u015fte tam bu noktada, yapay zeka destekli bir beslenme asistan\u0131 olan FatAdvisor projesinin temellerini atarak bu zorluklar\u0131n \u00fcstesinden nas\u0131l gelece\u011fimizi ke\u015ffedeceksiniz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-15T16:32:05+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"32 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"FatAdvisor: .NET Beslenme AI Arac\u0131s\u0131 Temelleri Nas\u0131l At\u0131l\u0131r?\",\"datePublished\":\"2025-10-15T16:32:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/\"},\"wordCount\":5462,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"AI\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/\",\"name\":\"FatAdvisor: .NET Beslenme AI Arac\u0131s\u0131 Temelleri Nas\u0131l At\u0131l\u0131r?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-15T16:32:05+00:00\",\"description\":\"Ki\u015fiselle\u015ftirilmi\u015f beslenme dan\u0131\u015fmanl\u0131\u011f\u0131na eri\u015fmek ve sa\u011fl\u0131kl\u0131 ya\u015fam hedeflerinize ula\u015fmak karma\u015f\u0131k olabilir. \u0130\u015fte tam bu noktada, yapay zeka destekli bir beslenme asistan\u0131 olan FatAdvisor projesinin temellerini atarak bu zorluklar\u0131n \u00fcstesinden nas\u0131l gelece\u011fimizi ke\u015ffedeceksiniz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FatAdvisor: .NET Beslenme AI Arac\u0131s\u0131 Temelleri Nas\u0131l At\u0131l\u0131r?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"FatAdvisor: .NET Beslenme AI Arac\u0131s\u0131 Temelleri Nas\u0131l At\u0131l\u0131r?","description":"Ki\u015fiselle\u015ftirilmi\u015f beslenme dan\u0131\u015fmanl\u0131\u011f\u0131na eri\u015fmek ve sa\u011fl\u0131kl\u0131 ya\u015fam hedeflerinize ula\u015fmak karma\u015f\u0131k olabilir. \u0130\u015fte tam bu noktada, yapay zeka destekli bir beslenme asistan\u0131 olan FatAdvisor projesinin temellerini atarak bu zorluklar\u0131n \u00fcstesinden nas\u0131l gelece\u011fimizi ke\u015ffedeceksiniz.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/","og_locale":"tr_TR","og_type":"article","og_title":"FatAdvisor: .NET Beslenme AI Arac\u0131s\u0131 Temelleri Nas\u0131l At\u0131l\u0131r?","og_description":"Ki\u015fiselle\u015ftirilmi\u015f beslenme dan\u0131\u015fmanl\u0131\u011f\u0131na eri\u015fmek ve sa\u011fl\u0131kl\u0131 ya\u015fam hedeflerinize ula\u015fmak karma\u015f\u0131k olabilir. \u0130\u015fte tam bu noktada, yapay zeka destekli bir beslenme asistan\u0131 olan FatAdvisor projesinin temellerini atarak bu zorluklar\u0131n \u00fcstesinden nas\u0131l gelece\u011fimizi ke\u015ffedeceksiniz.","og_url":"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-15T16:32:05+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"32 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"FatAdvisor: .NET Beslenme AI Arac\u0131s\u0131 Temelleri Nas\u0131l At\u0131l\u0131r?","datePublished":"2025-10-15T16:32:05+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/"},"wordCount":5462,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["AI"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/","url":"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/","name":"FatAdvisor: .NET Beslenme AI Arac\u0131s\u0131 Temelleri Nas\u0131l At\u0131l\u0131r?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-15T16:32:05+00:00","description":"Ki\u015fiselle\u015ftirilmi\u015f beslenme dan\u0131\u015fmanl\u0131\u011f\u0131na eri\u015fmek ve sa\u011fl\u0131kl\u0131 ya\u015fam hedeflerinize ula\u015fmak karma\u015f\u0131k olabilir. \u0130\u015fte tam bu noktada, yapay zeka destekli bir beslenme asistan\u0131 olan FatAdvisor projesinin temellerini atarak bu zorluklar\u0131n \u00fcstesinden nas\u0131l gelece\u011fimizi ke\u015ffedeceksiniz.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/fatadvisor-net-beslenme-ai-aracisi-temelleri-nasil-atilir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FatAdvisor: .NET Beslenme AI Arac\u0131s\u0131 Temelleri Nas\u0131l At\u0131l\u0131r?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31937","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31937"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31937\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31937"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}