Skip to content

Instantly share code, notes, and snippets.

@BiosElement
Last active December 17, 2015 23:19
Show Gist options
  • Select an option

  • Save BiosElement/5688774 to your computer and use it in GitHub Desktop.

Select an option

Save BiosElement/5688774 to your computer and use it in GitHub Desktop.
API-based Document Management System Concept

API-based Document Management System

Written by William Chambers in consult with community members.

Concept

There exists a large number of Content Management Systems (CMS) with the goal of making it easier to publish content on the web. Many of these take different approaches with their design, programming language, philosophy and end result. This makes sense because the needs of an individual blogger and an editor for a major news room are very different and these need different solutions.

This diversity is to everyone's benefit as everyone can choose the solution that best fits their needs, however it does have drawbacks. Making drastic changes to an existing system is difficult and starting from scratch requires a great deal of basic work such as editing tools, revision management and related tasks.

I believe it makes sense to create an API-based system that focuses on storing content while leaving the task of displaying and editing content to separate applications.

Scope

Project scope still needs to be properly designated, however it needs to be as simple and flexible as possible. Currently I see this as focusing on storing content data itself in various forms, blobs of data for images or downloadable files and user data to handle accounts and authentication. I believe there should also be room for application-designated content and I think some inspiration could be drawn from Drupal in this regard, however this has yet to be reviewed.

Use Case Examples

Jason is a chef and wants to start a recipe blog. He doesn't care much about computers and wants a simple solution. The 'SimplyWriting' program provides a clean, spartan interface allowing him to simply write his content and publish it without having to worry about major features.

Albert is a news room editor and needs to manage a half-dozen writers worth of work. He uses the 'PublisherPro' program to provide him with the in-depth overview interface he needs to properly select feature images, designate publish times and keep track of updates to developing stories.

Overview

Note: Much of this is directly inspired from the Drupal CCK system. https://drupal.org/node/82661

Content will be stored as collections of data called 'nodes'. These nodes will have associated metadata which can declare facts about the node such as it's type (eg. text, gallery, quiz, recipe), and how it can be accessed.

Content types will list node content recommended for each type of node. For example, a text document should probably have a title, content, author, publish data and so-forth.

Contribute

Think you can add something? You probably can! I don't pretend to be an experienced expert so if there's something to be added/removed or you'd like to work on this with me, Let me know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment