FAQs โ
Here are some frequently asked questions about Sodacore and the packages.
What is Sodacore? โ
Sodacore is a modern, TypeScript-powered framework that utilises the latest web technologies to build complex applications with less code, where the Sodacore framework does most of the routing, autowiring and general boilerplate that you shouldn't need to care about.
Sodacore's main goal, is to make a framework that has the least resistance to get started with, and come out with a production level application at the end.
Why should I use Sodacore? โ
Sodacore is a great framework for building complex applications, with a lot of features that you would expect from a modern framework, such as:
- ๐ง Autowiring by default
- ๐งฉ Dependency injection
- ๐งช Plugin system
- ๐ฆ Core maintained plugins, i.e. http, ws, i18n, di, etc.
- ๐ Clean and simple logger that can be extended.
- ๐ Built-in documentation
- ๐งต Easy Threading and worker support.
- ๐ฅ๏ธ CLI for tooling...soon...
Why Bun (instead of Node)? โ
Good question, I have been an avid lover of Node for a long time now, and I still respect it's place in the ecosystem, but I have noticed that core Node is great, but when you need extra, ESM, TypeScript, eslint, etc, everthing feels slow, and just trying to run an application seems to take a bit to actually get going, the battle between ESM/CJS? It's a mess. I did follow Deno for a while, but after some, IMO, questionable development decisions, I decided to steer clear from it.
I have followed Bun for a while now waiting for it to get to a stable state and so far, I have been pleasently surprised; it's definitely not perfect by any stretch, and it has bugs. Seeing the commitment behind it and the developer pushing out features and fixes often is a good sign, and comparing just start up speeds, is amazing. I also wanted a runtime that felt more like a package, rather than needing 20+ packages to cover: bundling, unit tests, runtime, and http/websockets, etc, it's just tedious, and having it all out of the box is a great step forward.
What packages and built-in features does Sodacore have? โ
Sodacore is a collection of packages, that are all maintained under the same repository, and are all published under the @sodacore
namespace.
You can find our list of packages here.
How do I get started? โ
Check out the Getting Started guide to get started with Sodacore.
How do I contribute, request features or report a bug? โ
Check out the Code of Conduct and then head over to our Community Guide guide to get started.
Why legacy decorators? โ
Bun, as of publishing this, does not have support for the modern decorators, and the modern JS decorators also have a much more limited scope of how they work, so we opted for the legacy decorators due to them being more flexible, with a much wider range of use cases, I do intend to switch to the modern decorators when Bun supports them, but regarding functionality, JS (modern) decorators do not support parameter (or method argument) decorators, therefore certain functionality wouldn't be attainable, and would require some changes, fortunately, all controllers will receive a context object as the last parameter that can be used to access the same data a decorator can provide, this is to support the changes in the future.