Skip to content

Kotlin ve Jetpack Compose kullanılarak modern Android standartlarında geliştirilmiş bir hatırlatma uygulamasıdır. Doğum günleri, yıldönümleri, isim günleri ve diğer özel günleri unutmamanız için tasarlanmıştır.

Notifications You must be signed in to change notification settings

MRsuffixx/BirthDayApp

Repository files navigation

🎂 BirthDay App - Etkinlik Hatırlatma Uygulaması

Kotlin ve Jetpack Compose kullanılarak modern Android standartlarında geliştirilmiş bir hatırlatma uygulamasıdır.
Doğum günleri, yıldönümleri, isim günleri ve diğer özel günleri unutmamanız için tasarlanmıştır.

📸 Fotoğraflar

image1 image2

📱 Özellikler

Temel İşlevler

  • Birden Fazla Etkinlik Türü: Doğum günü, evlilik yıldönümü, ölüm yıldönümü, isim günü, nişan yıldönümü ve özel etkinlikler
  • Akıllı Tarih Hesaplamaları: Bir sonraki tarih, kalan gün sayısı ve yaş otomatik hesaplanır
  • Etkinlik Düzeni: Etkinlikler aya göre gruplanır, en yakındaki etkinlik ilk sırada gösterilir
  • Kalıcı Kayıt: SQLite veritabanı sayesinde verileriniz asla kaybolmaz
  • Favoriler: Önemli etkinlikleri favorilere ekleyip kolayca erişebilirsiniz
  • Modern Arayüz: Material Design 3 tasarımı ve sezgisel gezinme deneyimi

Kullanıcı Arayüzü

  • Ana Ekran: Tüm etkinlikleri, en yakın tarih sırasına göre listeler
  • Favoriler Ekranı: Sadece favori olarak işaretlenmiş etkinlikleri gösterir
  • Ayarlar Ekranı: (Gelecekteki özellikler için yer tutucu)
  • Etkinlik Oluşturma Ekranı: Form doğrulamasıyla birlikte detaylı etkinlik oluşturma alanı

Görüntülenen Etkinlik Bilgileri

  • Kişinin adı ve soyadı
  • Etkinlik türü
  • Etkinliğin bir sonraki tarihi ve haftanın günü
  • Etkinliğe kalan gün sayısı
  • Yaş bilgisi (yıl sayımı aktifse)
  • Favori durumu

🛠️ Teknik Yapı

Temel Teknolojiler

  • Dil: Kotlin 2.0.21
  • UI Framework: Jetpack Compose (Material 3 ile)
  • Derleme Sistemi: Gradle (Kotlin DSL ile)
  • Minimum SDK: 24 (Android 7.0 Nougat)
  • Hedef SDK: 36

Mimariler ve Kütüphaneler

  • Mimari: MVVM (Model-View-ViewModel) + Clean Architecture prensipleri
  • Veritabanı: Room 2.6.1 (KSP desteğiyle)
  • Navigasyon: Jetpack Navigation Compose 2.8.5
  • Durum Yönetimi: StateFlow ve Compose State
  • Tarih İşlemleri: java.time.LocalDate (core library desugaring ile)

Proje Yapısı


app/src/main/java/com/mrsuffix/birthdayapp/
├── data/
│   ├── local/
│   │   ├── AppDatabase.kt          # Room veritabanı
│   │   ├── EventDao.kt             # Veritabanı işlemleri
│   │   └── EventEntity.kt          # Veritabanı varlıkları ve dönüştürücüler
│   └── repository/
│       └── EventRepository.kt      # Veri katmanı soyutlaması
├── domain/
│   └── model/
│       ├── Event.kt                # Alan modeli
│       └── EventType.kt            # Etkinlik türü enum
├── ui/
│   ├── components/                 # Yeniden kullanılabilir UI bileşenleri
│   │   ├── BottomNavigationBar.kt
│   │   ├── EmptyState.kt
│   │   ├── EventCard.kt
│   │   └── MonthHeader.kt
│   ├── navigation/                 # Navigasyon yapısı
│   │   ├── NavigationGraph.kt
│   │   └── Screen.kt
│   ├── screens/                    # Ekranlar
│   │   ├── createevent/
│   │   ├── favorites/
│   │   ├── home/
│   │   └── settings/
│   └── theme/                      # Material 3 tema dosyaları
└── util/
└── DateUtils.kt                # Tarih hesaplama yardımcıları

