Edity McEditface Manual

Edity McEditface is a next generation CMS that outputs static website content designed to interact with microservices for "server side" functions.

Get it now on GitHub.

The chief goals as as follows:

  • Natural editing interface.
    • Editing a page shows exactly what that page will look like when it is output minus the editing controls.
  • Produce static content that is native to http and the web.
    • Produce fully formed .html, .css and .js files for our output. Any additional static data can be served with raw .json files and accessed with plain http requests.
    • No app processing on the server is required to serve these files. All CMS systems must produce these files anyway, this app just produces them ahead of time instead of per request.
  • Development uses static html files.
    • Variables can be added to these files, but no logic. Any logic must be written in a javascript file.
    • Open and close html tags in the same file. Makes getting correct output much easier.
    • Include files by convention. Any page be it a content page or layout can define a .css, .js and .json (for settings) file. These will be automatically detected and used.
  • Use a linked content system to gather html dependencies.
    • Instead of manually including your js and css files define them in a centralized location along with anything they depend on. Then you can refer to this in the page settings for a given page. This way the locations and versions of these files can easily change without having to update a ton of different pages.
  • Separation of CMS backend from deployed version of the website.
    • Allows offline content development. Create and edit a website on your local machine and push the output of the compiler to your server.
    • Able to host anywhere that can serve static html content.
    • Also possible to host the CMS to provide easier collaboration.
    • Possibly improve sever security since now you are just serving raw files instead of running a web app with its own potential security holes.
  • Use Git for version management.
    • Can also support other git clients against the repo in case of emergency.
    • Utilizes LibGit2Sharp internally.
    • Can work in a single shared repo mode or with a repo for each user of the site.
    • Enables chains of approval as changes move from one git repo to the next.
  • NoSql, no database is required to run this program.
    • This does not prevent server side development, create a micro service and interact with it on your pages SPA style.
  • No opinion on client side frameworks.
    • Edity McEditface uses the HtmlRapier javascript library with Bootstrap to provide its editing capabilities, but the website being constructed need not use these things.