Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lanayx/oxpecker
Backend and Frontend F# frameworks
https://github.com/lanayx/oxpecker
asp-net-core fsharp htmx solidjs web
Last synced: 2 days ago
JSON representation
Backend and Frontend F# frameworks
- Host: GitHub
- URL: https://github.com/lanayx/oxpecker
- Owner: Lanayx
- License: mit
- Created: 2023-12-31T04:00:03.000Z (about 1 year ago)
- Default Branch: develop
- Last Pushed: 2025-01-30T05:19:01.000Z (11 days ago)
- Last Synced: 2025-02-01T05:05:14.266Z (9 days ago)
- Topics: asp-net-core, fsharp, htmx, solidjs, web
- Language: F#
- Homepage: https://lanayx.github.io/Oxpecker/
- Size: 1.48 MB
- Stars: 317
- Watchers: 10
- Forks: 17
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
---
---# Oxpecker
![Oxpecker](https://github.com/Lanayx/Oxpecker/raw/develop/images/oxpecker.png)
**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&runid=6ef367d2-de5c-464a-b3fa-2c3cf4ba1f8f&hw=ph&test=db&p=zik0zi-zik0zj-zik0zj-zik0zj-zik0zj-1kv)
The 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.
Medium posts:
* [Oxpecker Introduction](https://medium.com/@lanayx/the-oxpecker-ef9df3dfb918)
* [7 reasons to try Oxpecker.ViewEngine](https://medium.com/@lanayx/7-reasons-to-try-oxpecker-viewengine-af642b4d191c)
* [Oxpecker vs Blazor](https://medium.com/@lanayx/blazor-vs-oxpecker-067cbcda9f99)
* [Oxpecker.Solid introduction](https://medium.com/@lanayx/oxpecker-goes-full-stack-45beb1f3da34)## Features:
- Native [ASP.NET Core Endpoint routing](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/routing) integration
- Fast ViewEngine with convenient DSL for HTML
- OpenApi integration
- Htmx integration
- Strongly typed route parameters
- Endpoint handlers and endpoint middlewares, flexible composition
- JSON binding and serialization
- Form binding
- Model validation
- URL parameters binding
- Response caching
- Streaming
- Authorization
- eTag support
- IResult support
- Many useful **HttpContext** extensions## Get started:
- [Empty template](https://github.com/Lanayx/Oxpecker/blob/main/examples/Empty)
- [Empty Solid template](https://github.com/Lanayx/Oxpecker/blob/main/examples/EmptySolid)## Examples:
- [Dump of different features all in one place](https://github.com/Lanayx/Oxpecker/blob/develop/examples/Basic)
- [Fullstack CRUD example with functional DI on backend](https://github.com/Lanayx/Oxpecker/blob/develop/examples/CRUD)
- [HTMX sample application](https://github.com/Lanayx/Oxpecker/tree/develop/examples/ContactApp)
- [Oxpecker version of the traditional ASP.NET WeatherApp](https://github.com/Lanayx/Oxpecker/tree/develop/examples/WeatherApp)
- [SPA application (TODO list) without backend](https://github.com/Lanayx/Oxpecker/tree/develop/examples/TodoList)## Documentation links:
* [Oxpecker](https://lanayx.github.io/Oxpecker/src/Oxpecker/)
* [Oxpecker.ViewEngine](https://lanayx.github.io/Oxpecker/src/Oxpecker.ViewEngine/)
* [Oxpecker.Htmx Readme](https://lanayx.github.io/Oxpecker/src/Oxpecker.Htmx/)
* [Oxpecker.OpenApi Readme](https://lanayx.github.io/Oxpecker/src/Oxpecker.OpenApi/)
* [Oxpecker.Solid Readme](https://lanayx.github.io/Oxpecker/src/Oxpecker.Solid/)
* [Migration from Giraffe](https://lanayx.github.io/Oxpecker/MigrateFromGiraffe)## develop vs main branch:
**develop** is a development branch, projects are linked with each other using project references. Use this branch to send PRs.
**main** is a production branch, projects and examples are linked with each other using nuget (or npm) packages. Packages are published from this branch.
## Packages
* [Oxpecker Nuget package](https://www.nuget.org/packages/Oxpecker)
* [Oxpecker.ViewEngine Nuget package](https://www.nuget.org/packages/Oxpecker.ViewEngine)
* [Oxpecker.Htmx Nuget package](https://www.nuget.org/packages/Oxpecker.Htmx)
* [Oxpecker.OpenApi Nuget package](https://www.nuget.org/packages/Oxpecker.OpenApi)
* [Oxpecker.Solid Nuget package](https://www.nuget.org/packages/Oxpecker.Solid)
* [Oxpecker.Solid.FablePlugin Nuget package](https://www.nuget.org/packages/Oxpecker.Solid.FablePlugin)## Support
You can promote the development of the project using [Github sponsors](https://github.com/sponsors/Lanayx) option