Overview

SiteDen 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 SiteDen 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)
    • Angular CLI: [npm install -g @angular/cli]
    • Loopback 3.x CLI: [npm install -g loopback-cli]

Database Support

SiteDen 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/siteden.git
  2. Make sure Mongo Db is running: `mongod`
  3. Edit the `mongoUrl` and `dbName` setting in `/routes/mongo-dal.js`
  4. Install dependencies with `npm install`
  5. To run the app: `npm start`
    1. This will start the backend REST API
    2. You should be able to access the API at: http://localhost:3000/explorer
  6. `cd client`
  7. `ng serve`
    1. This will start the Angular app, which will automatically detect changes on save and reload
    2. You should be able to access the front end at: (http://localhost:4200/)

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

SiteDen 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

SiteDen 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

SiteDen's 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 SiteDen's first official 1.0 release.

Contributors

We are honored to collaborate with anyone willing to put in effort toward making SiteDen 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.