🚀 Başlangıç

Gereksinimler

  • Android Studio Hedgehog (2023.1.1) veya daha yeni sürüm
  • JDK 11 veya üzeri
  • Android SDK (API 24+)

Projeyi Çalıştırmak

  1. Depoyu klonla
  2. Android Studio’da aç
  3. Gradle dosyalarını senkronize et
  4. Emülatör veya fiziksel cihazda (API 24+) çalıştır

Komut Satırından Derleme

# Debug derlemesi
./gradlew assembleDebug

# Release derlemesi
./gradlew assembleRelease

📖 Kullanım Kılavuzu

Etkinlik Oluşturma

  1. Herhangi bir ana ekranda sağ alt köşedeki + butonuna dokun
  2. Açılan listeden etkinlik türünü seç
  3. Kişinin adını ve soyadını gir
  4. Etkinlik tarihini seç
  5. Yaş göstermek istiyorsan “Yılı say” seçeneğini aktif et
  6. Tüm zorunlu alanlar doldurulduğunda Etkinlik Oluştur butonuna bas

Etkinlik Görüntüleme

  • Ana Ekran: Tüm etkinlikleri en yakın tarihe göre sıralar

  • Favoriler Ekranı: Sadece favori etkinlikleri gösterir

  • Her etkinlik kartında:

    • Kişi adı ve etkinlik türü
    • Bir sonraki tarih ve haftanın günü
    • Kalan gün sayısı
    • Yaş bilgisi (aktifse)

Favori Yönetimi

  • Her karttaki kalp simgesine dokunarak favori durumunu değiştir
  • Dolu kalp = favori
  • Boş kalp = favori değil

🎯 Temel Özellik Açıklamaları

Akıllı Tarih Hesaplaması

Uygulama, tarihlere göre şu bilgileri otomatik hesaplar:

  • Bir Sonraki Tarih: Geçmiş etkinlikler bir sonraki yıla taşınır
  • Kalan Gün: Bugünden etkinlik tarihine kadar olan süre
  • Yaş: Yılı say aktifse, bir sonraki yaş otomatik gösterilir

Etkinlik Düzeni

Etkinlikler:

  • En yakın tarihe göre sıralanır
  • Ay ve yıla göre gruplanır (örneğin “AĞUSTOS - 2026”)
  • Net bir şekilde görsel olarak ayrılır

Veri Kalıcılığı

  • Veriler yerel SQLite veritabanına kaydedilir
  • Uygulama kapatılsa da bilgiler korunur
  • İnternet bağlantısı gerekmez
  • Kişisel veriler cihaz dışına çıkmaz

🏗️ Mimari Özellikler

Clean Architecture

Uygulama, katmanlı mimari prensiplerini takip eder:

  • Veri Katmanı: Room veritabanı, DAO’lar, repository
  • Alan Katmanı: Modeller ve yardımcı fonksiyonlar
  • Sunum Katmanı: ViewModel’ler ve UI bileşenleri

MVVM Deseni

  • Model: Alan modelleri ve veritabanı nesneleri
  • View: Compose UI fonksiyonları
  • ViewModel: İş mantığı ve durum yönetimi

Reaktif Durum Yönetimi

  • ViewModel’ler StateFlow ile UI durumunu sağlar
  • UI, durum değişikliklerini reaktif olarak gözlemler
  • Tek yönlü veri akışı ile kararlı davranış sağlanır

🔧 Yapılandırma

Etkinlik Türlerini Düzenleme

Yeni tür eklemek veya mevcutları değiştirmek için EventType.kt dosyasını düzenleyin:

enum class EventType(val displayName: String) {
    BIRTHDAY("Doğum Günü"),
    ANNIVERSARY("Yıldönümü"),
    // Yeni türleri buraya ekleyin
}

Veritabanı Göçleri (Migrations)

Veritabanı şeması değiştiğinde:

  1. AppDatabase.kt içindeki sürüm numarasını artır
  2. Yeni bir migration stratejisi tanımla veya fallbackToDestructiveMigration() kullan

📝 Gelecek Güncellemeler

