このパッケージは、バックエンドにHaskellとFrontendにELMを使用してWebサーバーを作成するための、モダンな生産レベルのバッテリーが含む開始テンプレートであることを目的としています。 3層ケーキに従います。アーキテクチャパターン。
ここで使用されているHaskellライブラリ:
relude :代替プレリュード。ここではbase-nopreludeトリックが使用されています。co-log :Composable Commonadic Logging Library。postgresql-simple :データベースインタラクションのための中間レベルのPostgreSQLクライアントライブラリ。servant :Webサービスを定義するためのライブラリのファミリーは、タイプレベルでAPIを測定します。elm-street :ELMとHaskellの間のブリッジ - Haskell型から自動的にELMデータ型、JSONエンコーダー、デコーダーを生成します。proto-lens :モバイルアプリケーションと統合するためのProtoBufメッセージ。ekg :アプリケーションのパフォーマンス監視。bcrypt :パスワードハッシュ関数。jwt :JWT経由のユーザー認証。hspecおよびhedgehog :ライブラリのテスト。 このセクションには、選択したアーキテクチャのより詳細な説明とその特定の実装が含まれています。
アプリケーション全体のランタイム環境のデータ型はLib/App/Env.hsモジュールで定義されています。データベースプール、JWT Secret、Loggerなどのアプリケーション処理に必要なさまざまなフィールドが含まれています。また、アプリケーションのさまざまな部分を抽出する方法を説明するカスタムHasインスタンスがあります。これは、次の目的を達成するために行われます。
環境初期化は、 Lib.hsモジュールで行われています。
モジュールLib/App/Error.hsには、アプリケーションがスローできるすべてのエラーの徹底的なリストが含まれています。このモジュールは、人間の読み取り可能なエラー名とHTTPエラーコードの間の便利なレイヤーを提供します。また、エラーをスローするための便利なユーティリティや、エラーのCallStackをフォーマットするためにも含まれています。
メインアプリケーションMonadはLib/App/Monad.hsモジュールにあります。
このテンプレートは、PostgreSQLデータベースを使用し、 postgresql-simpleライブラリの関数に関するヘルパーラッパーを含み、Smootherを独自のMonadと統合します。詳細については、 Lib/Db/Functions.hs参照してください。
すべての新しいエフェクト(メールの送信など。ファイルの保存など)はLib/Effects/ Directoryに追加する必要があります。