FAQs
Here are some frequently asked questions about Sodacore and the packages.
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.
Any community packages will not be noted here, but if you want we can create a space on the website for community packages, get in touch.
You can find our list of packages here.
How do I get started?
Check out the Quickstart guide to get started with Sodacore.
How do I contribute, request features or report a bug?
Check out the Contributing and then head over to our Community Guide guide to get started.
Why legacy decorators?
When we started building the framework, Bun's support for modern decorators had issues, although after looking through the spec, the new JS decorators have a lot of limitations, i.e. no ability for parameter decorators. We chose to use the legacy decorators as they are more flexible and allow for more complex patterns to be built, we know that at some point, they will be removed, and once that happens, we will probably release a new version of the framework with the new decorators, but until that time, we will continue to use the legacy decorators.
Why did you choose Bun?
Bun feels like a clean, and more modern runtime compared to Node, it has a ton of great features out of the box, and the performance is great. Regardless Bun felt like a more optimal choice for us, because while building Sodacore, I originally started building it with Node, but ran into a variety of issues, especially around ESM/CJS interop, and support with TypeScript, and aiming to have as few dependencies as possible, Bun solved a lot of these issues for us as it comes with a great deal out of the box and minimal configuration.
Note: Bun aims to be a drop-in replacement for Node, so if you find a bug where a package within Node works, but doesn't work in Bun, please report an issue with the Bun team.
Can Dependency Injection names clash?
Yes, they can. If you have two providers with the same name, they will clash and throw an error, we throw an error to try and prevent this, if you're building a library, we suggest you use prefixes to prevent this, i.e. if your plugin is called Magic
, then you may call it MagicWandProvider
, etc.
Is Sodacore production-ready?
Yes. Sodacore is a production-ready framework, although as of right now, it's used mostly in smaller projects, but hoping to see it used in larger projects soon.
How do templates work?
The @sodacore/create package calls on the Sodacore Templates repository to get the templates, and then uses those to create your project. If you want to add a template that you think would be helpful to everyone, then feel free to open a pull request on the repository.
Otherwise, you can create your own template and simply select the Community
option within the Create tool and put your user/repo name, it will look for a file called template.json
in the root of the repository, and use that to create your project.