SonicJs is a modern, open source content management system and web application framework.
It is built using NodeJs and Angular along with IBM's Loopback ORM for data access to most popular database systems.
Setting up SonicJs on your local system is a fairly quick and straightforward process.
SoncJs is optimized to leverage NOSQL databases but does supported RDMS such as MySQL and SQL Server. Our core development team uses MongoDb and we strongly recommend you do the same unless you have a strong requirement to use another DBMS.
We use IBM's Loopback API project for data access, which is an open source project that generates a REST API based on schema configuration files. Here is a full list of supported databases:
To Debug the app: Use the built in debug from VS Code. There is a "Client" and "Server" debugger profile included in the source.
SonicJs automagically generates user input forms based on classes (defined in code) or content types (defined in the admin UI). The underlying technology leveraged is Angular's Dynamic Forms, see here for more info: https://angular.io/guide/dynamic-form
Content Types allow the admin user to construct custom data type to be used on their site/app. Examples include:
SonicJs' ability to manage content types is an extremely versatile and flexible solution to many common web application use cases. At a high level, content types can:
SonicJs' admin tool uses content types even for core CMS objects such as pages and menu. This enables these object to be customized out of the box to meet your needs.
Field types are the building blocks of a content type. They are mapped to fields in the database and UI controls on the font end.
Each field has various setting specific to how the UI is rendered along with behavior and validations. Developers can easily add their own custom field types and reuse them across content types.
The setting section in the admin interface is, not surprisingly just a content type and can be extended just like any content type.
Multi-site is not currently supported but is planned to be available before SonicJs' first official 1.0 release.
We are honored to collaborate with anyone willing to put in effort toward making SonicJs better. Simply reach out to us about becoming a contributor on our core team.
We're to help! Just reach out to us via github or on the contact us page.