Paket ini bertujuan menjadi templat awal modern, tingkat produksi, yang termasuk baterai untuk menulis server web dengan Haskell di Backend dan Elm di Frontend. Ini mengikuti kue tiga lapisan. pola arsitektur.
Perpustakaan Haskell digunakan di sini:
relude : Alternative Prelude; Di sini trik base-noprelude digunakan.co-log : Perpustakaan logging comonadic yang dapat dikomposisi.postgresql-simple : Perpustakaan klien PostgreSQL tingkat menengah untuk interaksi basis data.servant : Keluarga Perpustakaan untuk Mendefinisikan API Rest Servis Web pada Type-Level.elm-street : Jembatan antara Elm dan Haskell - Menghasilkan tipe data ELM, encoder JSON dan decoder secara otomatis dari tipe Haskell.proto-lens : Pesan Protobuf untuk Integrasi dengan Aplikasi Seluler.ekg : Pemantauan Kinerja Aplikasi.bcrypt : Fungsi Hashing Kata Sandi.jwt : Otentikasi Pengguna melalui JWT.hspec dan hedgehog : Perpustakaan Menguji. Bagian ini berisi deskripsi yang lebih rinci tentang arsitektur yang dipilih dan implementasi khusus kami.
Jenis data untuk lingkungan runtime untuk seluruh aplikasi didefinisikan dalam modul Lib/App/Env.hs . Ini berisi berbagai bidang yang diperlukan untuk pemrosesan aplikasi, seperti kumpulan basis data, JWT Secret, Logger, dll. Ini juga memiliki contoh kustom Has Typeclass yang menceritakan cara mengekstrak berbagai bagian aplikasi. Ini dilakukan untuk mencapai tujuan berikut:
Inisialisasi lingkungan terjadi di modul Lib.hs
Modul Lib/App/Error.hs berisi daftar lengkap semua kesalahan yang dapat dilemparkan aplikasi. Modul ini menyediakan lapisan yang nyaman antara nama kesalahan yang dapat dibaca manusia dan kode kesalahan HTTP. Ini juga berisi utilitas yang berguna untuk melempar kesalahan dan untuk memformat CallStack kesalahan.
Aplikasi utama Monad dapat ditemukan di modul Lib/App/Monad.hs .
Template ini menggunakan database PostgreSQL dan berisi pembungkus penolong di sekitar fungsi dari pustaka postgresql-simple untuk mengintegrasikan lebih halus dengan monad kami sendiri. Lihat Lib/Db/Functions.hs untuk lebih jelasnya.
Semua efek baru (seperti mengirim email. Menyimpan file, dll.) Harus ditambahkan ke Lib/Effects/ direktori.