{"id":15010954,"url":"https://github.com/alexmingoia/twain","last_synced_at":"2025-04-05T06:05:52.353Z","repository":{"id":40507072,"uuid":"366303211","full_name":"alexmingoia/twain","owner":"alexmingoia","description":"Tiny web application framework for WAI.","archived":false,"fork":false,"pushed_at":"2024-11-05T23:21:18.000Z","size":41,"stargazers_count":70,"open_issues_count":1,"forks_count":3,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-29T05:05:18.259Z","etag":null,"topics":["framework","haskell","web","web-framework","webapp-framework"],"latest_commit_sha":null,"homepage":"","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/alexmingoia.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":"2021-05-11T08:04:01.000Z","updated_at":"2025-01-13T00:35:20.000Z","dependencies_parsed_at":"2025-03-22T04:01:48.435Z","dependency_job_id":"9e76fa2c-e147-453d-badd-a2db23116d57","html_url":"https://github.com/alexmingoia/twain","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmingoia%2Ftwain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmingoia%2Ftwain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmingoia%2Ftwain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmingoia%2Ftwain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexmingoia","download_url":"https://codeload.github.com/alexmingoia/twain/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294538,"owners_count":20915340,"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":["framework","haskell","web","web-framework","webapp-framework"],"created_at":"2024-09-24T19:37:47.867Z","updated_at":"2025-04-05T06:05:52.334Z","avatar_url":"https://github.com/alexmingoia.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Twain\n\n[![Hackage](https://img.shields.io/hackage/v/twain.svg?style=flat)](http://hackage.haskell.org/package/twain)\n![BSD3 License](http://img.shields.io/badge/license-BSD3-brightgreen.svg)\n\nTwain is a tiny web application framework for\n[WAI](http://hackage.haskell.org/package/wai).\n\n- `ResponderM` for composing responses with do notation.\n- Routing with path captures that decompose `ResponderM` into middleware.\n- Parameter parsing from cookies, path, query, and body.\n- Helpers for redirects, headers, status codes, and errors.\n\n```haskell\n{-# language OverloadedStrings #-}\n\nimport Network.Wai.Handler.Warp (run)\nimport Web.Twain\n\nmain :: IO ()\nmain = do\n  run 8080 $\n    foldr ($) (notFound missing) routes\n\nroutes :: [Middleware]\nroutes =\n  [ get \"/\" index\n  , post \"/echo/:name\" echoName\n  ]\n\nindex :: ResponderM a\nindex = send $ html \"Hello World!\"\n\nechoName :: ResponderM a\nechoName = do\n  name \u003c- param \"name\"\n  send $ html $ \"Hello, \" \u003c\u003e name\n\nmissing :: ResponderM a\nmissing = send $ html \"Not found...\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexmingoia%2Ftwain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexmingoia%2Ftwain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexmingoia%2Ftwain/lists"}