Aplikasi ini merupakan contoh implementasi fullstack yang terdiri dari backend Laravel dan frontend Android menggunakan Jetpack Compose. Aplikasi ini memungkinkan pengguna untuk mengelola data siswa, melakukan autentikasi, dan menyimpan data ke daftar favorit.
Admin dapat menambahkan, mengedit, dan menghapus pengguna.
Role-based access untuk mengontrol fitur yang bisa diakses oleh masing-masing peran.
- Guru dapat menginput nilai dan absensi siswa.
- Siswa dapat melihat jadwal, nilai, dan absensi mereka.
- Sistem login dengan validasi berbasis peran.
- Middleware untuk membatasi akses fitur berdasarkan peran.
- Tampilan UI yang intuitif untuk masing-masing peran (Admin, Teacher, dan Student).
Link Video Guide : https://drive.google.com/file/d/1ESD0gGXJmZiAfhUs4LVieROqP-OzIsCa/view?usp=sharing
Untuk menjalankan backend Laravel, ikuti langkah-langkah berikut:
-
Instal Laravel (Jika belum terinstal):
Jika Anda belum menginstal Laravel, instal secara global dengan Composer:
composer global require laravel/installer
-
Clone Repository:
Clone repository backend dari GitHub:
git clone https://github.com/NoBody313/StudentManagement-API.git
-
Install Dependencies:
Masuk ke folder proyek dan instal dependensi:
cd StudentManagement-API composer install -
Konfigurasi Environment:
Salin file
.env.exampleke.env:cp .env.example .env
Atur konfigurasi database, mail, dan lainnya sesuai kebutuhan di file
.env. Pastikan konfigurasi database sesuai dengan database yang Anda gunakan (MySQL, PostgreSQL, dll.). -
Menjalankan Migrate:
Jalankan migration untuk membuat tabel database:
php artisan migrate
-
Menjalankan generate JWT Secret:
Generate JWT secret key untuk autentikasi:
php artisan jwt:secret
-
Menjalankan Server Laravel:
Jalankan server Laravel dengan opsi host dan port. Ganti
192.168.220.95dengan IP lokal komputer Anda jika berbeda. Pastikan komputer dan perangkat Android berada dalam jaringan yang sama.php artisan serve --host=192.168.220.95 --port=8000
Server Laravel akan berjalan pada
http://192.168.220.95:8000.
Konfigurasikan Retrofit untuk mengarah ke URL server Laravel yang berjalan pada host dan port yang telah Anda tentukan.
Kode Retrofit Instance:
object RetrofitInstance {
private const val BASE_URL = "[http://192.168.220.95:8000/](http://192.168.220.95:8000/)"
fun getRetrofitInstance(context: Context): ApiService {
val client = OkHttpClient.Builder()
.addInterceptor(AuthInterceptor(context))
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build()
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()
return retrofit.create(ApiService::class.java)
}
}Pastikan BASE_URL sesuai dengan host dan port yang digunakan di Laravel. Ganti 192.168.220.95 dengan IP lokal komputer Anda jika berbeda.
Ubah konfigurasi di res/xml/network_security_config.xml untuk mengizinkan koneksi ke server lokal yang menggunakan HTTP.
network_security_config.xml:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">192.168.220.95</domain>
</domain-config>
</network-security-config>Pastikan untuk mengganti 192.168.220.95 dengan IP lokal Anda jika berbeda.
Berikut adalah daftar endpoint API yang dapat digunakan untuk berinteraksi dengan aplikasi:
-
POST /api/login: Login pengguna.Body Request:
{ "email": "johndoe@example.com", "password": "password123" }Response:
{ "access_token": "your_generated_token_here" } -
POST /api/register: Registrasi pengguna baru.Body Request:
{ "name": "John Doe", "email": "johndoe@example.com", "password": "password123", "password_confirmation": "password123" }
-
GET /api/students: Mendapatkan daftar semua siswa.Response:
[ { "id": 1, "name": "Student Name", "email": "student@example.com", "age": 20 // ... (field lainnya) } ] -
GET /api/students/{id}: Mendapatkan data siswa berdasarkan ID.Response:
{ "id": 1, "name": "Student Name", "email": "student@example.com", "age": 20 // ... (field lainnya) } -
POST /api/students: Menambah siswa baru.Body Request:
{ "name": "New Student", "age": 21, "email": "newstudent@example.com" // ... (field lainnya) }Response:
{ "id": 2, "name": "New Student", "email": "newstudent@example.com", "age": 21 // ... (field lainnya) } -
PUT /api/students/{id}: Mengubah data siswa berdasarkan ID.Body Request:
{ "name": "Updated Student", "age": 22, "email": "updatedstudent@example.com" // ... (field lainnya) }Response:
{ "id": 2, "name": "Updated Student", "email": "updatedstudent@example.com", "age": 22 // ... (field lainnya) } -
DELETE /api/students/{id}: Menghapus siswa berdasarkan ID.Response:
{ "message": "Student deleted successfully" }
Gunakan Postman untuk menguji API yang telah Anda buat di Laravel.
-
Endpoint:
POST /api/registerBody Request:
{ "name": "John Doe", "email": "johndoe@example.com", "password": "password123", "password_confirmation": "password123" }
Setelah berhasil registrasi, lakukan login untuk mendapatkan token.
-
Endpoint:
POST /api/loginBody Request:
{ "email": "johndoe@example.com", "password": "password123" }Response:
{ "access_token": "your_generated_token_here" }
Gunakan token yang didapatkan dari login untuk mengakses endpoint berikut.
-
Endpoint:
GET /api/userHeaders:
Authorization: Bearer your_generated_token_hereResponse:
{ "id": 1, "name": "John Doe", "email": "johndoe@example.com" }
Gunakan token yang sama untuk mengakses daftar siswa.
-
Endpoint:
GET /api/studentsHeaders:
Authorization: Bearer your_generated_token_hereResponse:
[ { "id": 1, "name": "Student Name", "email": "student@example.com" // ... (field lainnya) } ]
Setelah semua konfigurasi selesai, jalankan aplikasi di Android Studio:
- Pilih Perangkat: Pilih perangkat emulator atau perangkat fisik yang ingin digunakan.
- Emulator: Jika Anda menggunakan emulator, pastikan emulator sudah berjalan.
- Perangkat Fisik: Jika menggunakan perangkat fisik, pastikan perangkat terhubung dengan baik ke Android Studio melalui kabel USB dan telah mengaktifkan opsi Developer Mode serta USB Debugging.
- Jalankan Aplikasi: Klik tombol Run (tanda segitiga hijau) di Android Studio untuk menjalankan aplikasi.
- Pilih Perangkat: Anda bisa memilih perangkat yang terhubung di pop-up yang muncul setelah Anda menekan tombol Run.
Aplikasi Android akan terhubung ke server Laravel dan melakukan request API menggunakan Retrofit.
Aplikasi ini memiliki beberapa fitur utama, yaitu:
- Autentikasi: Pengguna dapat melakukan registrasi dan login untuk mengakses fitur-fitur aplikasi.
- Manajemen Data Siswa: Pengguna dapat melihat daftar siswa, melihat detail siswa, menambah siswa baru, mengubah data siswa, dan menghapus siswa.
- Fitur Favorite:
- Tambah Favorite: Memungkinkan pengguna untuk menyimpan data siswa ke daftar Favorite.
- Alur Tampilan:
- Pengguna melihat daftar siswa di layar utama.
- Di setiap item siswa, terdapat ikon hati (atau ikon lain yang sesuai).
- Pengguna dapat menekan ikon hati tersebut untuk menandai siswa sebagai favorit.
- Ikon hati akan berubah (misalnya, menjadi berwarna atau terisi) untuk menunjukkan bahwa siswa tersebut telah ditambahkan ke favorit.
- Alur Teknis:
- Ketika pengguna menekan ikon hati, aplikasi akan memanggil fungsi
onFavoriteChangeddiStudentListItem. - Fungsi ini akan menerima parameter
newIsFavoriteyang menunjukkan status favorit yang baru (true atau false). - Aplikasi akan memanggil
studentRepository.updateFavoriteStatus(student.id, newIsFavorite)untuk memperbarui status favorit di database lokal (Room). - Aplikasi akan memperbarui daftar
favoriteStudentsdengan data terbaru dari database. - UI akan diperbarui untuk mencerminkan perubahan status favorit.
- Ketika pengguna menekan ikon hati, aplikasi akan memanggil fungsi
- Alur Tampilan:
- Lihat Favorite: Menampilkan daftar siswa Favorite yang telah disimpan.
- Alur Tampilan:
- Pengguna dapat mengakses layar "Favorite" melalui menu navigasi (misalnya, bottom navigation).
- Layar "Favorite" akan menampilkan daftar siswa yang telah ditandai sebagai favorit.
- Setiap item siswa akan menampilkan informasi siswa dan ikon hati yang sudah terisi.
- Alur Teknis:
- Ketika pengguna membuka layar "Favorite", aplikasi akan mengambil data siswa favorit dari database lokal (Room) menggunakan
studentDao.getAllStudents(). - Aplikasi akan memfilter data siswa dari API yang memiliki
isFavoritetrue. - Data siswa favorit tersebut akan ditampilkan di layar "Favorite".
- Ketika pengguna membuka layar "Favorite", aplikasi akan mengambil data siswa favorit dari database lokal (Room) menggunakan
- Alur Tampilan:
- Hapus Favorite: Memungkinkan pengguna untuk menghapus data siswa dari daftar Favorite.
- Alur Tampilan:
- Pengguna melihat daftar siswa di layar "Favorite".
- Di setiap item siswa, terdapat ikon hati yang sudah terisi.
- Pengguna dapat menekan ikon hati tersebut untuk menghapus siswa dari favorit.
- Ikon hati akan berubah (misalnya, menjadi tidak berwarna atau kosong) untuk menunjukkan bahwa siswa tersebut telah dihapus dari favorit.
- Alur Teknis:
- Ketika pengguna menekan ikon hati, aplikasi akan memanggil fungsi
onFavoriteChangeddiStudentListItem. - Fungsi ini akan menerima parameter
newIsFavoriteyang menunjukkan status favorit yang baru (false). - Aplikasi akan memanggil
studentRepository.updateFavoriteStatus(student.id, newIsFavorite)untuk memperbarui status favorit di database lokal (Room). - Aplikasi akan memperbarui daftar
favoriteStudentsdengan data terbaru dari database. - UI akan diperbarui untuk mencerminkan perubahan status favorit.
- Ketika pengguna menekan ikon hati, aplikasi akan memanggil fungsi
- Alur Tampilan:
- Tambah Favorite: Memungkinkan pengguna untuk menyimpan data siswa ke daftar Favorite.
Untuk memberikan gambaran lebih jelas mengenai tampilan aplikasi, berikut adalah beberapa gambar yang menunjukkan antarmuka aplikasi Android yang terhubung dengan backend Laravel.
- Tampilan Login
- Tampilan Dashboard
- Tampilan Profile
- Tampilan Daftar Siswa
- Tampilan Daftar Favorite
![]() |
![]() |
![]() |
|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Dengan mengikuti langkah-langkah ini, aplikasi Android Anda akan dijalankan dan berkomunikasi dengan server backend Laravel.
- IP Lokal: Pastikan untuk mengganti
192.168.220.95dengan IP lokal komputer Anda di semua konfigurasi (Laravel, Retrofit, dan Network Security). - Jaringan: Pastikan komputer dan perangkat Android berada dalam jaringan yang sama.
- Database: Pastikan konfigurasi database di file
.envsudah benar dan sesuai dengan database yang Anda gunakan. - JWT Secret: Pastikan Anda sudah menjalankan
php artisan jwt:secretuntuk generate JWT secret key. - Postman: Gunakan Postman untuk menguji semua endpoint API sebelum menjalankan aplikasi Android.
- Error Handling: Jika terjadi error, periksa log di Android Studio dan log di server Laravel untuk mencari tahu penyebabnya.
- Model dan Entity: Pastikan model dan entity yang kamu gunakan sudah sesuai dengan struktur data yang ada di database.
- Mapper: Pastikan mapper yang kamu gunakan sudah sesuai dengan model dan entity yang kamu gunakan.
























