Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Akashic CMS


Not for production yet.

Are you stuck with old fashion web hotels too? Stuck delivering php and mysql to old customers who are not interested in being awesome? Me too.

Let's build something that will work for these customers. Where you can code freely and without limits, and still let the customer be in charge, such as language aware content.

What if the customer could edit the data stores, and not eff up the HTML? What if the HTML would not look like crap just because it were dynamically generated?

I've built so many wordpress and woocommerce sites where I totally lost control over the code and were dependent on plugins, which where developed by bunglers like me. I've built so many custom made sites in PHP and built myself into a corner because of changes in plans and customer wantings. I need something that I'm in control of that make development fast.


A routing system is included. All landing pages should exist in ./pages and is accessed through site-url/my-page that would get ./pages/my-page.php and site-url/sub/sub2 would get ./pages/sub/sub2/index.php.


Templates exists in ./templates and can not be accessed directly with an URL. Instead it's defined on top of a page file as [template: my-template] that would put all content of the page inside of ./templates/my-template.php. The placement for the content is defined inside the template as [content].

Include modules

To include modules you type [module: path/subpath/my-module] which would include module ./path/subpath/my-module.php. This can be done recursively.

Data stores

Define a data store for a page with [data: my-store] that would get ./data/my-store.json. Then use ${variable} to get variable from my-store.json.

Foreach loops

You can access data stores and loop through them with

    [foreach ${persons}:
  • ${name} is ${age} years old.
  • ]

It would then get ./data/persons.json and get the name and age from this file.


To be able to link to a specific page, no matter the domain or URL we can use [link: start] to get ./pages/start.php or [link: path/subpath/test] to get the url to ./pages/path/subpath/test.php.


Edit global settings in ./settings.php.

The future

My thought is to have data objects that handles generic objects that the customer can change without effing up the site.

They could control translation, sort order, titles, descriptions.

Future structure

  • Data Stores

    • Movies
  • Data fields (1-1 to data stores)

    • Movies-Name
      • Name: Name
      • Type: String
      • FormType: TextInput / Select
      • LanguageDependant: true/false
  • Movies

    • Goonies
      • ID: 100
      • Name: The Goonies
      • SortOrder: 10
      • Genre: Comedy
      • Minute: 124
  • Languages

    • Swedish
      • SE
      • SV
  • Pages

    • Book list page
      • Template
      • Content / Includes
  • Templates

    • HTML files with variables, ie $name that matches data store
    • Ability to import other templates


A CMS system for web developers who want full control of their code






No releases published


No packages published