Modern webserver in Haskell: Graphql + Postgresql + Authentication + DB migration + Dotenv and more
Haskell
123
52 commits
updated Mar 29, 2023
schema.graphql 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!
}
dbmate (https://github.com/amacneil/dbmate)Data.PoolThis boilerplate wires up:
envy.env:
$ cp .env.default .env
DATABASE_URL="postgres://Dandoh:dandoh@127.0.0.1:5432/webhaskell?sslmode=disable"
JWT_SECRET="my_jwt_secret"
$ dbmate up
$ stack run
Now GraphQL API is at http://localhost:8080/api
You can also access Graphql Playground at http://localhost:8080/graphiql

Feed in you database & secret in .env:
$ cp .env.default .env
(Optional) Edit anything you need in the .env file
Create and start docker containers
$ docker-compose up
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
PR are more than welcome. The only note is we use ormolu to format codes.
Haskell
78.4%
PLpgSQL
11.3%
HTML
6.3%
Shell
1.8%
Dockerfile
1.8%
Modern webserver in Haskell: Graphql + Postgresql + Authentication + DB migration + Dotenv and more
Haskell
123
52 commits
updated Mar 29, 2023
schema.graphql 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!
}
dbmate (https://github.com/amacneil/dbmate)Data.PoolThis boilerplate wires up:
envy.env:
$ cp .env.default .env
DATABASE_URL="postgres://Dandoh:dandoh@127.0.0.1:5432/webhaskell?sslmode=disable"
JWT_SECRET="my_jwt_secret"
$ dbmate up
$ stack run
Now GraphQL API is at http://localhost:8080/api
You can also access Graphql Playground at http://localhost:8080/graphiql

Feed in you database & secret in .env:
$ cp .env.default .env
(Optional) Edit anything you need in the .env file
Create and start docker containers
$ docker-compose up
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
PR are more than welcome. The only note is we use ormolu to format codes.
Haskell
78.4%
PLpgSQL
11.3%
HTML
6.3%
Shell
1.8%
Dockerfile
1.8%