Halo teman-teman Android! Ini merupakan final test untuk Back-end Study Club KSM Android UPNVJ. Mohon diikuti langkah-langkah dan ketentuannya untuk lulus dalam Study Club ini.
- Baca detail tugas di bawah
- Clone repository ini (git cmd poin ke 1)
- Buat branch baru (git cmd poin ke 7)
- Pindah ke branch yang baru dibuat (git cmd poin ke 8)
- Setup database, bisa refer ke video ini supaya lebih mudah https://youtu.be/8JPmHZJKB5w atau kalau mau pakai cara lain juga boleh, misalnya sekalian belajar pakai docker, dsb.
- Ubah file .env sesuaikan dengan database local kalian
- Semoga bermanfaat ya buat jadi portfolio! Selamat ngoding! ✨
- Minimal memiliki entity admin dan 2 entity lain yang memiliki relasi 1:n (One to Many) atau m:n (Many to Many) antara 2 entity tersebut
- Web Service API (CRUD) untuk admin dan 2 entity yang dipilih (Hanya admin yang dapat melakukan proses CUD)
- Membuat signup dan login authentication (signup optional, yang wajib hanya login). Apabila login berhasil, maka kembalikan token JWT yang bisa di autentikasi untuk melakukan proses CUD (Create, Update, dan Delete) 2 entity yang dipilih, serta Update dan Delete entity admin
- Membuat authorization middleware untuk cek apakah admin yang yang hit API atau bukan (menggunakan JWT)? Kalau bukan, maka kembalikan error Unauthorized(401).
- Diperbolehkan menambahkan fitur fitur tambahan lain di luar detail tugas
- Diperbolehkan menggunakan database SQL mauapun NoSQL
- Diperbolehkan menggunakan ORM atau framework lain selain contoh di repository ini (repository ini menggunakan express dan native postgresql tanpa ORM)
Misalnya mau membuat API CRUD sederhana terdiri dari 2 entity Film dan Pemain yang memiliki relasi m:n (many to many), maka tabel yang diperlukan adalah:
- admin, dengan kolom:
- id; bigint, primary key, auto increment,
- username; varchar,
- password; varchar,
- film, dengan kolom:
- id; bigint, primary key, auto increment,
- judul_film; varchar,
- rating; int (1-5)
- pemain, dengan kolom:
- id; bigint, primary key, auto increment,
- nama; varchar,
- rating; int (1-5)
- film_pemain_links (Untuk menampung relasi m:n diperlukan junction table atau tabel > tambahan), dengan kolom:
- id; type bigint, primary key, auto increment,
- film_id; int, fk ke film(id),
- pemain_id; int, fk ke pemain(id)
Maka, perlu dibuat login authentication admin serta CRUD untuk film dan pemain. Proses CUD (Create, Update, dan Delete) pada 2 entity memerlukan token JWT yang didapat setelah admin login.
- Melakukan deployment. Contohnya pakai Render (https://www.freecodecamp.org/news/how-to-deploy-nodejs-application-with-render/)
- Membuat error handling sendiri pakai class ataupun middleware
- Menggunakan proses enkripsi password (bcrypt, argon2, dsb.)
- API Read data pemain atau film mengembalikan data join relasinya, misal:
-
Ketika Get Film by id 1, maka juga akan mengembalikan data para pemainnya
Klik buat liat datanya
{ "judul_film": "Gundala", "rating": 5, "pemain": [ { "id": 1, "nama": "Abimana Aryasatya", "rating": 5 }, { "id": 2, "nama": "Pevita Pearce", "rating": 5 }, { "id": 3, "nama": "Tara Basro", "rating": 5 } ] }
-
Ketika Get Cast by id 1, maka juga akan mengembalikan data film yang dimainkan
Klik buat liat datanya
{ "nama": "Abimana Aryasatya", "rating": 5, "film": [ { "id": 1, "judul_film": "Gundala", "rating": 5 } ] }
-
- Contoh FP 2021 menggunakan MongoDB https://github.com/abimnyud/fp-android
- Setup database https://youtu.be/8JPmHZJKB5w
- Authentication dan Authorization https://youtu.be/2jqok-WgelI
-
Clone repository
git clone https://github.com/abimnyud/example-app.git
-
Commit file
git add <file-atau-folder>
kemudiangit commit -m "<messagenya-apa>"
-
Publish commit ke branch yang sekarang
git push
-
Cek lagi di branch mana
git status
-
Cek ada branch apa aja di local
git branch
-
Cek ada branch apa aja di remote dan di local
git branch -a
-
Buat branch baru di local
git branch <nama-branch>
-
Pindah branch
git switch <nama-branch>
ataugit checkout <nama-branch>
-
publish branch dari local ke remote
git push -u origin <nama-branch>
ataugit push --set-upstream origin <nama-branch>
-
.gitignore untuk pengecualian file agar tidak tercommit