Zibri is an opiniated typescript backend framework based on express. It's heavily inspired by frameworks like LoopBack and Nest.
What differentiates it from such frameworks can be found in our goals section.
The official documentation of Zibri can be found under https://service-soft.github.io/zibri
Zibri aims to be an actual batteries included framework.
Meaning if you need something like an email service it's already there.
And, in contrast to most other node backend frameworks:
Such a service is not just the most basic implementation, but one with built in templating, queuing support for thousands of mails, the option to save mails in the database, priority handling etc.
Due to it's dependency injection system you can always swap things out if they are not required or you need even more configuration options. But there will most likely always be a reasonable default you can rely on.
- default jwt auth strategy with advanced features like automatic reuse detection
- builtin ORM with transaction and migration support
- controller based route definition
- OmitClass, PickClass, PartialClass, IntersectionClass helpers to extend from and easily build new entity or even controller classes
- automatic open api generation
- body parsers for json and form-data
- automatic model based validation
- cron job service out of the box
- email service out of the box, with templating, mail queue, persistence and priority handling
- multithreading service with builtin support for worker files or function
- change sets and soft delete functionality
Zibri aims to be as easy to use as possible, with reasonable defaults and by the use of decorators and dependency injection.
All developer facing classes/functions try to provide the strongest type safety possible.
At the same time we try to reduce boiler plate as much as possible. An example of this would be the way we handle entity properties. Instead of having multiple decorators for open-api, ORM and validation (like Nest does it for example), we bundled those into one decorator used for everything instead.
With Zibri you can rely on a strong foundation of battle tested libraries that have all been configured to be as fast and robust as possible:
- express as the server
- typeorm for handling everything database related
- nodemailer for sending emails
- handlebars for templating
- multer for file uploads
All the public facing classes, interfaces and functions are as strictly typed as possible. Zibri even includes a custom parser for handlebar files, that automtically infer the type of the data that is needed to render the template.
In addition to that, you will get warnings whenever there is something off, like an endpoint that is marked to skip auth, although that is not required.
Fixing these warnings will keep your code base cleaner and less prone to errors in the future.
Zibri gives you useful errors, stack traces and debug logs.
It includes source maps and handles even complex cases like giving you the specifics on why a dependency injection failed.
In a lot of cases it also directly gives you a possible fix.
