Aplikasi Learning Management System berbasis Android dengan fitur lengkap untuk Instruktur, Siswa, dan Forum Diskusi
Fitur • Screenshot • Arsitektur • Instalasi • Teknologi
- Tentang Aplikasi
- Fitur Lengkap
- Screenshot
- Arsitektur
- Teknologi
- Cara Instalasi
- Struktur Proyek
- Build & Release
- Kontribusi
- Lisensi
Iamra Course adalah aplikasi Android untuk pembelajaran online yang lengkap, dibangun dengan arsitektur modern menggunakan MVVM pattern, Clean Architecture, dan Dependency Injection dengan Hilt.
Aplikasi ini dirancang untuk mengelola kursus online dengan fitur lengkap untuk:
- 👨🏫 Instruktur: Membuat dan mengelola kursus, materi, sesi, kupon, dan penghasilan
- 👨🎓 Siswa: Mengikuti kursus, tracking progress, ulasan, sertifikat, dan transaksi
- 💬 Forum: Diskusi grup dan chat antar pengguna
- 🌐 Guest: Jelajahi kursus dan informasi tanpa perlu login
- 🏠 Halaman Utama - Lihat daftar kursus yang tersedia
- 📚 Katalog Kursus - Jelajahi kursus dengan filter kategori
- 📄 Detail Kursus - Lihat detail kursus lengkap dengan materi dan sesi
- 🎓 Verifikasi Sertifikat - Cek keaslian sertifikat
- 🔐 Login & Registrasi - Masuk atau daftar akun baru
- 🌍 Multi-bahasa - Tersedia Bahasa Indonesia dan English
- 📧 Verifikasi Email - Konfirmasi email setelah mendaftar
- 📝 Pilih Role - Pilih sebagai Instruktur atau Siswa
- 👤 Lengkapi Profil - Isi informasi profil lengkap
- 📍 Integrasi Maps - Tambahkan lokasi dengan Google Maps
-
📚 Kelola Kursus
- Buat, lihat, edit, dan hapus kursus
- Upload gambar thumbnail kursus
- Atur harga dan kategori kursus
- Kelola visibilitas (publish/draft)
-
📖 Kelola Sesi & Materi
- Organisir materi dalam sesi-sesi
- Upload video pembelajaran
- Tambahkan deskripsi dan resource materi
- Atur urutan sesi dan materi
-
❓ Kelola Tanya Jawab
- Lihat pertanyaan dari siswa
- Jawab pertanyaan siswa
- Filter pertanyaan berdasarkan kursus
-
💰 Dashboard Penghasilan
- Pantau total penghasilan
- Lihat riwayat transaksi
- Tarik saldo penghasilan
- Analitik penghasilan
-
🎫 Kelola Kupon
- Buat kupon diskon
- Atur masa berlaku kupon
- Pantau penggunaan kupon
-
⭐ Kelola Ulasan
- Lihat ulasan kursus dari siswa
- Balas ulasan siswa
- Analitik rating kursus
-
💳 Akun & Perbankan
- Setup rekening bank untuk penarikan dana
- Kelola metode pembayaran
- Riwayat transaksi
-
🌐 Link Media Sosial
- Tambahkan profil media sosial
- Tampilkan link sosmed di profil
-
👤 Kelola Profil
- Update bio instruktur
- Upload foto profil
- Kelola kredensial
-
📚 Kursus Saya
- Lihat kursus yang diikuti
- Pantau progress belajar
- Lanjutkan dari posisi terakhir
-
📖 Belajar Kursus
- Tonton video pembelajaran
- Tandai materi yang sudah selesai
- Navigasi antar sesi
- Download resource kursus
-
📊 Pantau Progress
- Lihat progress belajar per kursus
- Tracking materi yang sudah selesai
- Statistik waktu belajar
-
🛒 Keranjang Belanja
- Tambah kursus ke keranjang
- Hapus kursus dari keranjang
- Pakai kode kupon
- Checkout kursus
-
💳 Transaksi
- Lihat riwayat transaksi
- Detail transaksi (invoice, metode bayar)
- Pantau status pembayaran
- Download invoice
-
📜 Sertifikat
- Lihat sertifikat yang didapat
- Download sertifikat PDF
- Bagikan sertifikat
- Kode verifikasi sertifikat
-
❓ Tanya Jawab
- Tanya pada materi tertentu
- Lihat jawaban instruktur
- Vote jawaban yang membantu
-
⭐ Ulasan Kursus
- Beri rating kursus (1-5 bintang)
- Tulis ulasan kursus
- Edit/hapus ulasan
- Lihat ulasan lainnya
-
👤 Profil Siswa
- Lihat statistik belajar
- Update informasi profil
- Kelola pengaturan akun
- Showcase sertifikat
-
💬 Chat Grup
- Gabung grup diskusi per kursus
- Pesan real-time
- Bagikan file dan media
- Lihat daftar member grup
-
💬 Chat Pribadi
- Pesan langsung dengan instruktur/siswa
- Riwayat chat
- Status online/offline
- Notifikasi push untuk pesan baru
🌐 Tampilan Guest (Klik untuk expand)
| Beranda | Kursus | Detail Kursus |
|---|---|---|
![]() |
![]() |
![]() |
| Login | Registrasi | Verifikasi Sertifikat |
|---|---|---|
![]() |
![]() |
![]() |
👤 Tampilan Member (Klik untuk expand)
| Verifikasi Email | Autentikasi 2FA | Pilih Role |
|---|---|---|
![]() |
![]() |
![]() |
| Info Tambahan | Lokasi Maps |
|---|---|
![]() |
![]() |
👨🏫 Tampilan Instruktur (Klik untuk expand)
| Daftar Kursus | Editor Kursus | Daftar Sesi |
|---|---|---|
![]() |
![]() |
![]() |
| Editor Sesi | Daftar Materi | Editor Materi |
|---|---|---|
![]() |
![]() |
![]() |
| Penghasilan | Daftar Kupon | Editor Kupon |
|---|---|---|
![]() |
![]() |
![]() |
| Tanya Jawab | Editor Jawaban | Ulasan |
|---|---|---|
![]() |
![]() |
![]() |
| Profil | Akun | Media Sosial |
|---|---|---|
![]() |
![]() |
![]() |
👨🎓 Tampilan Siswa (Klik untuk expand)
| Kursus Saya | Daftar Sesi | Daftar Materi |
|---|---|---|
![]() |
![]() |
![]() |
| Detail Materi | Progress | Detail Progress |
|---|---|---|
![]() |
![]() |
![]() |
| Keranjang | Transaksi | Detail Transaksi |
|---|---|---|
![]() |
![]() |
![]() |
| Checkout | Sertifikat | Detail Sertifikat |
|---|---|---|
![]() |
![]() |
![]() |
| Pertanyaan | Detail Pertanyaan | Ulasan |
|---|---|---|
![]() |
![]() |
![]() |
| Editor Ulasan | Profil |
|---|---|
![]() |
![]() |
Aplikasi ini menggunakan arsitektur MVVM untuk pemisahan yang jelas antara UI dan logic bisnis:
┌─────────────┐
│ View │ ← Activity/Fragment (Layer UI)
│ (Activity/ │
│ Fragment) │
└──────┬──────┘
│ observes
▼
┌─────────────┐
│ ViewModel │ ← Logic Bisnis & Manajemen State
│ │
└──────┬──────┘
│ uses
▼
┌─────────────┐
│ Repository │ ← Layer Data (Single Source of Truth)
│ │
└──────┬──────┘
│ ambil dari
├────────────┬──────────────┐
▼ ▼ ▼
┌─────────┐ ┌──────────┐ ┌──────────┐
│Database │ │ API │ │ Cache │
│ Lokal │ │ Remote │ │ │
│ (Room) │ │(Retrofit)│ │ │
└─────────┘ └──────────┘ └──────────┘
presentation/ # Layer UI (Activities, Fragments, ViewModels)
│
domain/ # Layer Logic Bisnis (Use Cases, Models)
│
data/ # Layer Data
├── local/ # Database Lokal (Room)
├── remote/ # Layanan API (Retrofit)
└── repository/ # Implementasi Repository
graph LR
A[Aksi User] --> B[View/Fragment]
B --> C[ViewModel]
C --> D[Use Case]
D --> E[Repository]
E --> F{Sumber Data}
F -->|Lokal| G[Database Room]
F -->|Remote| H[REST API]
F -->|Cache| I[Memory Cache]
G --> E
H --> E
I --> E
E --> D
D --> C
C -->|LiveData/Flow| B
B --> J[Update UI]
- Bahasa: Java
- Min SDK: 24 (Android 7.0)
- Target SDK: 34 (Android 14)
- Build System: Gradle (KTS)
- MVVM (Model-View-ViewModel)
- Clean Architecture
- Repository Pattern
- Dependency Injection - Hilt/Dagger
- Lifecycle - ViewModel, LiveData
- Navigation - Navigation Component
- Room - Database Lokal
- DataBinding - View Binding & Data Binding
- WorkManager - Background tasks
- Retrofit - REST API client
- OkHttp - HTTP client & interceptor
- Gson - JSON serialization
- Glide - Image loading
- Material Design 3 - Komponen UI
- ViewPager2 - Swipeable views
- RecyclerView - Optimasi list
- CardView - Card layouts
- ConstraintLayout - Responsive layouts
- BottomSheet - Modal bottom sheets
- Encrypted SharedPreferences - Penyimpanan aman
- SSL Pinning - Keamanan jaringan
- ProGuard/R8 - Code obfuscation
- CameraX - Integrasi kamera
- PDF Viewer - Tampilan dokumen
- Git - Version control
- Android Studio - IDE
- Insomnia - Testing API
- Android Studio Hedgehog | 2023.1.1+
- JDK 17+
- Android SDK 34
- Gradle 8.0+
- Clone Repository
git clone https://github.com/ilhamrhmtkbr/iamra-course-apk.git
cd iamra-course-apk- Konfigurasi Local Properties
# Copy file example
cp local.properties.example local.properties
# Edit local.properties
nano local.propertiesTambahkan konfigurasi:
sdk.dir=/path/to/Android/sdk
BASE_URL=https://api.backend-kamu.com/
API_KEY=api_key_kamu- Konfigurasi Keystore (untuk Release)
# Buat folder keystore
mkdir key
# Generate keystore (opsional - untuk production)
keytool -genkey -v -keystore key/my-release-key.keystore \
-alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
# Buat keystore.properties
cp keystore.properties.example keystore.properties
nano keystore.propertiesEdit keystore.properties:
storePassword=password_store_kamu
keyPassword=password_key_kamu
keyAlias=my-key-alias
storeFile=../key/my-release-key.keystore- Sync Gradle
./gradlew clean
./gradlew build- Jalankan Aplikasi
- Buka proyek di Android Studio
- Pilih device/emulator
- Klik Run
▶️
iamra-course-apk/
├── app/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/ilhamrhmtkbr/
│ │ │ │ ├── core/ # Utilitas inti
│ │ │ │ │ ├── auth/ # Autentikasi
│ │ │ │ │ ├── base/ # Base classes
│ │ │ │ │ ├── network/ # Layer jaringan
│ │ │ │ │ └── utils/ # Utilitas
│ │ │ │ │
│ │ │ │ ├── data/ # Layer data
│ │ │ │ │ ├── local/ # Database lokal
│ │ │ │ │ │ ├── dao/ # Room DAOs
│ │ │ │ │ │ ├── entity/ # Room entities
│ │ │ │ │ │ └── database/ # Konfigurasi database
│ │ │ │ │ ├── remote/ # API remote
│ │ │ │ │ │ ├── api/ # Layanan API
│ │ │ │ │ │ └── dto/ # Data transfer objects
│ │ │ │ │ └── repository/ # Repositories
│ │ │ │ │
│ │ │ │ ├── domain/ # Logic bisnis
│ │ │ │ │ ├── model/ # Domain models
│ │ │ │ │ └── usecase/ # Use cases
│ │ │ │ │
│ │ │ │ ├── presentation/ # Layer UI
│ │ │ │ │ ├── activity/ # Activities
│ │ │ │ │ │ ├── forum/ # Modul forum
│ │ │ │ │ │ ├── instructor/# Modul instruktur
│ │ │ │ │ │ ├── onboarding/# Onboarding
│ │ │ │ │ │ ├── public/ # Modul guest
│ │ │ │ │ │ ├── student/ # Modul siswa
│ │ │ │ │ │ ├── userauth/ # Autentikasi
│ │ │ │ │ │ └── usermember/# Modul member
│ │ │ │ │ │
│ │ │ │ │ ├── fragment/ # Fragments
│ │ │ │ │ ├── viewmodel/ # ViewModels
│ │ │ │ │ ├── adapter/ # RecyclerView adapters
│ │ │ │ │ └── dialog/ # Custom dialogs
│ │ │ │ │
│ │ │ │ └── di/ # Dependency injection
│ │ │ │
│ │ │ ├── res/ # Resources
│ │ │ │ ├── layout/ # XML layouts
│ │ │ │ ├── drawable/ # Drawables
│ │ │ │ ├── values/ # Values (strings, colors, dll.)
│ │ │ │ ├── menu/ # Menu resources
│ │ │ │ └── navigation/ # Navigation graphs
│ │ │ │
│ │ │ └── AndroidManifest.xml
│ │ │
│ │ └── test/ # Unit tests
│ │
│ └── build.gradle.kts
│
├── gradle/
│ └── libs.versions.toml # Katalog versi
├── build.gradle.kts
├── settings.gradle.kts
├── gradle.properties
├── local.properties.example # Contoh config
├── keystore.properties.example # Contoh keystore config
├── .gitignore
├── README.md
└── docs/ # Website dokumentasi
├── index.html
├── font/
└── webp/ # Screenshot
./gradlew assembleDebugOutput: app/build/outputs/apk/debug/app-debug.apk
./gradlew assembleReleaseOutput: app/build/outputs/apk/release/app-release.apk
./gradlew bundleReleaseOutput: app/build/outputs/bundle/release/app-release.aab
Kontribusi sangat terbuka! Silakan ikuti langkah berikut:
- Fork repository ini
- Buat branch fitur (
git checkout -b fitur/FiturKeren) - Commit perubahan (
git commit -m 'Tambah fitur keren') - Push ke branch (
git push origin fitur/FiturKeren) - Buat Pull Request
- Ikuti Android Kotlin Style Guide
- Tulis commit message yang jelas
- Tambahkan unit test untuk fitur baru
- Update dokumentasi jika diperlukan
Proyek ini dilisensikan dengan MIT License - lihat file LICENSE untuk detail.
MIT License
Copyright (c) 2025 Ilham Rahmat Akbar
Izin diberikan secara cuma-cuma kepada siapa pun yang mendapatkan salinan
perangkat lunak ini dan file dokumentasi terkait ("Perangkat Lunak"), untuk
menggunakan Perangkat Lunak tanpa batasan, termasuk namun tidak terbatas pada
hak untuk menggunakan, menyalin, memodifikasi, menggabungkan, menerbitkan,
mendistribusikan, mensublisensikan, dan/atau menjual salinan Perangkat Lunak,
dan untuk mengizinkan orang yang menerima Perangkat Lunak untuk melakukannya,
dengan ketentuan berikut:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus disertakan
dalam semua salinan atau bagian penting dari Perangkat Lunak.
PERANGKAT LUNAK DISEDIAKAN "SEBAGAIMANA ADANYA", TANPA JAMINAN APA PUN, BAIK
TERSURAT MAUPUN TERSIRAT, TERMASUK NAMUN TIDAK TERBATAS PADA JAMINAN
PERDAGANGAN, KESESUAIAN UNTUK TUJUAN TERTENTU, DAN NON-PELANGGARAN. DALAM
KEADAAN APA PUN PENULIS ATAU PEMEGANG HAK CIPTA TIDAK BERTANGGUNG JAWAB ATAS
KLAIM, KERUSAKAN, ATAU KEWAJIBAN LAINNYA, BAIK DALAM TINDAKAN KONTRAK,
KESALAHAN, ATAU LAINNYA, YANG TIMBUL DARI, ATAU SEHUBUNGAN DENGAN PERANGKAT
LUNAK ATAU PENGGUNAAN ATAU TRANSAKSI LAIN DALAM PERANGKAT LUNAK.
Ilham Rahmat Akbar
- GitHub: @ilhamrhmtkbr
- LinkedIn: Ilham Rahmat Akbar
- Email: ilhamrhmtkbr@gmail.com
- Android Documentation
- Material Design
- Retrofit
- Glide
- Hilt
- Semua kontributor open source
Jika ada pertanyaan atau butuh bantuan:
- Cek Dokumentasi
- Buka Issue
- Kontak via email: ilhamrhmtkbr@gmail.com
⭐ Jika proyek ini bermanfaat, kasih bintang ya! ⭐
Dibuat oleh Ilham Rahmat Akbar












































