Skip to content

Bu uygulama, eğitim içeriklerinin sunulduğu ve kullanıcıların kurslara katılabileceği, videoları izleyebileceği, ve eğitim materyalleriyle etkileşimde bulunabileceği bir platformdur. Kullanıcıların eğitim içeriklerine erişimini sağlayan bu uygulama, Firebase, Retrofit, Jetpack Compose, Room ve Navigation gibi güçlü teknolojilerle donatılmıştır.

Notifications You must be signed in to change notification settings

muameh/LearnConnect-ShowCase

Repository files navigation

LearnConnect Uygulaması Analizi ve Dökümantasyonu

Bu uygulama, eğitim içeriklerinin sunulduğu ve kullanıcıların kurslara katılabileceği, videoları izleyebileceği, ve eğitim materyalleriyle etkileşimde bulunabileceği bir platformdur. Uygulama, Android uygulama geliştirme dünyasında güncel ve en iyi uygulama yöntemlerine dayalı olarak geliştirilmiştir. Kullanıcıların eğitim içeriklerine erişimini sağlayan ve farklı seviyelerdeki kullanıcılar için işlevsellik sunan bu uygulama, Firebase, Retrofit, Jetpack Compose, Room ve Navigation gibi güçlü teknolojilerle donatılmıştır.

Uygulama, kullanıcıların hem eğitim içeriklerini keşfetmesini hem de kişisel eğitim deneyimlerini yönetmesini sağlar. Kullanıcılar kurslara kaydolabilir, içerikleri görüntüleyebilir, videoları izleyebilir ve favorilerine ekleyebilir. Ayrıca, kurslara kayıtlı olup olmadıklarını takip edebilirler.

Genel Yapı ve Ana Bileşenler

Uygulama, bir dizi işlevi ve ekranı içinde barındıran, modern Android geliştirme araçları kullanılarak inşa edilmiştir. Ana işlevler ve bileşenler aşağıda sıralanmıştır:

  1. Kullanıcı Girişi ve Kayıt İşlemleri
  2. Kurslar ve Video İçeriği
  3. Kurs Kayıt ve Favorilere Ekleme
  4. Video İzleme ve İçerik Yönetimi
  5. Navigasyon ve Ekranlar Arası Geçiş
  6. Veri Yönetimi ve Hata İşleme
  7. Kullanıcı Deneyimi ve Arayüz Tasarımı
  8. Teknolojiler ve Kullanılan Araçlar

1. Kullanıcı Girişi ve Kayıt İşlemleri

Uygulama, kullanıcıların Firebase Authentication servisi ile güvenli bir şekilde giriş yapabilmesini sağlar. Bu özellik, kullanıcıların uygulamaya kayıt olmadan önce kimlik doğrulamasını gerektirir. Firebase Authentication, e-posta ve şifre ile giriş gibi temel kimlik doğrulama yöntemlerini destekler.

  • Giriş Ekranı (LogInScreen): Kullanıcı, bu ekranda e-posta ve şifre ile giriş yapabilir. Başarılı bir giriş işlemi sonrasında kullanıcı, doğrudan kurslar ekranına yönlendirilir.
  • Kayıt Ekranı (SignUpScreen): Yeni kullanıcılar, bu ekranda hesap oluşturabilir. Kayıt işlemi, Firebase Authentication kullanılarak yapılır ve kullanıcı bilgileri doğrulanır.
  • Eğer kullanıcı daha önce kayıtlıysa, giriş işlemi Firebase üzerinden yapılır ve kullanıcı doğrulandıktan sonra uygulama, CoursesScreen (kurslar ekranı) ile ana ekrana yönlendirir.

Firebase Authentication ile sağlanan güvenlik önlemleri, kullanıcıların hesaplarının güvende olmasını sağlar. Kullanıcı girişi başarılı olduğunda, uygulama ilgili kullanıcı bilgilerini alır ve ilerleyen işlemlerde bu bilgiyi kullanarak doğru içerik ve video erişim izinlerini sağlar.


2. Kurslar ve Video İçeriği

