Hey All 👋
2022 was an amazing year for us and we hope that 2023 will be even better. I recently wrote an article telling about our plans for 2023, you can check it out here(https://sanskar.wtf/posts/robyns_plans_for_2023)
In this issue, I would like to talk about a more technical part
- implement request validation
- here I wanted to implement some sort of message validation, and @kliwongan is doing an amazing job here #363
- improve how you get body data
~ - when you access the response body, we still need to decode the byte array. I feel that this is an unnecessary step ~
~ and we should be returning a saner response type by default.~
- add some sort of performance benchmark integration
~ - I want to add a performance benchmark in our CI. This way we are certain if the project is becoming slower or faster~
in everychange. I have been given an early access to codspeed(https://codspeed.io/) and I would like to enable the python integration for it.
-
Fix the testing and deployment pipelines(remove the preview build and implement a better version of preview build by building on every merge on main)
- Right now, I hate how we don't have a version to test before releasing it to the public PyPi.
Plan for correction:
- Delete the test PyPi action
- Build a package on every merge to main, and be able to download it
- Publish to PyPi on every release
-
fix the default port
Apple has unfortunately taken over the port 5000 . It is very annoying to change the port every time we test for
the default settings. I plan to moving the default port to 8080 as 3000 is the default port for various front end
frameworks.
-
openapi support
- More or less self explanatory. I want to be able to have a route that automatically generates openapi spec for a web framework.
-
add support for yields
- I want to allow yields in the framework. That way we can do some processing after the response has been returned
-
complete Strawberry GraphQl support
- We have an initial integration with Strawberry but we need to create three things
- Implement class views
- Implement functional views
- Add code to the strawberry-graphql repo
-
allow dependency injection
-~ I love how we can have dependency injection in FastAPI, I would love to add it in Robyn too.~
-
then add a first class support for the database orm
- The lack of database support is something that I don't enjoy. I want to add a first class orm support for a database but since Robyn is also a microframework, we would still want to allow the ability swap it out. Like our jinja templates.
- After this, we can work on create an end to end template for robyn and frontend frameworks like asked for here(#360)
-
improving the educational content around Robyn
- A project is only as good as its documentation. Improve the documentation and video content around Robyn.
-
ASGI ;)
-
Improve support for windows
The support for windows has been a bit lacklustre in the past. Improve support.
-
add cors support
-
-m flag should add some sort of documentation or helpers
This is a good to have experiment. Can we have an ability to run Robyn as a module that will give us a link to
thedocumentation or the entire documentation itself?
-
allow different mime types
Also, inspect how static files are being handled here.
-
Improve websockets
- Web sockets are not the fastest right now. Need to improve the speed.
- allowing blocking options in async web sockets
-
Implement SSE
-
Default authorization and authentication
- Add the ability to add default authorization and authentication. But like the templating support, this needs to hot swappable.
-
route splitting across multiple files
- Currently the only way to add routes in Robyn is through a single file. It is not scalable for a large codebase. We need to allow the ability to add multiple routes.
-
Automatic const request optimization
-
middlewares:
- see if the responses are handled the right way in middlewares(#244)
- implement chainable middlewares(#206)
Somethings left to do from 2022:
- Make a community of plugins
- Improve docs website
- Better
jsonify
method
Feel free to comment with what you think of it and if there are any features that you'd like to have in this roadmap.