GitHub - dandoh/web-haskell-graphql-postgres-boilerplate: Modern webserver in Haskell: Graphql + Postgresql + Authentication + DB migration + Dotenv and more

Skip to content

Navigation Menu

Sign in

Appearance settings

Modern Haskell Webserver Boilerplate

  • Graphql API
      type User {
          id: Int!
          email: String!
          name: String!
          updatedAt: String!
          createdAt: String!
      }
    
      type Session {
          token: String!
          user: User!
      }
    
      type Query {
          login(email: String!, password: String!): Session!
          myUserInfo: User!
      }
    
      type Mutation {
          register(email: String!, password: String!, name: String!): Session!
          changePassword(oldPassword: String!, newPassword: String!): Boolean!
      }
  • Database:

This boilerplate wires up:

  • Reading .env using envy
  • Database
  • Graphql API
  • Authorization using JWT
  • Monad transformers

Running

  • Feed in you database & secret in .env:
    DATABASE_URL="postgres://Dandoh:dandoh@127.0.0.1:5432/webhaskell?sslmode=disable"
    JWT_SECRET="my_jwt_secret"
  • Migrations
  • Run webserver

Now GraphQL API is at http://localhost:8080/api

You can also access Graphql Playground at http://localhost:8080/graphiql

Playground

Running on Docker

  • Feed in you database & secret in .env:

  • (Optional) Edit anything you need in the .env file

  • Create and start docker containers

  • Now you can visit: http://localhost:8080/ in your local machine.

  • Migrations will automatically run, and you can run them manually anytime using

    $ docker-compose up dbmate
    
  • Stack will restart whenever you change any .hs file, thanks to entr

Contributors

PR are more than welcome. The only note is we use ormolu to format codes.

About

Modern webserver in Haskell: Graphql + Postgresql + Authentication + DB migration + Dotenv and more

Topics

Resources

Readme

License

MIT license

Activity

Stars

123 stars

Watchers

4 watching

Forks

11 forks