Uygulamanın ana işlevlerinden biri, kullanıcıların eğitim içeriklerine (kurslara) ulaşabilmesidir. CoursesScreen ekranı, kullanıcıların tüm mevcut kursları keşfetmesine olanak tanır.

  • Veri Kaynağı (API Entegrasyonu): Uygulama, Retrofit kullanılarak uzaktan kurs verilerini çeker. Bu veriler, kursların temel bilgilerini, içerikleri ve video bağlantılarını içerir.
  • Kurslar, kullanıcının ilgisini çekebilecek şekilde LazyColumn içinde dinamik olarak listelenir. Her kurs, kullanıcıya görsel ve metin tabanlı bilgiler sunar (örneğin, kurs adı, açıklama, videoların süresi vb.).
  • Uygulama, ayrıca Room Database kullanarak kursları yerel olarak da saklayabilir. Bu sayede kullanıcılar internet bağlantısı olmadığında da önceki kurs bilgilerine ulaşabilir.

Retrofit aracılığıyla, kullanıcılar kursların videoları ve içerikleri hakkında detaylı bilgi alabilir. Bu içerikler uzaktan API'den çekilir ve CourseDetailsScreen'de gösterilir.


3. Kurs Kayıt ve Favorilere Ekleme

Kullanıcılar, ilgilendikleri kursları favorilerine ekleyebilir veya kaydolabilir. Bu özellik, kullanıcıların hangi kurslara kaydolduklarını takip etmelerini sağlar ve gelecekteki erişim için bu kursları saklamalarına yardımcı olur.

  • Favorilere Ekleme: Kullanıcılar, herhangi bir kursu favorilerine ekleyebilirler. Bu işlem Firestore veritabanına kaydedilir ve kullanıcı, favorilerine eklediği kursları CoursesScreen üzerinde kolayca bulabilir.
  • Kayıt Olma: Kullanıcılar, bir kursu kaydolmak için bir diyalog penceresi (AlertDialog) ile onay alır. Eğer kullanıcı, kayıt olmamışsa, kaydolmadan videoları izleyemez.
    • Kullanıcı kaydolduğunda, kurs bilgileri Firestore veritabanına kaydedilir. Bu kayıt, kursun içeriği, video bilgileri ve kullanıcı kaydının durumu gibi bilgileri içerir.

Kurs kaydını tamamlayan kullanıcılar, artık sadece kayıtlı oldukları kursların videolarını izleyebilirler.


4. Video İzleme ve İçerik Yönetimi

Uygulama, kullanıcıların kayıtlı oldukları kursların videolarını izleyebilmelerini sağlar. Videolar, yalnızca kullanıcılar kayıt oldukları kurslara aitse izlenebilir.

  • Video İzleme: Video içerikleri, VideoPlayerScreen ekranında izlenebilir. Kullanıcı, ilgili video bağlantısına tıkladığında, VideoPlayerScreen'de video oynatılır.
  • Video Detayları: Videolar hakkında bilgiler (süre, açıklama, etiketler, görüntülenme sayısı vb.) kullanıcılara gösterilir. Her video için küçük resim (thumbnail) ve video başlığı da gösterilir.
  • Kayıtlı Kurslar ve Video Erişimi: Kullanıcılar, sadece kayıt oldukları kursların videolarını izleyebilir. Kayıtlı olmayan kullanıcılar, video izleme girişimi yaparsa, bir uyarı mesajı alır.

Kaldığı Yerden Video İzleme Özelliği

Uygulamanın en önemli ve kullanıcı dostu özelliklerinden biri, Room Database sayesinde kullanıcıların her bir videoyu kaldıkları yerden izlemeye devam edebilmesidir. Bu özellik, eğitim içeriklerinin izlenme deneyimini kesintisiz ve verimli hale getirir. Kullanıcılar, bir video izlerken uygulamayı kapatsalar dahi, video izleme konumu yerel veritabanında saklanır ve kullanıcı tekrar aynı videoya döndüğünde, kaldığı yerden devam edebilir.

