Skip to content

Latest commit

 

History

History
166 lines (132 loc) · 4.32 KB

Readme.md

File metadata and controls

166 lines (132 loc) · 4.32 KB

Fiona


logo


🚧 - Under Development Licence - MIT

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.

Is it ready for production

Nope, maybe in the future

Why this project's name is Fiona

Because Fiona it's the name of my dog, which one I adopted from dog shelter few days before I start this project

Why I want to do this ecosystem

There are two reasons

  1. I want to learn new think like make own http server.
  2. I want to create a competition for asp.net because I don't currently know a c# alternative to it.

Link to nuget

nuget

OS Support

OS Fiona.Hosting Fiona.Ui
Windows
Linux
MacOs

Road map

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

How to run a simple server

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.