Docs

Overview

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.

Getting Started

Setting up SonicJs on your local system is a fairly quick and straightforward process.

Prerequisites

  • Required:
    • NodeJs (https://nodejs.org/en/download/)
    • Database (Mongo is recommended, but several others are supported)
  • Optional (For core development only)
    • Loopback 3.x CLI: [npm install -g loopback-cli]

Database Support

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:

  • Cloudant
  • DashDB
  • DB2
  • DB2 for iSeries
  • DB2 for z/OS
  • Informix
  • MongoDB
  • MySQL
  • Oracle
  • PostgreSQL
  • Redis
  • SQL Server
  • SQLite3

Local Setup

  1. git clone https://github.com/lane711/sonicjs
  2. Install dependencies with `npm install`
  3. To run the app: `npm start`
    1. Front End: http://localhost:3000
    2. Back End: http://localhost:3000/admin
    3. API: http://localhost:3000/explorer

Debugging

To Debug the app: Use the built in debug from VS Code. There is a "Client" and "Server"  debugger profile included in the source.

Forms

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

Content Types allow the admin user to construct custom data type to be used on their site/app. Examples include:

  • Page
  • Menu
  • Blog Post
  • Book
  • Movie
  • Employee
  • Customer

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:

  • Manage the fields of the content type
  • Manage field level user input validations
  • Setup Views (both list and details) to display content on the site
  • Manage permissions
  • Manage overall settings

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

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.

Settings

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

Multi-site is not currently supported but is planned to be available before SonicJs' first official 1.0 release.

Contributors

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.

Help & Support

We're to help! Just reach out to us via github or on the contact us page.