Giter Club home page Giter Club logo

abecms's Introduction

The version 5 is here ! See The roadmap


Develop Branch Build Status Build status Scrutinizer Quality Score Package Quality Coverage Status Dependency Status Latest Stable Version

License Total Downloads

AbeCMS

AbeCMS is your new CMS with revolutionary self-descriptive templates

When creating blogs becomes as easy as 1-2-3. AbeCMS is an API first + static site generator with a great back-office for users.

For agencies: Go 12X faster than with Wordpress or Drupal to create websites and blogs For devs: A js full stack framework for js full stack devs with extensibility and efficiency in mind

  • Markup your html templates with specific tags, and your back-office is ready to go: It's time to contribute for your users!
  • Add a complete workflow of validation and permissions with ease, using the state of the art oAuth2 stack.
  • Deploy automagically to Surge, AWS S3, Github.io, or any web server via SFTP
  • Create multi-languages, multi-locales, complex web structures in no time
  • Add plugins like abe-algolia, abe-elasticsearch... or create your own with just js skill

From template abification to publication example

Goals

  • Being the easiest CMS on the planet for the developpers by providing 1 clear api stack to rule them all and using a html markup usable by non-devs to create a full website:
    • Develop your HTML templates with hot reload and see changes in real time
    • Develop your plugins with hot reload and see also changes in real time
    • Directory-based URLs. Create directories and subdirectories in AbeCMS, the URL page will be expressed from its spot on the filesystem.
    • Focus on your HTML integration, dynamizing it becomes a breeze with AbeCMS
  • Being the easiest CMS on the planet for the users by using hyper clean pages and A REAL wysiwyg editor fast and easy to use:
    • One Dashboard for your analytics
    • One Manager page for listing and searching all your posts
    • One editor with a REAL wysiwyg of your post
    • One page for managing your users and their authorizations
    • THAT'S ALL !
  • Being content focused (the C in CMS):
    • Data are created as JSON documents
    • An API-first Server to serve your documents as json
    • Or a static website generator
    • Or both !

Why use AbeCMS instead of other CMS or Static Site Generators ?

  • Designed for users
  • A real Wysiwyg Editor
  • A real workflow and authorization engine based on oAuth2
  • Auto-generation of the back-office editor based on your markup
  • Live editing on each part of your site during development dramatically increasing the dev speed
  • A strong separation of data and templates making the reuse of data a breeze
  • A API-first REST server: You create html pages and can consume data for your mobile, emails or whatever

Some sites built with AbeCMS

If you want us to add your sites, submit a PR of this README.

Recipes, plugins, blogs

We have created recipes which are how-to's on specific subjects. If you wan't us to add your recipes, just send us a PR of this README:

Recipes

Plugins

blogs

Demo

Deploy your own Abe demo on Heroku

Deploy

Getting started

Install

$ npm install -g abecms

Usage

  1. abe init : It launches a wizard to help you create your website
  2. cd my-website
  3. abe serve -i : launch your website (by default on port 3000)

See the documentation below for details

Complete documentation

First steps

Template designer references

Template cms admin

Template plugin developer

Support / Contributing

coming soon

Develop

To launch the Abe server from source :

ROOT=/you/absolute/path/to/an/abe/website node src/tasks/nodemon.js

To launch the Abe command line from source (ie. launch the init command):

./node_modules/.bin/babel-node --presets @babel/preset-env src/index.js init

Roadmap

See the complete roadmap

abecms's People

Contributors

arnaudligny avatar chrisgahlert avatar gregorybesson avatar marcbachmann avatar opompilius avatar paaacman avatar tamsi avatar wonknu avatar

Stargazers

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

Watchers

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

abecms's Issues

Abe tag type="rich": add features

add additional options from wysiwyg.js:
insertimage: { ... },
insertvideo: { ... },
insertlink: { ... },
strikethrough: { ... },
orderedList: { ... },

New feature : migrations

It should be possible to organize "database" migration between versions.

  1. Create "version" attribute in abe.json
  2. create a module "migration" in extends and a directory migrations under extends.
  3. The module detects the necessary migrations to be done when a user launch a new version of Abe and stop the abe serve with the alert : Please do abe migrate 2.12
  4. under migrations directory, we find the .js doing the migration from one verison to another

Create a new attribute in abe data type: macro=true

in an abe data type, if I put macro="true" in the attribute, it will then be discoverable on every field of text and rich abe types with the shortcut : $$

Once a $$ is typed, a dropdownlist with autocomplete feature appears.
The value selected is the key in the data. It is displayed in editor mode. In preview and publish modes, this key will be replaced with its corresponding value.

Abe type "rich" : Possibility to add a reference file in the toolbar

When the attribute "toolbar" refers to a json data source file (references), a dropdown list with keys is displayed on the editor. if a key is selected, the value is used in the wysiwyg enclosed in an Abe tag with the key. So that the key is displayed and the value is shown on mouse over.
In the template, we do the same : If we're in the editor mode, the key is displayed and highlighted with a specific color. On mouse over, we show the value.
In preview and publish mode, we remove the abe type and just let the value.

Text color in WYSIWYG editor

If you change text color (or background color text), the color palette it does not disappear if you click elsewhere.

abe type slug

{{abe type="slug" source="/event-guide/{{variable}}"}}

if attribute tab="slug"

Default:

{{abe type="slug" source="/lang/{{name}}"}}
{{abe type="text" desc="filename"}}

Checkbox type

Example : There is a button in the template and I want the user decide if the button can be clickable or not.
A nice interface could be a checkbox.

Remove any reference to WEBPORT

The code should be cleaned up. Initially, Abe served 2 webapp (one for Abe, one for the preview). Remove this mechanism.

All server routes should start with "abe"

Demo?

It would be really helpful to provide a demo, such as a simple website (2 or 3 pages).

Change update/delete route

  • /abe/operations/draft/save
  • /abe/operations/draft/submit
  • /abe/operations/draft/reject
  • /abe/operations/draft/delete

[REFACTORING] Remove draft directory + logic

With the refactoring of Abe ant its orientation towards stateful behavior, we don't need no draft html anymore.

Remove any logic associated with it.

For a clean SoC, the persistance of published files (html versions) has to be separated in their own methods.

Catch error on "abe serve"

Manager.getKeysFromSelect { [Error: ENOENT: no such file or directory, scandir '/Users/grg/programmation/git/abegemo/data']
errno: -2,
code: 'ENOENT',
syscall: 'scandir',
path: '/Users/grg/programmation/git/abegemo/data' }

When no data directory exists in the directory.

  1. When no data directory is detected, catch the error and just console.log "directory missing" and stop abe
  2. do the same when structure not present

Refactor: abe_meta date

Json post abe_meta...date need a refactor.
At this time when a post is created

{
  "abe_meta": {
    "date": new Date(),
    "draft": {
      "date": new Date(),
      "latest": {
        "date": new Date()
      }
    }
}

After a [ status ] is saved

{
  "abe_meta": {
    "date": stay the same,
    "latest": {
        "date": new Date()
      },
    "[ status ]": {
      "date": stay the same if exist,
      "latest": {
        "date": new Date()
      }
    }
}

each new draft abe_meta.[ status ].latest.date and abe_meta.latest.date is update with a new date.

Unable to select template in AbeJS Admin

I wasn't able to select my template in AbeJS admin because my NodeJS version was 4.6.0

I've just upgraded to the last version with the following command on OSX (certainly the same for Linux) :
sudo npm cache clean -f
sudo npm install -g n
sudo n stable

Works well now

Config class refactoring

We should be able to save and reload dynamically a config file. For now, the config class includes properties and methods, properties being extracted from config.json and internal...

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.