Giter Site home page Giter Site logo

cradlephp / cradle Goto Github PK

View Code? Open in Web Editor NEW
18.0 3.0 13.0 4.99 MB

Cradle is a modern Content Management System in PHP7. This is the main project.

Home Page: http://cradlephp.github.io

License: MIT License

PHP 71.32% HTML 6.24% JavaScript 13.93% CSS 8.36% Dockerfile 0.14%
php7 cms-framework cradle cradlephp v2

cradle's Introduction

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.

cradle's People

Contributors

aprilsacil avatar cjestavillo avatar cjzamora avatar hmenorjr avatar kmrosaria avatar mnlcandelaria avatar soycaringal avatar vneugenio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cradle's Issues

Package Page - Details

Add/rename the following columns:

  • Package Version (Composer Lock)
  • Installer Version (Vendor)

One of the column is already existing, just rename the column name.

Fix History Package

Simplify and Fix history package. Fix directory creation. Fix history detail page
Unable to load the history data

Add additional cradle validations

  1. Valid Present, Past Future Date Validation
  2. Column Value Validation: column greate than, column less than, column greater than or equal to, column less than or equal to

OMS Preliminary

Primer for OMS (Orientation with Chris)

Discussion of initial tasks (minor fixes)

  • Naming standard (implement either bootstrap.php or .cradle.php)
  • Translation of static english texts

Familiarization / explore OMS

Investigate History Log of New CradlePHP

The history table have a column that stores file location which contains the history of each user. Investigate the location of where the file is being saved.

Copy Field - Issue

Issue encounter

  • Upon changing the field name and then opt to copy the updated field, system copy the old field name.
  • Upon submitting the copied field, action buttons on the new field are not same with the previous field/s

screen shot 2018-04-18 at 9 27 51 pm
screen shot 2018-04-18 at 9 27 55 pm
screen shot 2018-04-18 at 9 27 43 pm
screen shot 2018-04-18 at 9 27 47 pm
screen shot 2018-04-18 at 9 28 01 pm

week field and month field

when choosing a week field and month field, database creates a int(2) column in the database.
both should be a varchar.
week field sample: "2018-W12" (week 12 of 2018)
month field sample: "2018-05" (may of 2018)

Empty Field Update

System should update the optional fields even if the value is empty. Expected result upon submission is that optional field should be empty.

Menu - Updates

This should be the sequence of menus

  1. Dashboard
  2. Menus (Created using Menu Builder)
  3. System
  4. Admin

Update all Controller.php and Events.php of Packages

  • Update all cradle()-> to $this-> of all the events.php in the packages.
  • Update all cradle()-> to $this-> of all the controllers.php in the packages.

WARNING! Do not update files outside controllers and events. They may be part of ->preprocessor()

Update cradle-history Schema

  1. Update the schema to rename the history.history_meta into history.history_path
  2. Change the data type from json into varchar(255)
  3. The data should only include the file path like /config/log/history/

Collaborator's Meeting

  • Meet up with the team on what to update and tasks to do on local
  • Explore the new CradlePHP for a week

File Link Issue

The page shows 404 page error when clicking the file name.

Import not working properly

Data is not updating after importing. Also, the user receives 500 internal server error upon uploading the import file.

screen shot 2018-04-11 at 8 02 59 am

Restricted Pages

  • Add a Permission function in the Menu Build. Only users that have permission on the page (set in the menu builder) are allowed to access it.
  • Retain all menus in the menu bar
  • If the user opt to browse the restricted page, system should show a notification that the user is not allowed / don't have the permission to access the page.

Clone Packages of CradlePHP to Local

  • cradle-developer
  • cradle-system
  • cradle-role
  • cradle-rest
  • cradle-history
  • cradle-auth
  • cradle-profile
  • cradle-queue
  • cradle-csrf
  • cradle-captcha
  • cradle-elasic
  • components
  • framework
  • Handlebars
  • Storm

Controller Pipeline - Updates

  • Fix Width
  • Notification Status (Capitalize first letter)
  • Task Pipeline (either hide functionality or move it at the top part)
  • Task Order - URL Parameter
  • Board width issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.