{"id":13726652,"url":"https://github.com/mrmurphy/serbet","last_synced_at":"2025-10-28T02:54:35.053Z","repository":{"id":36467141,"uuid":"225785022","full_name":"mrmurphy/serbet","owner":"mrmurphy","description":"A simple ReasonML server on top of Express.js and Node.js","archived":false,"fork":false,"pushed_at":"2022-12-11T15:54:40.000Z","size":85,"stargazers_count":90,"open_issues_count":3,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-28T08:08:03.384Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Reason","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/mrmurphy.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-04T05:17:10.000Z","updated_at":"2024-11-05T00:32:21.000Z","dependencies_parsed_at":"2023-01-17T01:45:20.110Z","dependency_job_id":null,"html_url":"https://github.com/mrmurphy/serbet","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrmurphy%2Fserbet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrmurphy%2Fserbet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrmurphy%2Fserbet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrmurphy%2Fserbet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrmurphy","download_url":"https://codeload.github.com/mrmurphy/serbet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252965066,"owners_count":21832815,"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":[],"created_at":"2024-08-03T01:03:15.764Z","updated_at":"2025-10-28T02:54:30.006Z","avatar_url":"https://github.com/mrmurphy.png","language":"Reason","funding_links":[],"categories":["Reason"],"sub_categories":[],"readme":"![Logo Artwork](https://user-images.githubusercontent.com/1227109/98459287-9a470780-213d-11eb-8cb3-20ba97c5cac9.png)\n\n## Serbet (like sorbet, but a server. Get it?)\n\nA simple way to set up an Express.js server on top of Node.js using ReasonML.\n\nDocumentation planned! For now, you can read the source code in ServerExample.re\n\n\nHere are some quick tips:\n\n- `decco` and `bs-let` are peer dependencies. Don't forget to install them or things won't work!\n- There are helper functions for parsing path elements, queries, and bodies, like this:\n- If you want to add a guard (like authorization), write a function that takes a request, and returns a promise of a user, and put it at the top of the function, just like we did with `path` above.\n- You can abort the request at any time with the `abort` function, which takes a `response` type. (This uses JS promise exceptions)\n\nThose are the very sparse docs for now. It looks like a side project, but we've been using the these patterns in production already and are quite happy with the results.\n\nThanks so much to [Laura Randle](https://www.laurajrandle.com) for the artwork.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrmurphy%2Fserbet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrmurphy%2Fserbet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrmurphy%2Fserbet/lists"}