{"id":13837532,"url":"https://github.com/dandoh/web-haskell-graphql-postgres-boilerplate","last_synced_at":"2025-10-27T17:30:33.745Z","repository":{"id":43054869,"uuid":"232143068","full_name":"dandoh/web-haskell-graphql-postgres-boilerplate","owner":"dandoh","description":"Modern webserver in Haskell: Graphql + Postgresql + Authentication + DB migration + Dotenv and more","archived":false,"fork":false,"pushed_at":"2023-03-29T14:22:35.000Z","size":120,"stargazers_count":122,"open_issues_count":3,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-02-17T10:38:24.995Z","etag":null,"topics":["database","dbmate","graphql","graphql-api","graphql-server","haskell","jwt","jwt-authentication","migration","morpheus","opaleye","postgresql","scotty","stack","stack-haskell","typesafe","web","webserver","webserver-setup"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dandoh.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-06T16:42:51.000Z","updated_at":"2024-05-30T05:09:34.023Z","dependencies_parsed_at":"2024-05-30T05:09:31.473Z","dependency_job_id":"3a75c66d-f221-434e-8310-4319301840d3","html_url":"https://github.com/dandoh/web-haskell-graphql-postgres-boilerplate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dandoh%2Fweb-haskell-graphql-postgres-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dandoh%2Fweb-haskell-graphql-postgres-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dandoh%2Fweb-haskell-graphql-postgres-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dandoh%2Fweb-haskell-graphql-postgres-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dandoh","download_url":"https://codeload.github.com/dandoh/web-haskell-graphql-postgres-boilerplate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219860931,"owners_count":16556009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","dbmate","graphql","graphql-api","graphql-server","haskell","jwt","jwt-authentication","migration","morpheus","opaleye","postgresql","scotty","stack","stack-haskell","typesafe","web","webserver","webserver-setup"],"created_at":"2024-08-04T15:01:12.986Z","updated_at":"2025-10-27T17:30:33.406Z","avatar_url":"https://github.com/dandoh.png","language":"Haskell","funding_links":[],"categories":["Haskell"],"sub_categories":[],"readme":"# Modern Haskell Webserver Boilerplate\n- Graphql API\n  - morpheus-graphql (https://github.com/morpheusgraphql/morpheus-graphql)\n  - Schema is in `schema.graphql`\n  ```graphql\n    type User {\n        id: Int!\n        email: String!\n        name: String!\n        updatedAt: String!\n        createdAt: String!\n    }\n\n    type Session {\n        token: String!\n        user: User!\n    }\n\n    type Query {\n        login(email: String!, password: String!): Session!\n        myUserInfo: User!\n    }\n\n    type Mutation {\n        register(email: String!, password: String!, name: String!): Session!\n        changePassword(oldPassword: String!, newPassword: String!): Boolean!\n    }\n  ```\n- Database:\n  - Postgresql + Opaleye\n  - Migration using `dbmate` (https://github.com/amacneil/dbmate)\n  - Pooling using `Data.Pool`\n\nThis boilerplate wires up:\n- Reading .env using `envy`\n- Database\n- Graphql API\n- Authorization using JWT\n- Monad transformers\n\n## Running\n- Feed in you database \u0026 secret in `.env`:\n  ```terminal\n  $ cp .env.default .env\n  ```\n  ```env\n  DATABASE_URL=\"postgres://Dandoh:dandoh@127.0.0.1:5432/webhaskell?sslmode=disable\"\n  JWT_SECRET=\"my_jwt_secret\"\n  ```\n- Migrations\n  ```terminal\n  $ dbmate up\n  ```\n  - More uses refer https://github.com/amacneil/dbmate\n- Run webserver\n  ```terminal\n  $ stack run\n  ```\n  \nNow GraphQL API is at [http://localhost:8080/api](http://localhost:8080/api)\n\nYou can also access Graphql Playground at [http://localhost:8080/graphiql](http://localhost:8080/graphiql)\n\n![Playground](images/playground.png)\n\n\n\n## Running on Docker\n- Feed in you database \u0026 secret in `.env`:\n  ```terminal\n  $ cp .env.default .env\n  ```\n- (Optional) Edit anything you need in the .env file\n\n- Create and start docker containers\n  ```terminal\n  $ docker-compose up\n  ```\n\n- Now you can visit: http://localhost:8080/ in your local machine.\n\n- Migrations will automatically run, and you can run them manually anytime using\n  ```terminal\n  $ docker-compose up dbmate\n  ```\n- Stack will restart whenever you change any .hs file, thanks to [entr](http://eradman.com/entrproject/)\n\n\n## Contributors\n\nPR are more than welcome. The only note is we use `ormolu` to format codes. \n\n- [Nhan Thai](https://github.com/dandoh)\n- [Pacific01](https://github.com/Pacific01)\n- [Emad Shaaban](https://github.com/emadshaaban92)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdandoh%2Fweb-haskell-graphql-postgres-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdandoh%2Fweb-haskell-graphql-postgres-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdandoh%2Fweb-haskell-graphql-postgres-boilerplate/lists"}