{"id":16715548,"url":"https://github.com/lanayx/oxpecker","last_synced_at":"2025-05-15T00:08:47.745Z","repository":{"id":215661383,"uuid":"737445704","full_name":"Lanayx/Oxpecker","owner":"Lanayx","description":"Backend and Frontend F# frameworks","archived":false,"fork":false,"pushed_at":"2025-04-29T16:56:57.000Z","size":1578,"stargazers_count":334,"open_issues_count":8,"forks_count":19,"subscribers_count":10,"default_branch":"develop","last_synced_at":"2025-04-29T17:45:39.513Z","etag":null,"topics":["asp-net-core","fsharp","htmx","solidjs","web"],"latest_commit_sha":null,"homepage":"https://lanayx.github.io/Oxpecker/","language":"F#","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/Lanayx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null},"funding":{"github":["lanayx"]}},"created_at":"2023-12-31T04:00:03.000Z","updated_at":"2025-04-29T16:57:01.000Z","dependencies_parsed_at":"2024-01-14T20:06:59.657Z","dependency_job_id":"f83d16f1-f2c8-44c0-ad3c-be906fca25af","html_url":"https://github.com/Lanayx/Oxpecker","commit_stats":{"total_commits":390,"total_committers":9,"mean_commits":"43.333333333333336","dds":0.02051282051282055,"last_synced_commit":"230ceef724818a7a0248443f9778c117bb767ed9"},"previous_names":["lanayx/oxpecker"],"tags_count":76,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lanayx%2FOxpecker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lanayx%2FOxpecker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lanayx%2FOxpecker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lanayx%2FOxpecker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lanayx","download_url":"https://codeload.github.com/Lanayx/Oxpecker/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254249203,"owners_count":22039029,"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":["asp-net-core","fsharp","htmx","solidjs","web"],"created_at":"2024-10-12T21:09:43.117Z","updated_at":"2025-05-15T00:08:42.709Z","avatar_url":"https://github.com/Lanayx.png","language":"F#","funding_links":["https://github.com/sponsors/lanayx","https://github.com/sponsors/Lanayx"],"categories":[],"sub_categories":[],"readme":"---\n---\n\n# Oxpecker\n\n![Oxpecker](https://github.com/Lanayx/Oxpecker/raw/develop/images/oxpecker.png)\n\n**Oxpecker** is a library started as functional wrapper around **ASP.NET Core Endpoint routing** (or F#-friendly \"Minimal APIs\"), but now providing fullstack capabilities with **Htmx** and **Solid.js** integrations. Repository is a monorepo with all related projects included and documentation located in *README.md* files per project. As of November 2024, Oxpecker is the fastest .NET 8 web framework in several categories [in the TechEmpower benchmark](https://www.techempower.com/benchmarks/#section=test\u0026runid=6ef367d2-de5c-464a-b3fa-2c3cf4ba1f8f\u0026hw=ph\u0026test=db\u0026p=zik0zi-zik0zj-zik0zj-zik0zj-zik0zj-1kv)\n\nThe server part of the Oxpecker library is a revised version of [Giraffe](https://github.com/giraffe-fsharp/Giraffe), it mostly sticks to Giraffe's successful API (hence the name). Improvements involve changing some core types, performance of template handlers, simplifying handlers and dropping a lot of outdated functionality.\n\nMedium posts:\n* [Oxpecker Introduction](https://medium.com/@lanayx/the-oxpecker-ef9df3dfb918)\n* [7 reasons to try Oxpecker.ViewEngine](https://medium.com/@lanayx/7-reasons-to-try-oxpecker-viewengine-af642b4d191c)\n* [Oxpecker vs Blazor](https://medium.com/@lanayx/blazor-vs-oxpecker-067cbcda9f99)\n* [Oxpecker.Solid introduction](https://medium.com/@lanayx/oxpecker-goes-full-stack-45beb1f3da34)\n\n## Features:\n\n- Native [ASP.NET Core Endpoint routing](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/routing) integration\n- Fast ViewEngine with convenient DSL for HTML\n- OpenApi integration\n- Htmx integration\n- Strongly typed route parameters\n- Endpoint handlers and endpoint middlewares, flexible composition\n- JSON binding and serialization\n- Form binding\n- Model validation\n- URL parameters binding\n- Response caching\n- Streaming\n- Authorization\n- eTag support\n- IResult support\n- Many useful **HttpContext** extensions\n\n## Get started:\n- [Empty template](https://github.com/Lanayx/Oxpecker/blob/main/examples/Empty)\n- [Empty Solid template](https://github.com/Lanayx/Oxpecker/blob/main/examples/EmptySolid)\n\n## Examples:\n- [Dump of different features all in one place](https://github.com/Lanayx/Oxpecker/blob/develop/examples/Basic)\n- [Fullstack CRUD example with functional DI on backend](https://github.com/Lanayx/Oxpecker/blob/develop/examples/CRUD)\n- [HTMX sample application](https://github.com/Lanayx/Oxpecker/tree/develop/examples/ContactApp)\n- [Oxpecker version of the traditional ASP.NET WeatherApp](https://github.com/Lanayx/Oxpecker/tree/develop/examples/WeatherApp)\n- [SPA application (TODO list) without backend](https://github.com/Lanayx/Oxpecker/tree/develop/examples/TodoList)\n\n## Documentation links:\n\n* [Oxpecker](https://lanayx.github.io/Oxpecker/src/Oxpecker/)\n* [Oxpecker.ViewEngine](https://lanayx.github.io/Oxpecker/src/Oxpecker.ViewEngine/)\n* [Oxpecker.Htmx Readme](https://lanayx.github.io/Oxpecker/src/Oxpecker.Htmx/)\n* [Oxpecker.OpenApi Readme](https://lanayx.github.io/Oxpecker/src/Oxpecker.OpenApi/)\n* [Oxpecker.Solid Readme](https://lanayx.github.io/Oxpecker/src/Oxpecker.Solid/)\n* [Migration from Giraffe](https://lanayx.github.io/Oxpecker/MigrateFromGiraffe)\n\n## develop vs main branch:\n\n**develop** is a development branch, projects are linked with each other using project references. Use this branch to send PRs.\n\n**main** is a production branch, projects and examples are linked with each other using nuget (or npm) packages. Packages are published from this branch.\n\n## Packages\n\n* [Oxpecker Nuget package](https://www.nuget.org/packages/Oxpecker)\n* [Oxpecker.ViewEngine Nuget package](https://www.nuget.org/packages/Oxpecker.ViewEngine)\n* [Oxpecker.Htmx Nuget package](https://www.nuget.org/packages/Oxpecker.Htmx)\n* [Oxpecker.OpenApi Nuget package](https://www.nuget.org/packages/Oxpecker.OpenApi)\n* [Oxpecker.Solid Nuget package](https://www.nuget.org/packages/Oxpecker.Solid)\n* [Oxpecker.Solid.FablePlugin Nuget package](https://www.nuget.org/packages/Oxpecker.Solid.FablePlugin)\n\n## Support\nYou can promote the development of the project using [Github sponsors](https://github.com/sponsors/Lanayx) option\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flanayx%2Foxpecker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flanayx%2Foxpecker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flanayx%2Foxpecker/lists"}