GithubHelp home page GithubHelp logo

gdott9 / sharp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from code16/sharp

0.0 2.0 0.0 28.24 MB

Laravel 5.4+ Content management framework

License: MIT License

JavaScript 20.94% Vue 16.15% CSS 9.15% PHP 52.82% HTML 0.93%

sharp's Introduction

Sharp 4

Sharp is not a CMS: it's a content management framework, a toolset which provides help building a CMS section in a website, with some rules in mind:

  • the public website should not have any knowledge of the CMS — the CMS is a part of the system, not the center of it. In fact, removing the CMS should not have any effect on the project.
  • The CMS should not have any expectations from the persistence layer: MySQL is cool — but it's not the perfect tool for every problem. And more important, the DB structure has nothing to do with the CMS.
  • Content administrators should work with their data and terminology, not CMS terms. I mean, if the project is about spaceships, space travels and pilots, why would the CMS talk about articles, categories and tags?
  • website developers should not have to work on the front-end development for the CMS. Yeah. Because life is complicated enough, Sharp takes care of all the responsive / CSS / JS stuff.

Sharp intends to provide a clean solution to the following needs:

  • create, update or delete any structured data of the project, handling validation and errors;
  • display, search, sort or filter data;
  • execute custom commands on one instance, a selection or all instances;
  • handle authorizations and validation;
  • all without write a line of front code, and using a clean API in the PHP app.

Sharp 4 needs Laravel 5.4+ and PHP 7.0+.

Here's a series of blog posts which present Sharp following a simple example:

Dashboard

Entity list

Entity form

Terminology, general concept

In Sharp, we handle entities; and entity is simply a data structure which has a meaning in the applicative context. For instance, a Person, a Post or an Order. In the Eloquent world, for which Sharp is optimized, it's typically a Model — but it's not necessarily a 1-1 relationship, a Sharp entity can represent a portion of a Model, or several Models.

Each instance of an entity is called... an instance.

Each entity in Sharp can be displayed:

  • in an Entity List, which is the list of all the instances for this entity: with some configuration and code, the user can sort the data, add filters, and perform a search. From there we also gain access to applicative commands applied to an instance or the whole list, and to a simple state changer (the publish state of an Article, for instance). All of that is described below.
  • And in a Form, either to update or create a new instance.

Installation

  • Add the package with composer: composer require code16/sharp,
  • [Laravel 5.4 only] Register the service provider Code16\Sharp\SharpServiceProvider in the provider array of config/app.php,
  • Publish assets: php artisan vendor:publish --tag=assets.

Configuration

Sharp needs a config/sharp.php config file, mainly to declare entities. Here's a simple example:

return [
    "entities" => [
        "spaceship" => [
            "list" => \App\Sharp\SpaceshipSharpList::class,
            "form" => \App\Sharp\SpaceshipSharpForm::class,
            "validator" => \App\Sharp\SpaceshipSharpValidator::class,
            "policy" => \App\Sharp\Policies\SpaceshipPolicy::class
        ]
    ]
];

As we can see, each entity (like spaceship, here), can define:

  • a list class, responsible for the Entity List,
  • a form class, responsible for... the Form
  • and optionally:
    • a validator class, to handle form validation
    • and a policy class, for authorization.

We'll get into all those classes in this document. The important thing to notice is that Sharp provides base classes to handle all the wiring (and more), but as we'll see, the applicative code is totally up to you.

Full documentation

Auth

Entity Lists

Entity Forms

Generalities

Theming and CSS

sharp's People

Contributors

dvlpp avatar aguingand avatar remicollin avatar insolita avatar mdcass avatar

Watchers

James Cloos avatar Guillaume Dott avatar

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.