Этот пакет предназначен для того, чтобы быть современным начальным шаблоном на уровне производства, включенным в батареи для написания веб-серверов с Haskell на бэкэнд и ELM на Frontend. Это следует за тремя слоевым тортом. Архитектура шаблон.
Библиотеки Haskell, используемые здесь:
relude : Альтернативная прелюдия; Здесь используется трюк base-noprelude .co-log : Компонируемая противополученная библиотека ведения комонадических журналов.postgresql-simple : клиентская библиотека среднего уровня для взаимодействия с базой данных.servant : Семья библиотек для определения API веб-сервисов REST на уровне типа.elm-street : мост между ELM и Haskell - создание типов данных ELM, кодеры JSON и декодеры автоматически от типов Haskell.proto-lens : Protobuf-сообщения для интеграции с мобильным приложением.ekg : мониторинг производительности приложения.bcrypt : Функции хеширования пароля.jwt : аутентификация пользователя через JWT.hspec и hedgehog : тестирование библиотек. Этот раздел содержит более подробное описание выбранной архитектуры и нашей конкретной реализации ее.
Тип данных для среды выполнения для всего приложения определяется в модуле Lib/App/Env.hs . Он содержит различные поля, необходимые для обработки приложений, такие как пул баз данных, JWT Secret, Logger и т. Д. У него также есть экземпляр пользовательского, который Has тип, который сообщает, как извлечь разные части приложения. Это сделано для достижения следующих целей:
Инициализация среды происходит в модуле Lib.hs
Module Lib/App/Error.hs содержит исчерпывающий список всех ошибок, которые может добавить приложение. Этот модуль обеспечивает удобный слой между именами ошибок, читаемых человеком и кодами ошибок HTTP. Он также содержит полезные утилиты для броска ошибок и для форматирования CallStack ошибок.
Основное приложение Monad можно найти в модуле Lib/App/Monad.hs .
Этот шаблон использует базу данных PostgreSQL и содержит вспомогательные обертки вокруг функций из библиотеки postgresql-simple чтобы интегрировать более плавную с нашей собственной монадой. См. Lib/Db/Functions.hs для более подробной информации.
Все новые эффекты (например, отправка электронной почты. Хранение файла и т. Д.) Должно быть добавлено в Lib/Effects/ Directory.