Giter Site home page Giter Site logo

genesis's Introduction

genesis Build Status

Genesis is a project that codifies opinionated Haskell bootstrapping for Haskell web services. Before explaining what Genesis is, it’s important to establish what Genesis is not:

  1. Genesis is not a framework. Genesis does not attempt to be its own framework. Instead, it simply provides a set of useful libraries and glue to help them work well together. By making decisions about which libraries to use, it can provide more specialized, easier to use interfaces than the unopinionated choices of the individual libraries.

  2. Genesis is not scaffolding. “Scaffolding” projects are also called “templates” or “project generators”, and they simply dump a lot of code into your project when you start it. There are serious problems with scaffolding, most notably that they cannot be easily updated, so the code becomes your responsibility to understand and maintain. Genesis is a library, not a generator, so it can be incrementally updated just like anything else.

Genesis is a library that helps to make decisions for you, so you don’t have to spend huge amounts of time reinventing the wheel just to combine different libraries. Currently, the set of technologies Genesis is designed to support are the following:

Currently, Genesis provides two significant features:

  1. Database migrations. Genesis database migrations are not written in Haskell, they are written in SQL, but they are compiled into your application using Template Haskell, so they can be run upon startup. This makes it easy to also run the migrations in a test suite.

  2. Support for running database code in your test suite. If you are building a web service that “owns” its database, it’s often far more trouble than its worth to mock/stub out the database in your tests. Genesis makes it easy to run a test suite against the same database with the same schema that your application runs against.

For more information, see genesis and genesis-test on Hackage.

genesis's People

Contributors

lexi-lambda avatar adlaika avatar jxv avatar

Stargazers

 avatar ChristianEspinoza avatar

Watchers

 avatar Franklin Henderson avatar  avatar James Cloos avatar Stu Penrose avatar  avatar

genesis's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.