Oral Health Tracker: günlük rutin ve hedef takibi

Ağız ve diş sağlığı rutinlerini kaydetmek, hedefleri takip etmek ve ilerlemeyi görmek için geliştirdiğim Next.js ve .NET uygulaması.

  • Next.js
  • .NET 8
  • SQL Server
  • Clean Architecture
Canlı demoyu aç
Oral Health Tracker: günlük rutin ve hedef takibi ekran görüntüsü

Oral Health Tracker, diş fırçalama, diş ipi ve gargara gibi günlük rutinleri kaydetmek için geliştirdiğim bir uygulama. Kullanıcı bir aktivitenin zamanını ve süresini ekleyebiliyor, not tutabiliyor ve kendi hedeflerini belirleyebiliyor. Projeyi geliştirirken Clean Architecture ile iş kurallarını düzenlemeye odaklandım.

Kayıtlardan ilerleme takibine

Aktiviteler haftalık ve aylık grafiklerde görülebiliyor. Hedefler, tamamlanan kayıtlarla karşılaştırılıyor; hatırlatıcılar ise kullanıcının seçtiği gün ve saatlere göre ayarlanabiliyor.

Örneğin haftada 14 kayıt hedefleyen bir kullanıcı 12 aktivite tamamladıysa oran yaklaşık %85,7 oluyor. Art arda kayıt tutulan günler de ayrıca izleniyor. Buradaki grafikler kullanıcının girdiği aktiviteleri özetliyor.

İş kurallarını ayırmak

Sunucuda API, Business, DataAccess, Core ve Entity katmanlarını kullandım. Aktivite ekleme, art arda gün hesabı ve rapor oluşturma işlemlerini ayrı kullanım senaryoları olarak düzenledim. Veri erişiminde repository ve Unit of Work yapısı var.

Temel modeller kullanıcı, aktivite, hedef ve hatırlatıcı. Aktiviteler kullanıcıyla ve ilgili hedefle ilişkilendiriliyor. Kullanıcı senaryolarını, işlem sırasını ve model ilişkilerini UML diyagramlarıyla da belgeledim.

Kullandığım araçlar

Arayüz Next.js ve JavaScript ile hazırlanıyor. Grafiklerde Chart.js, tarih işlemlerinde date-fns, formlarda React Hook Form kullanılıyor. Backend'de ASP.NET Core 8, Entity Framework Core ve SQL Server yer alıyor; doğrulama FluentValidation üzerinden yapılıyor.

Aktivite listesi sayfalı, grafik verileri ihtiyaç olduğunda yükleniyor. İş kuralları için xUnit, API testleri için WebApplicationFactory ve bağımlılıkları taklit etmek için Moq kullandım.

Canlı demoyu incele.