Nasıl Çalışır?

  • Room Database: Video izleme konumları, Room veritabanında videoID ve progress (ilerleme durumu) ile saklanır. Kullanıcı bir video izlerken, video ilerlemesi anlık olarak veritabanına kaydedilir. Bu sayede kullanıcı, uygulamayı kapatıp yeniden açtığında, video oynatıcı kaldığı yerden devam eder.

  • Kullanıcı Etkileşimi: Kullanıcı video izlerken, izleme süresi anlık olarak takip edilir. Eğer kullanıcı videoyu durdurursa, uygulama o anki izlenme konumunu (örneğin, 3:45 dakikada) kaydeder. Bir sonraki girişinde, VideoPlayerScreen ekranı bu kaydedilen konumdan başlatılır, böylece kullanıcı aralıksız bir deneyim yaşar.

  • Veri Senkronizasyonu: Kullanıcının izlediği video konumları, Room Database üzerinden senkronize edilir. Bu özellik, internet bağlantısının olup olmadığına bakılmaksızın çalışır. Kullanıcılar çevrimdışı iken de video izleme deneyimlerine kaldıkları yerden devam edebilirler.

Kullanıcıya Faydası

Bu özellik, özellikle eğitim alanında oldukça kullanışlıdır. Eğitim videosu izlerken kullanıcılar, bir kesintiye uğradığında veya başka bir sebepten dolayı videoyu durdurduğunda, kaldıkları yerden devam etme imkanı bulurlar. Böylece kullanıcılar:

  • Kesintisiz izleme deneyimi yaşar.
  • Video izlerken araya giren günlük aktiviteleri engellenmiş olur.
  • Daha verimli öğrenme sağlarlar, çünkü eğitim içeriği takip edilmeden kaybolmaz.

Örnek Senaryo: Bir kullanıcı, eğitim videosunu 15:30 dakikada izlemeye başlar. Videoyu izlerken bir araya gelmesi gerekir ve videoyu durdurur. Birkaç saat sonra uygulamayı açtığında, video otomatik olarak 15:30 dakikadan itibaren devam eder. Bu sayede hiçbir içerik kaybolmaz ve kullanıcı, izlediği eğitimde sürekli olarak ilerler.

Bu özellik, özellikle uzaktan eğitim platformları ve video eğitim uygulamaları için kritik bir kullanıcı deneyimi sağlayarak, öğrenme sürecini daha sorunsuz hale getirir.


Teknik Detaylar

  • Room Veritabanı: İzleme ilerlemesi, her video için ayrı bir kayıt olarak Room Database'te tutulur.
  • Veri Modeli:
    @Entity(tableName = "video_progress")
    data class VideoProgress(
        @PrimaryKey val videoId: String,
        val progress: Long // Video izlenme süresi (milisaniye cinsinden)
    )
    

5. Navigasyon ve Ekranlar Arası Geçiş

Uygulama, ekranlar arasında geçiş yapmak için Jetpack Navigation'ı kullanır. Bu sayede kullanıcılar, ekranlar arasında rahatça geçiş yapabilir ve uygulamanın akışı sezgisel ve kullanıcı dostu hale gelir.

  • NavController ve NavHost kullanılarak, ekranlar arasındaki geçişler yönetilir. Uygulama, her bir ekran için belirli parametreleri ve verileri aktararak dinamik bir navigasyon yapısı oluşturur.
  • Ekranlar ve ilgili rota isimleri, bir enum class olan AppScreens içerisinde tanımlanır. Bu sayede ekranlar arası geçişler güvenli ve yönetilebilir olur.

Uygulama şu ekranlara sahiptir:

  • LogInScreen: Kullanıcı giriş ekranı
  • SignUpScreen: Kullanıcı kayıt ekranı
  • CoursesScreen: Kursların listelendiği ana ekran
  • CourseDetailsScreen: Kurs detaylarının bulunduğu ekran
  • VideoPlayerScreen: Video içeriklerinin izlendiği ekran
  • UserDetailScreen: Kullanıcı profilinin görüntülendiği ekran

6. Veri Yönetimi ve Hata İşleme

Veri yönetimi, uygulamanın temel işlevlerinden biridir. Room Database kullanılarak, kurslar ve kullanıcı bilgileri lokal olarak saklanır. Retrofit aracılığıyla, uzak sunucudan kurs bilgileri ve video verileri alınır.

  • Room Database: Kullanıcılar ve video içerikleri gibi bilgiler, lokal olarak Room veritabanında saklanır. Böylece internet bağlantısı olmadığında bile önceki kurslar ve içerikler görüntülenebilir.
  • Hata İşleme: API üzerinden veri çekme işlemleri sırasında oluşabilecek hatalar, kullanıcıya uygun mesajlar ile iletilir. Eğer bir hata meydana gelirse, bir uyarı mesajı ekranda gösterilir.
  • Veri Senkronizasyonu: Kullanıcı verileri ve kurs kayıt bilgileri Firestore ile senkronize edilir. Bu sayede kullanıcılar farklı cihazlarda da aynı verilere erişebilirler.

7. Kullanıcı Deneyimi ve Arayüz Tasarımı

Jetpack Compose kullanılarak, modern ve esnek bir kullanıcı arayüzü oluşturulmuştur. Tasarım, kullanıcı dostu bir yapıya sahiptir ve temel etkileşimleri kolaylaştıracak şekilde optimize edilmiştir.

  • CircularProgressIndicator: Uygulama, veri yükleme işlemi sırasında, kullanıcıya yükleme durumu hakkında bilgi vermek için CircularProgressIndicator kullanır.
  • AlertDialog ve Toast Mesajları: Kullanıcı etkileşimi sırasında bilgilendirme ve hata mesajları için AlertDialog ve Toast mesajları kullanılır.
  • Responsive Tasarım: Ekran boyutlarına duyarlı bir tasarım uygulanarak, uygulamanın farklı cihazlarda düzgün çalışması sağlanır.

8. Teknolojiler ve Kullanılan Araçlar

Uygulama geliştirme sürecinde kullanılan başlıca teknolojiler ve araçlar şunlardır:

  1. Jetpack Compose: Modern, deklaratif UI geliştirme aracı.
  2. Firebase Authentication: Kullanıcı kimlik doğrulaması için bulut tabanlı çözüm.
  3. Firestore: Kullanıcı verileri ve kurs bilgilerini depolayan NoSQL veritabanı.
  4. Retrofit: Uzak sunucudan veri almak için kullanılan HTTP istemcisi.
  5. Room: Lokal veritabanı yönetimi için kullanılan SQLite tabanlı çözüm.
  6. Jetpack Navigation: Ekranlar arası geçiş yönetimini sağlayan kütüphane.

Sonuç

Bu uygulama, kullanıcıların eğitim içeriklerine hızlı ve verimli bir şekilde erişmesini sağlayan, modern Android geliştirme araçlarıyla oluşturulmuş bir platformdur. Firebase Authentication, Retrofit, Room, Jetpack Compose ve Navigation gibi güçlü teknolojiler kullanılarak geliştirilen bu uygulama, kullanıcılara dinamik bir deneyim sunar. Kullanıcılar kurslara kaydolabilir, içeriklere erişebilir ve videoları izleyebilirken aynı zamanda eğitim materyalleri ile etkileşime geçebilirler.

Kullanıcı dostu arayüz, sağlam veri yönetimi ve esnek navigasyon yapısı ile güçlü bir eğitim platformu deneyimi sunulmuştur.

Screenshots

Below are some screenshots of the app in action:


Main Screen Main Screen Main Screen Main Screen Main Screen Main Screen Main Screen Main Screen Main Screen Main Screen Main Screen Main Screen Main Screen Main Screen Main Screen Main Screen Main Screen

About

Bu uygulama, eğitim içeriklerinin sunulduğu ve kullanıcıların kurslara katılabileceği, videoları izleyebileceği, ve eğitim materyalleriyle etkileşimde bulunabileceği bir platformdur. Kullanıcıların eğitim içeriklerine erişimini sağlayan bu uygulama, Firebase, Retrofit, Jetpack Compose, Room ve Navigation gibi güçlü teknolojilerle donatılmıştır.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages