Skip to content

Bu proje, Flutter ve Supabase kullanılarak geliştirilmiş bir kimlik doğrulama altyapısı (template) sağlamayı amaçlamaktadır.

Notifications You must be signed in to change notification settings

nebiberke/flutter_supabase_auth

Repository files navigation

Flutter Supabase Authentication Application

Genel Bakış

Bu proje, Flutter ve Supabase kullanılarak geliştirilmiş bir kimlik doğrulama altyapısı (template) sağlamayı amaçlamaktadır. Modern yazılım geliştirme prensiplerine bağlı kalarak Clean Architecture ve Domain-Driven Design (DDD) ile yapılandırılmıştır. Profesyonel düzeyde bir kimlik doğrulama sisteminde bulunması gereken tüm temel bileşenleri içermektedir.

Bu proje, yalnızca kimlik doğrulama işlemlerini değil, aynı zamanda kullanıcı profillerinin güncellenmesi, hata yönetimi, bağımlılık yönetimi, state yönetimi ve çeşitli gelişmiş özellikleri de destekleyecek şekilde tasarlanmıştır. Öne çıkan özellikler şunlardır:

  • İnternet Bağlantısı Yönetimi: İnternet kesintileri ve bağlantı sorunları yönetilerek kullanıcı deneyimi iyileştirilmiştir.
  • Tema ve Dil Desteği: Açık ve koyu tema desteği ile birlikte çoklu dil desteği sunulmaktadır.
  • Profil Yönetimi: Kullanıcıların profil bilgilerini düzenleyebileceği ve profil resmi yükleyebileceği bir yapı mevcuttur.
  • Cacheleme: Kullanıcı verileri ve uygulama durumu hydrated_bloc ile saklanarak hızlı erişim sağlanmaktadır.
  • Gerçek Zamanlı Kullanıcı Verisi: Kullanıcı bilgileri, Supabase ile gerçek zamanlı olarak veritabanından çekilmektedir.

Uygulama genişletilebilir ve modüler bir yapıya sahip olup, farklı projelere kolayca entegre edilebilir. flutter_bloc ile state yönetimi sağlanırken, get_it bağımlılık enjeksiyonu için kullanılmıştır. Ayrıca, hydrated_bloc ile durumların kalıcı hale getirilmesi sağlanmıştır. go_router ile dinamik yönlendirme yönetimi uygulanmıştır.

Özellikler

  • Supabase Authentication: E-posta ve parola tabanlı kullanıcı kaydı ve oturum yönetimi.
  • BLoC ile State Yönetimi: Tüm uygulama akışı flutter_bloc kullanılarak düzenlenmiştir.
  • Profil Resmi Yükleme ve Güncelleme: image_picker ve cached_network_image ile medya yönetimi yapılmaktadır.
  • Çoklu Dil Desteği: easy_localization entegrasyonu ile uygulama birden fazla dilde kullanılabilir.
  • Tema Yönetimi: Açık ve koyu tema desteği bulunmaktadır.
  • Bağımlılık Yönetimi: get_it kullanılarak bağımlılıklar yönetilmiştir.
  • Cacheleme: hydrated_bloc ile state verileri kalıcı olarak saklanmaktadır.
  • Yönlendirme Yönetimi: go_router ile esnek ve yönetilebilir bir navigasyon sistemi oluşturulmuştur.
  • Test Kapsamı: mocktail ile birim testleri yazılmıştır.

📱 Ekran Görüntüleri

Kimlik Doğrulama Anasayfa
Profil Kullanıcı Profili

🏗️ Mimari Yapı

Proje Clean Architecture yaklaşımına göre yapılandırılmıştır:

lib/
│
├── app/
│   ├── constants/
│   ├── env/
│   ├── errors/
│   ├── initializer/
│   ├── l10n/
│   ├── router/
│   ├── theme/
│   ├── widgets/
│
├── core/
│   ├── enums/
│   ├── extensions/
│   ├── network/
│   ├── usecases/
│   ├── utils/
│
├── features/
│   ├── auth/
│   │   ├── data/
│   │   │   ├── datasources/remote/
│   │   │   ├── models/
│   │   │   ├── repositories/
│   │   ├── domain/
│   │   │   ├── entities/
│   │   │   ├── repositories/
│   │   │   ├── usecases/
│   │   ├── presentation/
│   │   │   ├── bloc/
│   │   │   ├── views/
│   │   │   ├── widgets/
│   ├── profile/
│
├── scripts/
└── test/

🔧 Kullanılan Paketler

Ana Teknolojiler

State Management

Routing

Localization

Dependency Injection

Data Class Generation

UI ve Utility

Networking ve Veritabanı

Fonksiyonel Programlama ve Cacheleme

Kod Üretimi ve Test

🧪 Testler

  • AuthRepository testleri
  • ProfileRepository testleri
  • UseCase testleri
flutter test

🛠️ Supabase Yapılandırması

Database Tabloları

Profiles Tablosu

CREATE TABLE public.profiles (
    id UUID REFERENCES auth.users(id) ON DELETE CASCADE PRIMARY KEY,
    full_name TEXT,
    username TEXT UNIQUE,
    email TEXT,
    avatar_url TEXT,
    updated_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
);

Storage Yapılandırması

Avatars Bucket

INSERT INTO storage.buckets (id, name, public)
VALUES ('avatars', 'avatars', TRUE);

🚀 Kurulum Adımları

# 1. Depoyu klonlayın
git clone https://github.com/nebiberke/flutter_supabase_auth.git
cd flutter_supabase_auth

# 2. Paketleri yükleyin
flutter pub get

# 3. Ortam dosyasını oluşturun
mkdir env && touch env/.env

# 4. Supabase bilgilerinizi girin
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_anon_key

# 5. Kod üretimini başlatın
dart run build_runner build

# 6. Uygulamayı başlatın
flutter run

👤 Geliştirici

About

Bu proje, Flutter ve Supabase kullanılarak geliştirilmiş bir kimlik doğrulama altyapısı (template) sağlamayı amaçlamaktadır.

Resources

Stars

Watchers

Forks

Languages