BanglaGan হলো একটি আধুনিক, দ্রুত এবং অফলাইন-ফার্স্ট বাংলা গানের সংগ্রহ ও লিরিক্স অ্যাপ্লিকেশন। এটি আধুনিক Jetpack Compose, Room Database এবং MVVM (Model-View-ViewModel) আর্কিটেকচারের ওপর ভিত্তি করে তৈরি করা হয়েছে।
- 🎵 বিস্তৃত গানের সংগ্রহ: রবীন্দ্রসঙ্গীত, নজরুলগীতি, লোকগীতি, আধুনিক ও দেশাত্মবোধক গানের বিশাল ডেটাবেস।
- 🔍 স্মার্ট ইনস্ট্যান্ট সার্চ: গান, শিল্পী, গীতিকার, সুরকার কিংবা অ্যালবামের নাম দিয়ে তাৎক্ষণিক সার্চের সুবিধা।
- 📂 ক্যাটাগরি অনুযায়ী ব্রাউজিং:
- 🎤 শিল্পীর তালিকা
- ✍️ গীতিকারের তালিকা
- 🎼 সুরকারের তালিকা
- ⏳ যুগভিত্তিক বিভাজন (প্রাচীন, মধ্যযুগ, আধুনিক)
- 🏷️ ধরণভিত্তিক ফিল্টারিং (দেশাত্মবোধক, আধুনিক, রবীন্দ্রসঙ্গীত ইত্যাদি)
- ❤️ পছন্দের গান (Favorites): এক ক্লিকে প্রিয় গানগুলোকে বুকমার্ক ও আলাদাভাবে দেখার সুবিধা।
- ➕ নতুন গান যোগ করা: ব্যবহারকারীরা সহজে নিজেদের সংগ্রহে নতুন গান, লিরিক্স ও তথ্য সংরক্ষণ করতে পারেন।
- 📊 পরিসংখ্যান ড্যাশবোর্ড: মোট গান, শিল্পী, গীতিকার, সুরকার এবং যুগভিত্তিক রিয়েল-টাইম তথ্যচিত্র।
- 🎨 Material 3 ডিজাইন ও ডার্ক মোড: ডায়নামিক কালার স্কিম এবং সিস্টেম-ওয়াইড ডার্ক/লাইট মোড সাপোর্ট।
- ⚡ অফলাইন-ফার্স্ট (Offline-First): ইন্টারনেট কানেকশন ছাড়াই সমস্ত গান ও লিরিক্স পড়ার সুবিধা।
| কম্পোনেন্ট | প্রযুক্তি |
|---|---|
| ভাষা | Kotlin |
| UI ফ্রেমওয়ার্ক | Jetpack Compose (Material Design 3) |
| আর্কিটেকচার | MVVM + Unidirectional Data Flow (UDF) |
| লোকাল ডেটাবেস | Room Database |
| অ্যাসিঙ্ক ও স্টেট | Kotlin Coroutines, StateFlow, SharedFlow |
| ন্যাভিগেশন | AndroidX Navigation Compose |
| বিল্ড সিস্টেম | Gradle (Kotlin DSL, Version Catalogs) |
com.example.banglagan/
├── MainActivity.kt # মূল Activity ও রুট Scaffold
├── BanglaGanApplication.kt # অ্যাপ্লিকেশন ক্লাস ও ডেটাবেস ইনিশিয়ালাইজার
│
├── data/ # ডেটা লেয়ার
│ ├── AppDatabase.kt # Room Database কনফিগারেশন ও ইনিশিয়াল ডেটা
│ ├── Song.kt # Song Entity ডেটা ক্লাস
│ ├── SongDao.kt # Room DAO কোয়েরিসমূহ
│ └── SongRepository.kt # ডেটা রিপোজিটরি লেয়ার
│
├── ui/ # প্রেজেন্টেশন লেয়ার (Jetpack Compose)
│ ├── components/ # পুনর্ব্যবহারযোগ্য UI কম্পোনেন্টস
│ │ ├── AppBars.kt # TopAppBar এবং BottomNavigationBar
│ │ ├── CommonUI.kt # Loading, Empty ও Error স্টেটস
│ │ ├── HomeWidgets.kt # Stats ও Category কার্ডসমূহ
│ │ └── SongItem.kt # গান ও ইন্টারেক্টিভ চিপ আইটেম
│ ├── navigation/ # ন্যাভিগেশন গ্রাফ ও রাউট ডেস্টিনেশন
│ │ ├── AppDestinations.kt
│ │ └── AppNavHost.kt
│ ├── preview/ # UI প্রিভিউ ও FakeSongDao ডেটা
│ │ └── PreviewData.kt
│ ├── screens/ # অ্যাপ স্ক্রিনসমূহ
│ │ ├── HomeScreen.kt
│ │ ├── SongListScreen.kt
│ │ ├── SongDetailScreen.kt
│ │ ├── SearchScreen.kt
│ │ ├── SongsByCategoryScreen.kt
│ │ ├── AddSongScreen.kt
│ │ ├── StatisticsScreen.kt
│ │ └── GenericListScreen.kt
│ ├── song/ # ViewModel ও UI State
│ │ └── SongViewModel.kt
│ └── theme/ # Material 3 থিম, টাইপোগ্রাফি ও কালার
│ ├── Color.kt
│ ├── Theme.kt
│ └── Typography.kt
│
└── utils/ # ইউটিলিটি ফাংশন
└── NumberUtils.kt # বাংলা সংখ্যা রূপান্তর এক্সটেনশন
- Android Studio: Ladybug (2024.2+) বা তার পরবর্তী সংস্করণ।
- JDK: Java 11 বা 17।
- Android SDK: Compile SDK 36 (Min SDK 21+)।
-
রিপোজিটরি ক্লোন করুন:
git clone https://github.com/joysriramsarkar/banglagan_android_app.git cd banglagan_android_app -
Android Studio দিয়ে ওপেন করুন:
- ফাইল মেনু থেকে
Openসিলেক্ট করে প্রজেক্ট ফোল্ডারটি ওপেন করুন। - Gradle Sync সম্পূর্ণ হওয়া পর্যন্ত অপেক্ষা করুন।
- ফাইল মেনু থেকে
-
কমান্ড লাইনে টেস্ট ও বিল্ড করুন:
- ইউনিট টেস্ট রান করতে:
.\gradlew.bat testDebugUnitTest - ডিবাগ APK তৈরি করতে:
.\gradlew.bat assembleDebug
- ইউনিট টেস্ট রান করতে:
এই প্রজেক্টটি ওপেন-সোর্স এবং বাংলা ভাষা ও সংস্কৃতির সঙ্গীত সংরক্ষণের উদ্দেশ্যে উন্মুক্ত।