Skip to content

Instantly share code, notes, and snippets.

@mcihad
Last active June 22, 2026 14:25
Show Gist options
  • Select an option

  • Save mcihad/5e96591b60b4df355c506413fe48aa9e to your computer and use it in GitHub Desktop.

Select an option

Save mcihad/5e96591b60b4df355c506413fe48aa9e to your computer and use it in GitHub Desktop.
test.md
Şimdi seninle bir projeye başlayacağız. Projemizde dotnet core 10 ve postgresql kullanacağız. Bu projemizin adı Turbohesap ve bu çözüm şimdilik 3 proje içerecek Turbohesap.Shared(Bu proje CQRS veya DTO modellerini ve servis arayüzlerini içerecek), Turbohesap.Api(Bu proje api projemiz ve dotnet core api projesi olacak, herhangi bir mimari kullanmayacağız ve dizin sistemi ile kurgulayacağız)
Turbohesap.Web(Bu proje Blazor web arayüzü projemiz olacak ve Herhangi bir mimari falan içermeyecek).
1-Projemizin arayüz dili komple türkçe olacak, kodmala dili ise ingilizce olacak(Tüm entity,field,function veritabanı,tablo,field isimleri)
2-Küresel hata yakalama middleare olacak ve bu middleware yakaladığı 500 hatalarını url,ip,tarih,zaman,user-agent,headers,hata kodu,satır numarası,dosya adı,tam hata açıklaması,tekrar sayısı,hash değeri ve gerekli tüm bilgiler ile error_logs tablosuna yazacak ve bu tarz hatalar her zaman {"detail":"message"} şeklinde geriye dönecek ve bunun modeli de olacak
3-Audit işlemleri için audit.net kütüphanesi kullanılacak ve entityframework seviyesinde audit işlemleri yakalanacak ve audit_logs tablosuna yazılacak. tabloda id,ip,tarih,saat,entity type,entity id,işlem türü,değişen alanlar(jsonb tipinde alana yazılacak) ve sorgulaması kolay ve hızlı olsun diye gerekli tüm alanlar yazılacak. audit ayarlarını düzgün yapman gerek ileride bunu posgresql veritabanına çevirebiliriz
4-Entity konfigurasyonları için her entity ayrı konfigurasyon tutacaksın ve efcore üzerinde bu ayarları register edeceksin
5-Doğrulama için fluent validation kullanacaksın ve bunun blazor tarafında da geçerli olması gerkiyor gerekli ayarlamaları yapacaksın
6-CQRs pattern ve event bus için volverine kullanacaksın
7-Log ve Hata dayanım mekanizması için gerekli ayarlamaları ve kütüphaneleri kullanacaksın
8-mapping işlemleri için Mapster kullanacaksın, her entity için özel mapping dosyası olacak ve bir de ana mapping entry point olacak.
9-telemetry işlemleri için open telemetry kullanacaksın.
10-Mnatıksal tüm işlemler servis katmanında transactional olarak yapılacak. ve performans için asnotracking gibi methodları kullanmayı ihmal etmeyeceksin
11-api katmanında controller kullanılacak ve minimal api olmayacak, api dökümanlarında o api dökümanına hangi rollerin erişebileceği açıkça yazacak(Rol isimleri static bir sınıfda ve shared içinde tutulacak)
12-Api arayüzü için scalar kullanacaksın. ve api açıklamalarında o api uç noktasına hangi rollerin erişebileceği yazacak. ayrıca api versioning yapılacak ve tüm uç noktalar standardize olacak
13-Tüm listeleme kayıtları muhakkak paginasyon ile yapılacak ve page size parametresi parametrik olacak.
14-Veri doğrulama işlemleri iki tarafta da düzgün yürümesi için shared içinde tutulacak ki tutarsızlık olmasın
15-Program.cs minimal tutulacak
16-Blazor tarafında kesinlikle standart bootstrap sistemini kullanmayacağız tamamen tokenize edilebilir kendi tema sistemimizi kurgulayacağız. Tüm bileşenler bu tokenler ile tasarlanacak ve token değiştiği zaman bu bileşen ondan etkileniyorsa o da düzelecek otomatik olarak, color palette kullanacağız,radius,shadow,size,font Family,FontSize,Renk ve diğer tüm parametreler tokenize edilecek ve hem dark mode hemde light mode için ayrı ayrı kurgulanacak.
17-MOBILE FIRST en önemli kısmı bu işin arayüz tasarlanırken mobile first olarak tasarlanacak
18-Blazor projesi içerisinde bir vite projesi oluşturulacak ve tailwind desteği de eklenecek ve typescript kullanacak.
19-Bileşenler Base bileşenden türeyecek ve temel olan sınıflar burada olacak(size radius vesaire(bileşene göre))
20-Tailwind sınıfları compile edilerek oluşturulduğu için sınıf adı açıkça yazılacak c# ve razor kodlarında "p-${padding}" şeklinde string interpolasyon üretimleri kesinlikle yasak
21-derlenen tailwind ve typescript kodları wwwroot altında turbohesap.css ve turbohesap.js olarak derlenecek
22-frontend dosyaları Frontend dizininde tutulacak ve themes/{token ve diğer veriler} css/{component}.css ve scripts/{component}.ts şeklinde tutulacak ve hepsi tek bir entrypoint içinde birleşerek derlenecek
23-Blazor dizin yapısında Services,Components,Pages ve gerekli diğer dizinler olacak
24-Blazor sayfa url adresleri tıpkı api adresleri gibi olacak ama başında /api/{version} olmayacak
25-Bileşenler Components/{component}/{component_files}.{razor,cs} dizin yapısında olacak
26-Sayfalar Pages/{page}/{Page-variant(detail or index)}.razor şeklinde olacak
27-Servisler ise httpservice factory ile kurulacak ve token ekleme mekanizması olacak header kısmında
28-kök sayfa kullanıcı giriş kontrolü yapacak eğer kullanıcı girişi yoksa,token süresi bitmişse /login adresine yönlendirecek yoksa /dahsboard adresine yönlendirecek
29-Tasarım ise şu şekilde olacak. bu bir tasarım şablonu olacak ve biz bu şablonu kullanarak tüm uygulamalarımızı geliştireceğiz. DESIGN.md içerisinde sayfa yerleşimleri ,token sistemi ,renk paletleri, sayfa yerleşimi,
bileşenlere ait standartlar, dialog panel accordion gibi bileşenlerin başlık stilleri,sekme stilleri ve diğer tüm ssistem DESIGN.md içerisinde o kadar harika yazılacak ki sadece design.md kullanarak bu tasarım sisteminin birebir aynısını kurabileceğiz. kusursuz olacak. genel yerleşime dair bilgileri vereyim. solda sidebar olacak, sidebar menü öğeleri aranabilir veya gruplanabilir ve ağaç yapısında olacak, sidebar kapanabilir hamburger şeklinde olacak ve sidebar başlık kısmının solunda bir app ikonu olacak ve tıklayınca microsoft online ofis ürünleri gibi veya ubuntu unity desktop tarzında bir application penceresi açılacak ve diğer applikasyonlar burada grid veya liste şeklinde listelenecek, sidebar en altında help ve feedback butonu olacak,sidebar dikey olara fixed olacak, sağ taraf ise şu şekilde olacak, üstte appbar olacak. appbar sol tarafında breadcrumb olacak, sağda tema özelleştirme,bildirimler,gece gündüz modu ve kullanıcı ikonları olacak, ortada bir arama kutusu olacak ve tıklayınca CommandLauncher açılacak. içerik kısmı ise şu şekilde olacak, burada bir page wrapper olacak ve her sayfa bu wrapper içerisinde gösterilecek, bu wrapper orta boşluğu tam doldurmalı çünkü ileride harita falan ekleyince padding koymayacağız ama normal sayfalarda sağ sol ve üstte biraz padding olacak. bu sarmalayıcının altında opsiyonel footer olacak ve bu footer fixed olabilecek ve içeriği sayfaya göre değişebilecek, bu footer sidebar footer ile aynı yükseklikte olacak. sayfa üst solda sayfa başlığı sağda ise action buton ve dropdown menüleri olacak, her zaman sağ altta bir ai chat ikonu olacak. temalar özelleştirilebilir olacak ve token tabanlı olacak,renkler yerleşim aralıkları,font family,font size,scale,radius,shadow gibi tüm parametreler özelleştirilebilecek. unutma bunları hem yapacaksın hem de o kadar ayrıntılı şekilde DESIGN.md içerisine yazacaksın ki diğer ajanlarla da yazsak asla hata olmayacak. Sistemin tamamında bileşen kullanmayacağız çünkü bu tek serferlik bir proje ama her şey token ile tema destekli olacak. sadece çok tekrar edenler(mesela input toast dialog modal drawer datatable gibi), AppBar,Navbar,Sidebar gibi bileşenlere gerek yok. Tüm sistem sekme sistemi ile çalışacak. soldan bir menü öğesine tıkladığımızda bu sayfa eğer açıksa o sekmeye odaklanacak yoksa o sayfayı sekme olarak açacak. ortada sekme ile yönetilecek sistem anlayacağın ama sekmesiz tamamen bağımsız sayfalar da olabilecek
Ayrıca AGENTS.md dosyasını da detaylıca oluştur ve sistemi anlat. burada mesela(bu sadece basit bir örnek) bir varlık oluşturma Entity->EntityConfiguration->DTO->Mapping->Validation->ServiceInterface and Service->Controller->Blazor Page şeklinde olacak. bu şekilde detaylı tarifler vereceksin.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment