{"id":17703771,"url":"https://github.com/zudov/servant-realworld-example-app","last_synced_at":"2025-06-10T11:11:12.293Z","repository":{"id":68795957,"uuid":"90069913","full_name":"zudov/servant-realworld-example-app","owner":"zudov","description":"Exemplary real world application built with servant","archived":false,"fork":false,"pushed_at":"2017-05-31T20:44:53.000Z","size":30,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-01T07:43:32.284Z","etag":null,"topics":["example","haskell","realworld","servant"],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zudov.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2017-05-02T19:25:42.000Z","updated_at":"2022-01-09T14:15:22.000Z","dependencies_parsed_at":"2023-02-21T22:45:26.999Z","dependency_job_id":null,"html_url":"https://github.com/zudov/servant-realworld-example-app","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/zudov%2Fservant-realworld-example-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zudov%2Fservant-realworld-example-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zudov%2Fservant-realworld-example-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zudov%2Fservant-realworld-example-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zudov","download_url":"https://codeload.github.com/zudov/servant-realworld-example-app/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zudov%2Fservant-realworld-example-app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259063847,"owners_count":22799726,"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":["example","haskell","realworld","servant"],"created_at":"2024-10-24T21:05:53.986Z","updated_at":"2025-06-10T11:11:12.265Z","avatar_url":"https://github.com/zudov.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# servant-realworld-example-app\n\nThis codebase was created to demonstrate a fully fledged fullstack application built with [haskell-servant] including CRUD operations, authentication, routing, pagination, and more.\n\nFor more information on how this works with other frontends/backends, head over to the [RealWorld] repo.\n\n## How It works\n\n### Project structure\n- [`package.yaml`], [`stack.yaml`] — project configuration, see [Build system].\n\n[`package.yaml`]: package.yaml\n[`stack.yaml`]: stack.yaml\n[`.ghci`]: .ghci\n[`app/DevelMain.hs`]: app/DevelMain.hs\n\n### Build system\n[Build sytem]: #build-system\n\n[Stack] covers most of our needs and provides a uniform interface so we almost never need to interact with the underlying tools (hpack, Cabal, ghc) directly.\nSimple `stack build` is the ultimate command that builds the app. When the build is finished the stack would print the location of the executable.\n\nRelevant files:\n- [`package.yaml`] — Package description in the [hpack] format. Defines dependencies, executables, compiler options, etc;\n- [`stack.yaml`] — Stack's configuration. While the parameters specified in `package.yaml` are only used by the Cabal, stack is the one who sets it up and runs. In this file, we specify the resolver version, and a few other stack-related things.\n- [`.ghci`] — GHCi configuration, see\n\n[stack]: http://haskellstack.org/\n[hpack]: https://github.com/sol/hpack\n\n### Development REPL\nTo launch the REPL you can use `stack ghci`.\n\nRelevant files:\n- [`.ghci`] — GHCi configuration, the commands from this file are executed before any modules are loaded\n\n### Live reloading\nThe `update` function in the `DevelMain` module (you'll need `:load DevelMain`) launches the webserver in background with the logs printed into the repl. When you change the code you can `:reload` or `:load DevelMain` and issue the `update` function again to update webserver with the new code.\n\nRelevant files:\n- [`app/DevelMain.hs`] — module that contains functions for launching the\n  development server from ghcif. [Rapid] is doing most of the job there.\n\n[rapid]: https://hackage.haskell.org/package/rapid/docs/Rapid.html\n\n### Code formatting\n\n[haskell-servant]: https://github.com/haskell-servant/servant\n[realworld]: https://github.com/gothinkster/realworld\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzudov%2Fservant-realworld-example-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzudov%2Fservant-realworld-example-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzudov%2Fservant-realworld-example-app/lists"}