Este paquete tiene como objetivo ser una plantilla de inicio moderna, a nivel de producción, incluida las baterías para escribir servidores web con Haskell en Backend y ELM en Frontend. Sigue el pastel de tres capas. Patrón de arquitectura.
Bibliotecas de Haskell utilizadas aquí:
relude : preludio alternativo; Aquí se usa el truco base-noprelude .co-log : Biblioteca de registro Comonadic Comonadic componible.postgresql-simple : Biblioteca de cliente PostgreSQL de nivel medio para la interacción de la base de datos.servant : Familia de bibliotecas para definir la API REST WebServices en nivel de tipo.elm-street : puente entre ELM y Haskell - Generación de tipos de datos ELM, codificadores y decodificadores JSON automáticamente de los tipos de Haskell.proto-lens : Mensajes ProtoBuf para integración con la aplicación móvil.ekg : Monitoreo del rendimiento de la aplicación.bcrypt : Funciones de hashing de contraseña.jwt : autenticación de usuario a través de JWT.hspec y hedgehog : Bibliotecas de prueba. Esta sección contiene una descripción más detallada de la arquitectura elegida y nuestra implementación particular de la misma.
El tipo de datos para el entorno de tiempo de ejecución para toda la aplicación se define en el módulo Lib/App/Env.hs . Contiene varios campos requeridos para el procesamiento de la aplicación, como el grupo de bases de datos, JWT Secret, Logger, etc. También tiene una instancia de Custom Has TypecLass que indica cómo extraer diferentes partes de la aplicación. Esto se hace para lograr los siguientes propósitos:
La inicialización del entorno está ocurriendo en el módulo Lib.hs
Módulo Lib/App/Error.hs contiene una lista exhaustiva de todos los errores que la aplicación puede lanzar. Este módulo proporciona una capa conveniente entre los nombres de errores legibles por humanos y los códigos de error HTTP. También contiene utilidades útiles para lanzar errores y para formatear CallStack de errores.
La monad principal de la aplicación se puede encontrar en el módulo Lib/App/Monad.hs .
Esta plantilla utiliza la base de datos PostgreSQL y contiene envoltorios auxiliares en torno a las funciones de la biblioteca postgresql-simple para integrar más suaves con nuestra propia mónada. Consulte Lib/Db/Functions.hs para más detalles.
Todos los efectos nuevos (como enviar un correo electrónico. Al almacenar el archivo, etc.) deben agregarse a la Lib/Effects/ directorio.