Gelecekte eklenmesi planlanan özellikler:

  • Etkinlik düzenleme ve silme
  • Yaklaşan etkinlikler için bildirim sistemi
  • Renkli kategori desteği
  • Etkinlikleri dışa/içe aktarma (CSV, JSON)
  • Arama ve filtreleme özellikleri
  • Bildirim tercihlerine göre ayarlar
  • Tekrarlayan etkinlik desteği
  • Etkinliklere fotoğraf ekleme

🤝 Katkı

Bu proje kişisel bir öğrenme projesidir, ancak öneri ve geri bildirimlere her zaman açığım!

📄 Lisans

Bu proje eğitim amaçlı olarak oluşturulmuştur.

👨‍💻 Geliştirici

MRsuffix - Berat NERKİZ & Mehmet Efe KARADAĞ

🙏 Teşekkürler

  • Material Design 3 kılavuzları
  • Jetpack Compose belgeleri
  • Android geliştirici topluluğu

🛡️ Virus Total

Uygulamanın kaynak kodunu görüp yinede korkanlar için virüs total linki. V1.0.1 - https://www.virustotal.com/gui/file/cd8969977d2f616b38c434c6aa51585e258477a08348f413231f489bc19edb7c?nocache=1 V1.0.0 - https://www.virustotal.com/gui/file/dfb7fb64d044ea4d9b02b234dffc5349088fceac4d18da11750a8894a74e2165?nocache=1


Not: Bu uygulama Android 7.0 (API 24) ve üzeri sürümleri hedefler, bu da cihazların %95’inden fazlasıyla uyumluluk sağlar.

BirthDay App - Event Reminder Application

A modern Android reminder application built with Kotlin and Jetpack Compose that helps you never forget important life events like birthdays, anniversaries, and other special occasions.

📸 Photos

image1 image2

📱 Features

Core Functionality

  • Multiple Event Types: Birthday, Anniversary, Death Anniversary, Name Day, Wedding Anniversary, and custom events
  • Smart Date Calculations: Automatically calculates next occurrence, days remaining, and age
  • Event Organization: Events grouped by month with the nearest event displayed first
  • Persistent Storage: SQLite database ensures your events are never lost
  • Favorites: Mark important events as favorites for quick access
  • Clean, Modern UI: Material Design 3 with intuitive navigation

User Interface

  • Home Screen: View all events sorted by next occurrence date
  • Favorites Screen: Quick access to your marked favorite events
  • Settings Screen: (Placeholder for future features)
  • Create Event Screen: Full-featured form with validation

Event Details Displayed

  • Person's first name and last name
  • Event type
  • Next occurrence date with day of week
  • Days remaining until the event
  • Age (if year counting is enabled)
  • Favorite status

🛠️ Technical Stack

Core Technologies

  • Language: Kotlin 2.0.21
  • UI Framework: Jetpack Compose with Material 3
  • Build System: Gradle with Kotlin DSL
  • Min SDK: 24 (Android 7.0 Nougat)
  • Target SDK: 36

Architecture & Libraries

  • Architecture: MVVM (Model-View-ViewModel) with Clean Architecture principles
  • Database: Room 2.6.1 with KSP
  • Navigation: Jetpack Navigation Compose 2.8.5
  • State Management: StateFlow and Compose State
  • Date Handling: java.time.LocalDate with core library desugaring

Project Structure

app/src/main/java/com/mrsuffix/birthdayapp/
├── data/
│   ├── local/
│   │   ├── AppDatabase.kt          # Room database
│   │   ├── EventDao.kt             # Database operations
│   │   └── EventEntity.kt          # Database entity & converters
│   └── repository/
│       └── EventRepository.kt      # Data abstraction layer
├── domain/
│   └── model/
│       ├── Event.kt                # Domain model
│       └── EventType.kt            # Event type enum
├── ui/
│   ├── components/                 # Reusable UI components
│   │   ├── BottomNavigationBar.kt
│   │   ├── EmptyState.kt
│   │   ├── EventCard.kt
│   │   └── MonthHeader.kt
│   ├── navigation/                 # Navigation setup
│   │   ├── NavigationGraph.kt
│   │   └── Screen.kt
│   ├── screens/                    # Screen implementations
│   │   ├── createevent/
│   │   ├── favorites/
│   │   ├── home/
│   │   └── settings/
│   └── theme/                      # Material 3 theme
└── util/
    └── DateUtils.kt                # Date calculation utilities

