{"id":15010921,"url":"https://github.com/agrafix/spock","last_synced_at":"2025-05-15T11:02:11.366Z","repository":{"id":10455783,"uuid":"12626767","full_name":"agrafix/Spock","owner":"agrafix","description":"Another Haskell web framework for rapid development","archived":false,"fork":false,"pushed_at":"2024-04-08T04:20:51.000Z","size":918,"stargazers_count":679,"open_issues_count":32,"forks_count":57,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-04-07T04:18:49.216Z","etag":null,"topics":["api","framework","functional","haskell","http","server","spock","web","webframework"],"latest_commit_sha":null,"homepage":"https://www.spock.li","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agrafix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2013-09-05T19:29:55.000Z","updated_at":"2025-04-06T03:31:45.000Z","dependencies_parsed_at":"2024-01-15T19:45:06.921Z","dependency_job_id":"651c3545-222a-42f1-9944-542bc09ba3ae","html_url":"https://github.com/agrafix/Spock","commit_stats":{"total_commits":497,"total_committers":37,"mean_commits":"13.432432432432432","dds":0.4808853118712274,"last_synced_commit":"a77e8673aa98a15df2202cbf6c3bbe8f17819ca6"},"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrafix%2FSpock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrafix%2FSpock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrafix%2FSpock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrafix%2FSpock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agrafix","download_url":"https://codeload.github.com/agrafix/Spock/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248910905,"owners_count":21181995,"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":["api","framework","functional","haskell","http","server","spock","web","webframework"],"created_at":"2024-09-24T19:37:32.632Z","updated_at":"2025-04-14T15:52:23.237Z","avatar_url":"https://github.com/agrafix.png","language":"Haskell","readme":"[Spock](https://www.spock.li)\n=====\n\n![Build status](https://github.com/agrafix/Spock/actions/workflows/haskell.yml/badge.svg)\n[![Hackage](https://img.shields.io/hackage/v/Spock.svg)](http://hackage.haskell.org/package/Spock)\n[![Hackage Spock-Core](https://img.shields.io/hackage/v/Spock-core.svg)](http://hackage.haskell.org/package/Spock-core)\n\n## Intro\n\nAnother Haskell web framework for rapid development. To get started with Spock, check our [tutorial](https://www.spock.li/tutorial/)\nor take a look at our example project [funblog](https://github.com/agrafix/funblog)!\n\n## Mailing list\n\nPlease join our mailing list at haskell-spock@googlegroups.com\n\n## Features\n\nAnother Haskell web framework for rapid development: This toolbox provides\neverything you need to get a quick start into web hacking with haskell:\n\n* fast typesafe routing\n* middleware\n* json\n* sessions\n* cookies\n* database helper\n* csrf-protection\n* typesafe contexts\n\n## Important Links\n\n* [Tutorial](https://www.spock.li/tutorial/)\n* [REST API Tutorial](https://www.spock.li/tutorials/rest-api)\n* [Type-safe routing in Spock](https://www.spock.li/2015/04/19/type-safe_routing.html)\n* [Taking Authentication to the next Level](https://www.spock.li/2015/08/23/taking_authentication_to_the_next_level.html)\n\n### Talks\n\n* English: [ZuriHac 2016: Spock - Powerful Elegant Web Applications](https://www.youtube.com/watch?v=-b-Oz6y-n_Y) (by Alexander Thiemann)\n* English: [Spock - Powerful Elegent Web Applications using Haskell](https://www.youtube.com/watch?v=kNqsOBrCbLo) (by Alexander Thiemann)\n* English: [Beginning Web Programming in Haskell (using Spock)](https://www.youtube.com/watch?v=GobPiGL9jJ4) (by Ollie Charles)\n* German: [Moderne typsichere Web-Entwicklung mit Haskell](https://dl.dropboxusercontent.com/u/15078797/talks/typesafe-webdev-2015.pdf) (by Alexander Thiemann)\n* German: [reroute-talk](https://github.com/timjb/reroute-talk) (by Tim Baumann)\n\n## Candy\n\n### Extensions\n\nThe following Spock extensions exist:\n\n* Background workers for Spock: [Spock-worker](http://hackage.haskell.org/package/Spock-worker)\n* Digestive functors for Spock: [Spock-digestive](http://hackage.haskell.org/package/Spock-digestive)\n* Lucid for Spock: [Spock-lucid](http://hackage.haskell.org/package/Spock-lucid)\n\n### Works well with Spock\n\n* User management [users](http://hackage.haskell.org/package/users)\n* Data validation [validate-input](http://hackage.haskell.org/package/validate-input)\n* Blaze bootstrap helpers [blaze-bootstrap](http://hackage.haskell.org/package/blaze-bootstrap)\n* digestive-forms bootstrap helpers [digestive-bootstrap](http://hackage.haskell.org/package/digestive-bootstrap)\n\n### SSL / HTTPS\n\nIf you'd like to use your application via HTTPS, there are two options:\n\n* Use nginx/haproxy/... as reverse proxy in front of the Spock application.\n* Convert the Spock application to a `wai`-application using the `spockAsApp`. Then use the `warp-tls` package to run it.\n\n## Notes\n\nSince version 0.11.0.0 Spock drops simple routing in favor of typesafe routing and drops safe actions in favor of the \"usual\" way of csrf protection with a token.\n\nSince version 0.7.0.0 Spock supports typesafe routing. If you wish to continue using the untyped version of Spock you can Use `Web.Spock.Simple`. The implementation of the routing is implemented in a separate haskell package called `reroute`.\n\nSince version 0.5.0.0 Spock is no longer built on top of scotty. The\ndesign and interface is still influenced by scotty, but the internal\nimplementation differs from scotty's.\n\n## Thanks to\n\n* [Tim Baumann](https://github.com/timjb) (lot's of help with typesafe routing)\n* [Tom Nielsen](https://github.com/glutamate)  (much feedback and small improvements)\n* ... and all other awesome [contributors](https://github.com/agrafix/Spock/graphs/contributors)!\n\n## Hacking\n\nPull requests are welcome! Please consider creating an issue beforehand, so we can discuss what you would like to do. Code should be written in a consistent style throughout the project. Avoid whitespace that is sensible to conflicts. (E.g. alignment of `=` signs in functions definitions)\n\nNote that by sending a pull request you agree that your contribution can be released under the BSD3 License as part of the `Spock` package or related packages.\n\n\n## Misc\n\n### Officially Supported GHC Versions\n\n* 8.10.7\n* 8.8.4\n\n### License\n\nReleased under the BSD3 license.\n(c) 2013 - 2021 Alexander Thiemann\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagrafix%2Fspock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagrafix%2Fspock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagrafix%2Fspock/lists"}