- Pada skeleton kode yang terdapat file
main.test.js
tidak boleh diubah sama sekali. - Dilarang mengganti nama function yang diberikan.
- Dilarang mengganti atau mengutak-atik file pada folder
server
. - Wajib menjalankan
npm install
ataupnpm install
sebelum mengerjakan final project.
Untuk final project kali ini, terdapat sisi client dan server. Pada sisi server berada pada folder server
dan kalian hanya diminta untuk menjalankannya dengan perintah npm run start:server
. Sedangkan untuk sisi client kalian diminta untuk membuat CRUD dengan ketentuan dibawah ini.
Pastikan ketika teman-teman melakukan request selain GET
untuk menambahkan header application/json
.
Untuk proses create kalian diminta untuk mengerjakan pada file AddPhoto.jsx
, dan melakukan POST
data ke API yang terdapat pada local server dengan url berikut:
http://localhost:3001/photos
atau
https://gallery-app-server.vercel.app/photos
Kalian diminta untuk melakukan create new data yang akan dikirim ke server. Data yang perlu kalian buat terdiri dari beberapa hal, yaitu:
-
imageUrl
: berisi url dari photo yang akan kalian upload dalam bentukstring
. -
captions
: berisi captions dari photo yang akan kalian upload dalam bentukstring
. -
createdAt
: berisi tanggal dan waktu kapan kalian upload dalam bentukstring
. -
updatedAt
: berisi tanggal dan waktu kapan kalian upload atau terkahir kali kalian melakukan edit/update data dalam bentukstring
. -
secret
: berisisecret
untuk melakukan upload data dalam bentukstring
.secret
memiliki beberapa ketentuan, antara lain:- Memiliki nilai berupa
string
"password". - Jika nilai pada
secret
berupastring
"password", maka proses create berhasil dan halaman berpidah ke path/photos
dan menampilkan seluruh data termasuk data terbaru yang di uplaod. - Jika nilai pada
secret
TIDAK berupastring
"password", maka proses create di nyatakan gagal dan pada bagian atasform
akan menunjukan error messege yang di bawa dari server berupa "You are not authorized".
- Memiliki nilai berupa
Fields | Data type |
---|---|
imageUrl | string |
captions | string |
createdAt | string |
updatedAt | string |
secret | string |
Untuk createdAt
dan updatedAt
tidak perlu dibuat fields khusus pada form, kalian diperbolehkan memberikan nilainya secara langsung pada bagian body
yang dikirim pada method fetch
.
Untuk proses read all kalian diminta untuk mengerjakan pada file Photos.jsx
, dan melakukan GET
data dari API yang terdapat pada local server dengan url berikut:
http://localhost:3001/photos
atau
https://gallery-app-server.vercel.app/photos
Setiap kali component Photos
dirender maka secara otomatis data akan langsung di tampilkan. Pada file ini juga kalian diminta untuk melakukan sort by id dan search data yang akan dilakukan pada server dengan cara melempar query params pada url dengan format berikut:
_sort
: parameter yang digunakan untuk menentukan berdasarkan properti apa yang digunakan ketika melakukan sort data. misal,_sort=id
_order
: parameter yang digunakan untuk menentukan bentuk urutan ketika melakukan sort data. misal,_order=asc
q
: parameter yang digunakan untuk mencari data berdasarkan keyword yang dijadikan valuenya. misal, ketika kita ingin mencari data dengan kata "banyak", maka kita bisa melakukannya dengan caraq=banyak
Untuk proses read by id kalian diminta untuk mengerjakan pada file EditPhoto.jsx
, dan melakukan GET
data berdasarkan id
dari API yang terdapat pada local server dengan url berikut:
http://localhost:3001/photos/<photo id>
atau
https://gallery-app-server.vercel.app/photos <photo id>
Ketika data dari server sudah di dapat maka secara otomatis akan di tampilkan pada form
.
Untuk proses update kalian diminta untuk mengerjakan pada file EditPhoto.jsx
, dan melakukan PATCH
data berdasarkan id
ke API yang terdapat pada local server dengan url berikut:
http://localhost:3001/photos/<photo id>
atau
https://gallery-app-server.vercel.app/photos <photo id>
Kalian diminta untuk melakukan update data yang akan dikirim ke server. Data yang perlu kalian update terdiri dari beberapa hal, yaitu:
imageUrl
: berisi url dari photo yang akan kalian upload dalam bentukstring
.captions
: berisi captions dari photo yang akan kalian upload dalam bentukstring
.updatedAt
: berisi tanggal dan waktu kapan kalian upload atau terkahir kali kalian melakukan edit/update data dalam bentukstring
.
Fields | Data type |
---|---|
imageUrl | string |
captions | string |
updatedAt | string |
Jika proses update data berhasil maka halaman berpidah ke path /photos
dan menampilkan seluruh data termasuk data terbaru yang di update.
Untuk updatedAt
tidak perlu dibuat fields khusus pada form, kalian diperbolehkan memberikan nilainya secara langsung pada bagian body
yang dikirim pada method fetch
.
Untuk proses delete kalian diminta untuk mengerjakan pada file Photos.jsx
didalam function deletePhoto
, dan melakukan DELETE
data berdasarkan id
ke API yang terdapat pada local server dengan url berikut:
http://localhost:3001/photos/<photo id>
atau
https://gallery-app-server.vercel.app/photos <photo id>
Pastikan setiap kali data dihapus maka data tersebut langsung hilang dari tampilan di browser tanpa perlu dilakukan refresh.