{"id":20132524,"url":"https://github.com/aherrmann/example_servant_elm_bazel","last_synced_at":"2026-04-10T23:44:12.487Z","repository":{"id":42861132,"uuid":"259743950","full_name":"aherrmann/example_servant_elm_bazel","owner":"aherrmann","description":null,"archived":false,"fork":false,"pushed_at":"2022-12-11T03:47:54.000Z","size":107,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-19T08:07:08.375Z","etag":null,"topics":["bazel","elm-lang","haskell","servant"],"latest_commit_sha":null,"homepage":"","language":"Elm","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/aherrmann.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}},"created_at":"2020-04-28T20:26:13.000Z","updated_at":"2021-10-28T15:52:41.000Z","dependencies_parsed_at":"2023-01-26T15:31:42.115Z","dependency_job_id":null,"html_url":"https://github.com/aherrmann/example_servant_elm_bazel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aherrmann/example_servant_elm_bazel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aherrmann%2Fexample_servant_elm_bazel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aherrmann%2Fexample_servant_elm_bazel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aherrmann%2Fexample_servant_elm_bazel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aherrmann%2Fexample_servant_elm_bazel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aherrmann","download_url":"https://codeload.github.com/aherrmann/example_servant_elm_bazel/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aherrmann%2Fexample_servant_elm_bazel/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260713324,"owners_count":23050824,"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":["bazel","elm-lang","haskell","servant"],"created_at":"2024-11-13T20:53:53.536Z","updated_at":"2026-04-10T23:44:07.439Z","avatar_url":"https://github.com/aherrmann.png","language":"Elm","funding_links":[],"categories":[],"sub_categories":[],"readme":"# todo app\n\n![](https://github.com/aherrmann/example_servant_elm_bazel/workflows/CI/badge.svg)\n\nA minimal todo app implemented in [Haskell][haskell] using [Servant][servant]\non the backend, and in [Elm][elm] on the frontend, built with [Bazel][bazel]\nusing [`rules_haskell`][rules_haskell] and [`rules_elm`][rules_elm].\n\n[haskell]: https://www.haskell.org/\n[servant]: https://hackage.haskell.org/package/servant\n[elm]: https://elm-lang.org/\n[bazel]: https://bazel.build/\n[rules_haskell]: https://haskell.build/\n[rules_elm]: https://github.com/EdSchouten/rules_elm\n\n## Requirements\n\nYou will need the [dependencies of `rules_haskell`][dependencies]\ninstalled on your system to build.\n\nOn MacOS you also need to set the following environment variable:\n\n```\nexport BAZEL_USE_CPP_ONLY_TOOLCHAIN=1\n```\n\n[dependencies]: https://rules-haskell.readthedocs.io/en/latest/haskell.html#before-you-begin\n\n## Instructions\n\nExecute the following command to build and start the app:\n\n```\n$ bazel run //backend\n```\n\nThen browse to `http://localhost:8080` to use the app.\n\n## Interactive Development\n\nYou can use [`bazel-watcher`][bazel-watcher] to continuously rebuild the\nfrontend whenever any of its sources change, like so.\n\n```\n$ ibazel build //frontend\n```\n\nYou can use [`ghcid`][ghcid] to continuously reload the backend whenever\nany of its sources change, like so.\n\n```\n$ ghcid --command=\"bazel run //backend:backend@ghci\" \\\n    --test=Main.main \\\n    --setup=\":set args --assets bazel-bin/frontend/frontend.tar\" \\\n    --reload=bazel-bin/frontend/frontend.tar\n```\n\nThis will load the Haskell code into a GHCi session and run the server in\nthe interpreter. It will reload the session and restart the server\nwhenever any of the Haskell source files or the frontend bundle changes.\n\nNote, if the dependency graph changes, e.g. when you edit a `BUILD.bazel`\nfile, then you will have to restart `ghcid` itself.\n\n[bazel-watcher]: https://github.com/bazelbuild/bazel-watcher#readme\n[ghcid]: https://github.com/ndmitchell/ghcid#readme\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faherrmann%2Fexample_servant_elm_bazel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faherrmann%2Fexample_servant_elm_bazel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faherrmann%2Fexample_servant_elm_bazel/lists"}