UtilityDust is an open source NodeJS Event-Based Application Engine. Made to be easy to use, and extend. if you find any bugs or have any suggestions, please open an issue on the GitHub Issues Tab
This engine is open source and is licensed under the MIT License.
As Features are needed, they will be separated into modules, that can be easily installed. So the main template remains clean and without bloat.
Warning
This project is still in early development, and while production use is viable, stuff mill most certainly break with future updates, until its API is deemed stable.
- Discord Client
- Automatic bindings for TypeScript (WIP)
- WhatsApp Client
- Mattermost Client
- OCR Module
- Twitch Module
- Service Polling Module
- Orizuru Module
- i18n Module (internal)
but you can also create your own modules, and publish them to npm.
we'll try to mantain the name format as udm-<name>
and have a quick way to install them.
The default configuration for UtilityDust is for a very simple discord bot, with probably a dashboard. As it ships default with the discord client module, and the HTTP server configured to use a public directory.
In the future there will be a way better documentation, but for now, you can browse the source code, and see how it works. Specially the discord client module, as it is the most normalized as to how the application expects to be used.
UtilityDust supports many environment variables to customize its behavior, so you can check the Environment Variables for more information.
We now have a the Modules documentation, a little bit more detailed on how to use the module system and how to create one.
Hooks in this context are functions that are called when a certain event happens. They are used to extend the functionality of the application, without having to modify the engine itself.
Routes are used to extend the HTTP server, and are used to handle requests. The routes folder also determines the structure of the URL, check the example route for more information. (the example route will be called if a request to /example is made)
Tasks are used to schedule functions to be called at a certain time. you can check the example task for more information.
We use TypeORM for the database, so you can use any database supported by it.
Models will be loaded automatically, and you can use the database connection from anywhere in the application.
To configure the database, you can use the database
key in the configuration file.
The configuration folder will be loaded starting at the index file, and parsed automatically. It determines the structure of the configuration file using the parzival library.
Then the configuration file is loaded, then validated and parsed, if it is not valid, it will throw an error.
UtilityDust by default has a CLI, that can be used to run commands. You can add commands to the commands folder, and they will be loaded automatically.