🚀 Getting Started

Prerequisites

  • Android Studio Hedgehog (2023.1.1) or newer
  • JDK 11 or higher
  • Android SDK with API 24+

Building the Project

  1. Clone the repository
  2. Open the project in Android Studio
  3. Sync Gradle files
  4. Run on an emulator or physical device (API 24+)

Building from Command Line

# Debug build
./gradlew assembleDebug

# Release build
./gradlew assembleRelease

📖 How to Use

Creating an Event

  1. Tap the + (Floating Action Button) on any main screen
  2. Select the event type from the dropdown
  3. Enter the person's first name (required)
  4. Enter the person's last name (required)
  5. Select the event date (required)
  6. Toggle "Count years" if you want to display age
  7. Tap Create Event (enabled when all required fields are filled)

Viewing Events

  • Home Screen: Shows all events grouped by month, sorted by next occurrence
  • Favorites Screen: Shows only events marked as favorites
  • Each event card displays:
    • Person's name and event type
    • Next occurrence date and day of week
    • Days remaining
    • Age (if year counting is enabled)

Managing Favorites

  • Tap the heart icon on any event card to toggle favorite status
  • Filled heart = favorited
  • Outlined heart = not favorited

🎯 Key Features Explained

Smart Date Calculations

The app intelligently calculates:

  • Next Occurrence: If an event has already passed this year, it shows next year's date
  • Days Remaining: Accurate calculation from today to the next occurrence
  • Age Calculation: When enabled, shows how old the person will be on their next birthday

Event Organization

Events are automatically:

  • Sorted by next occurrence (closest events first)
  • Grouped by month and year (e.g., "AUGUST - 2026")
  • Displayed with clear visual separation

Data Persistence

  • All events are saved to a local SQLite database
  • Data persists across app restarts
  • No internet connection required
  • Your data never leaves your device

🏗️ Architecture Highlights

Clean Architecture

The app follows Clean Architecture principles:

  • Data Layer: Room database, DAOs, and repository
  • Domain Layer: Business models and utility functions
  • Presentation Layer: ViewModels, UI components, and screens

MVVM Pattern

  • Model: Domain models and database entities
  • View: Composable functions (UI)
  • ViewModel: State management and business logic

Reactive State Management

  • ViewModels expose StateFlow for UI state
  • UI collects state changes reactively
  • Unidirectional data flow ensures predictable behavior

🔧 Configuration

Modifying Event Types

To add or modify event types, edit EventType.kt:

enum class EventType(val displayName: String) {
    BIRTHDAY("Birthday"),
    ANNIVERSARY("Anniversary"),
    // Add more types here
}

Database Migrations

When modifying the database schema:

  1. Increment version in AppDatabase.kt
  2. Provide migration strategy or use fallbackToDestructiveMigration()

📝 Future Enhancements

Potential features for future versions:

  • Event editing and deletion
  • Push notifications for upcoming events
  • Event categories with custom colors
  • Export/import events (CSV, JSON)
  • Search and filter functionality
  • Settings for notification preferences
  • Recurring events support
  • Photo attachments for events

🤝 Contributing

This is a personal learning project, but suggestions and feedback are welcome!

📄 License

This project is created for educational purposes.

👨‍💻 Author

MRsuffix - Berat NERKİZ & Mehmet Efe KARADAĞ

🙏 Acknowledgments

  • Material Design 3 guidelines
  • Jetpack Compose documentation
  • Android developers community

🛡️ Virus Total

For those who are still hesitant despite seeing the application's source code, here is the VirusTotal link. V1.0.1 - https://www.virustotal.com/gui/file/cd8969977d2f616b38c434c6aa51585e258477a08348f413231f489bc19edb7c?nocache=1 V1.0.0 - https://www.virustotal.com/gui/file/dfb7fb64d044ea4d9b02b234dffc5349088fceac4d18da11750a8894a74e2165?nocache=1


Note: This app targets Android 7.0 (API 24) and above, ensuring compatibility with 95%+ of Android devices in use today.

About

Kotlin ve Jetpack Compose kullanılarak modern Android standartlarında geliştirilmiş bir hatırlatma uygulamasıdır. Doğum günleri, yıldönümleri, isim günleri ve diğer özel günleri unutmamanız için tasarlanmıştır.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages