Fiona is a web api framework written in .Net. As a developer, you will be able to create API easily and quickly. The planned key feature is a GUI where a developer will be able to create API using blocks like a blueprint in UE.
In the beginning, I used HttpListener, but in the distant future, I want to write my HTTP handshake.
The project was initiated as part of the "100 commitów" competition
The Repo will be renamed after 100 commits competition because I came up with the idea for the name after registering the repo.
Nope, maybe in the future
Because Fiona it's the name of my dog, which one I adopted from dog shelter few days before I start this project
There are two reasons
- I want to learn new think like make own http server.
- I want to create a competition for asp.net because I don't currently know a c# alternative to it.
OS | Fiona.Hosting | Fiona.Ui |
---|---|---|
Windows | ✅ | ✅ |
Linux | ✅ | ❌ |
MacOs | ❌ | ❌ |
Must have - I want to finish it by to end of march
- Server
- Folder structure
- First Tests
- Simple HTTP server with host
- Startup builder
- Routing
- Simple Controller
- Parsing body to object
- Middleware
- Passing parameters and args from the route
- Response (status codes etc)
- Async handle request
- A configuration like a baseUrl, port ETC
- Cookies
- Logger
- Error handler
- Documentation :)
- Tools
- Github actions to build it
Good to have
- Tools
- Publish nuget package
- Compiler
- Parsing class
- Parsing Method
- Parsing Return type
- Parsing parameters
- Parsing DI
- Namespace
- Parsing body
- Parsing comment
- Console tool
- Create a solution from the console
- Compile one file
- Create file with template
- Compile solution
- Run solution
Nice to have
- GUI (GUI will be reworked to another technology :), that's why I moved it to nice to have after the competition)
- Simple view where the user can drag and drop boxes
- Nav menu
- Creating project
- Configuration endpoint class
- Save to file
- Remove file
- Load from file
- Users can connect boxes
- Run project
- Adding controller
- Adding service
- Add a way to create a simple CRUD
- Add logic statement
- Add loop statement
- Tools
- Docker image
- Server
- File Upload
- Inject service to a controller method
- Auto impl register
- Auto inject to method
- Extension for EF
- Support for cqrs
- Security
- CORS
- Before calling the action, an attribute
- Support for plain text in the body
- GUI
- Database configuration
Would to have
- Debugger
- Own HTTP handshake
- Cache
- HttpClient - user can easily use it
- Add user login option
in Program.cs
using Fiona.Hosting;
using Fiona.Hosting.Abstractions;
IFionaHostBuilder serviceBuilder = FionaHostBuilder.CreateHostBuilder();
using IFionaHost host = serviceBuilder.Build();
host.Run();
sample controller
using Fiona.Hosting.Controller.Attributes;
using Fiona.Hosting.Routing;
using Fiona.Hosting.Routing.Attributes;
using Microsoft.Extensions.Logging;
namespace SampleFionaServer.Controller;
[Controller]
public class HomeController(ILogger<HomeController> logger)
{
private readonly ILogger<HomeController> _logger = logger;
[Route(HttpMethodType.Get)]
public Task<string> Index()
{
_logger.Log(LogLevel.Critical, "Home Controller Index");
return Task.FromResult("Home");
}
}
If you want to read more click here.