Study
Yesod

Tugas Akhir

Penjelasan

Tugas akhir ini menggabungkan seluruh topik yang sudah dipelajari: routing type-safe, Persistent entity dan query, yesod-form, autentikasi dasar, error handling, dan JSON API. Tujuannya membangun mini aplikasi blog di mana user yang login bisa membuat artikel lewat form HTML, dan artikel yang sama juga bisa diakses publik lewat endpoint JSON untuk konsumsi eksternal. Kerjakan bertahap: mulai dari entity Artikel di config/models, lalu route HTML (index, new, detail) dan route API (/api/artikel), lalu form artikelForm dengan yesod-form, proteksi requireAuthId pada route pembuatan artikel, dan terakhir handler JSON yang mengembalikan daftar artikel publik.

Tugas

Bangun fitur berikut di project blog_app: (1) entity Artikel di config/models dengan field judul, isi, publishedAt; (2) route ArtikelR (index), ArtikelNewR (form create, wajib login lewat requireAuthId), ArtikelDetailR (#ArtikelId, pakai get404); (3) artikelForm dengan yesod-form untuk judul dan isi; (4) route ApiArtikelR yang mengembalikan semua artikel sebagai JSON lewat returnJson; (5) minimal satu test yesod-test yang memverifikasi GET ArtikelR mengembalikan status 200.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Manfaatkan kompiler Haskell sebagai alat bantu utama: jika stack build gagal karena tipe tidak cocok, itu justru menandakan ada kesalahan logic yang berhasil ditangkap lebih awal sebelum aplikasi dijalankan.