Cradle is a modern Content Management System in PHP7. This is the main project.
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates Jan 26, 2019
app Fixing font awesome link Jan 30, 2019
bootstrap removing quotes from join helper Feb 4, 2019
config branch update to 2.2 following dependency map Jan 15, 2019
docker docker readme formatting Jan 28, 2019
log Set history log under root directory called log/ Apr 4, 2018
module more simple state, dependency updates Nov 2, 2018
public removing developer js and updating www css Jan 7, 2019
.cradle.php renamed files to .cradle.php from bootstrap.php #18 ~2.5h Apr 6, 2018
.gitignore dependency update Dec 26, 2018
.travis.yml
LICENSE Initial commit Jul 27, 2016
README.md Update README.md Jan 10, 2019
composer.json Adding back phantomjs as a requirement for headless browser testing. … Jan 29, 2019
composer.lock removing quotes from join helper Feb 4, 2019
docker-compose.yml Proper docker setup Jan 28, 2019
package-lock.json dependency updates Apr 3, 2018
package.json Adding name in package.json primarily needed by the atom IDE to deter… Jan 23, 2019
phpcs.xml 2.0 Cradle prototype Mar 19, 2018
phpunit.php 2.0 Cradle prototype Mar 19, 2018
phpunit.xml 2.0 Cradle prototype Mar 19, 2018
yarn.lock redirect fix, removing abandoned packages Jan 10, 2019

README.md

All the Back End You'll Ever Need

Cradle is a feature rich, modern Content Management System. Build apps faster. Developer friendly. Open Source.

Demo

Features

We compiled a list of feature requirements based on over 10 years of backend system development.

Objects and Relations

Objects and Relations

Most, if not all, applications deal with objects and relations to other objects. If you can't find an out of box solution for what you want to build, ususally these things need to be custom developed. The time it takes to develop depends on how many objects and relations you have. It's really this gray area without proper planning can fail. At its core, Cradle provides a way to create, manage and dynamically generate an admin for all of your objects and relations.

Fields as a Playground

Fields as a Playground

Create fields on the fly, make mistakes and change fields, re-order fields; Skies are the limits! Clone objects to make creating objects even faster. Relate objects in one-to-zero, one-to-one, one-to-many and many-to-many. You can even relate external tables not defined in our system.

Validations and Output Formats

Validations and Output Formats

On top of form submissions, we need to also consider field validation and final output formats. Cradle supports any kind of validation (required, empty, less, greater, regexp, etc.) and output formats (capital, lower, date, relative, link, email, image, formulas, etc.). Activate searchable, filter and sortable features per field and it will be dynamically rendered in your admin.

Database Translations

Database Translations

We compared against many popular CMS libraries to determine a proper database structure and concluded that none fit what we wanted in terms of raw flexibility. Our fields translates into proper SQL-3NF and ElasticSearch schemas without any fuss. You can create, update, sort fields even after creating an object. Just turn on Redis to take advantage of data caching and RabbitMQ to take advantage of queues.

Dynamic Search Pages

Dynamic Search Pages

Developers usually miss out on some of the basic features of a general search because it is just so tedious to build out all the time. Cradle takes care of these for you. Featuring search queries, dynamic filters, relations, bulk actions, importing and exporting. Define searchable, filterable and sortable fields in your schema and watch the search page match your specifications.

Dynamic Forms

Dynamic Forms

Developing form submissions is a very tedious process starting from creating the front end form and validating fields to creating or updating into the database, provide a success message and redirect to another page. With Cradle, no more! Forms are dynamically created, validated and processed based on your defined objects and relations.

Relational Actions and Filters

Relational Actions and Filters

Easy navigation to object relations and do further filters, bulk actions, importing and exporting. Create objects and have it automatically linked to its parent. Link existing objects together easily.

Menu Builder

Menu Builder

Create menu items on the fly. Create menu groups and drag items and groups in any order you want. Choose any icon from the FontAwesome 5 library or none at all. Use any link you want, even not in the system. Menu items automatically will show on relative active pages and show counts on schema search menu items.

Lots of Fields

Lots of Fields

Supporting all HTML5 fields, mask, WYSIWYG, Markdown, Code Editors, Date Fields, Range Sliders, Switches, Dials & Knobs, Files & Images Tag and Meta fields. All fields accept an arbitrary amount of HTML attributes incase you want to add a placeholder or number min-max for example. You can also free add your own custom fields, use any JavaScript and CSS. Anything you like.

Fully Templated

Fully Templated

We considered all UI elements in our admin to be flexible and usable anywhere including the front end. Built on top of jQuery, Bootstrap 4, and Font Awesome 5 and Handlebars to reduce the learning curve and for easier manipulation.

More Features

  • Import/Export
  • 4 Themes
  • Roles and Permissions
  • Package Management with Packagist
  • Dynamic OAuth 2, REST and Webhooks
  • Multi Language Support (i18n)
  • Admin Action Logs

Our Technology Stack

Carefully chosen agnostic technologies that can be used with any major server stack.

PHP 7 MySQL 5.7 ELK Stack Redis RabbitMQ Bootstrap 4 jQuery Font Awesome 5 Yarn Handlebars Travis CI Codeception Docker AWS S3

Other Libraries We Used

Contributing to Cradle

Thank you for considering to contribute to Cradle. Before contributing, please read the CradlePHP docs.

Bug fixes will be reviewed as soon as possible. Minor features will also be considered, but give me time to review it and get back to you. Major features will only be considered on the master branch.

  1. Fork the Repository.
  2. Fire up your local terminal and switch to the version you would like to contribute to.
  3. Make your changes.
  4. Always make sure to sign-off (-s) on all commits made (git commit -s -m "Commit message")

Making pull requests

  1. Please ensure to run phpunit and phpcs before making a pull request.
  2. Push your code to your remote forked version.
  3. Go back to your forked version on GitHub and submit a pull request.
  4. All pull requests will be passed to Travis CI to be tested. Also note that Coveralls is also used to analyze the coverage of your contribution.