Announcements and News about AkashaCMS

Markdoc support added via Renderers package

(October 8, 2022) Markdoc is Markdown with extensions making it like a template engine sort of.

How to create a custom static website generator in 170 lines of code

(October 8, 2022) Live rebuild, rendering Markdown and AsciiDoctor, multiple template engines, in a few lines of code.

Mahabhuta has CLI tool for command-line DOM processing

(July 24, 2022) While Mahabhuta is the package giving AkashaCMS its server-side DOM processing ability, it is potentially useful separately from AkashaCMS. The new CLI mode for Mahabhuta allows DOM processing in command-line scripts, and could be useful in developing or testing Mahafuncs.

Content Creation Freedom, the Ability to Freely Reuse Your Content on Websites, E-Books, or Anything Else

(April 19, 2022) Why limit your blog posts, audio or video to just one website? Creating good quality well structured content (text, audio, video, etc) is a long process. Most content management systems make it hard to reuse content from one website to another. Many of us want the freedom to intelligently reuse content on multiple websites, or e-books, but are prevented from doing so by the CMS. What would "content freedom," similar to "software freedom," or the ability to freely reuse and repurpose content, look like?

Converted mahabhuta to TypeScript

(January 31, 2022) TypeScript improves over regular JavaScript by adding compile time type checking, which helps catch certain errors early before you ship code. I'm hoping to improve AkashaCMS quality by moving to TypeScript. Continuing the trial, I've converted Mahabhuta to TypeScript.

Converted Stacked Directories and EPUB Tools to TypeScript

(January 28, 2022) TypeScript improves over regular JavaScript by adding compile time type checking, which helps catch certain errors early before you ship code. I'm hoping to improve AkashaCMS quality by moving to TypeScript. As a trial run two modules have been converted.

Importing content from a Drupal website to AkashaCMS

(November 28, 2021) Drupal is an excellent content management system that serves a long list of major organizations. With an open source CMS (Drupal, Wordpress, etc), what happens when you want to move the content to another CMS platform or use it for other purposes? How easily can you export your content from one CMS and import it into another CMS? In this post we explore converting content held in a Drupal website to be used by AkashaCMS.

Embed code snippets in AkashaCMS rendered HTML documents

(April 4, 2020) When presenting code snippets it is useful to have the code highlighted properly. With the Markdown documents used in AkashaCMS it is easy to use code snippets since the Markdown language directly supports this. But sometimes we want to include an external file and have it treated similarly.

Correctly configuring the AkashaCMS blog-podcast plugin for multiple layout templates

(August 9, 2020) In AkashaCMS, the blog-podcast module determines which files are included in a given blog by the layout templates. The layout template turns out to be a useful way of determining the kind of document for each file. In other words, a blog post would use the blog.html.ejs layout template. That assumption works until you start implementing other layout templates, which I've done on the AkashaCMS news blog to correspond to adopting Liquid and Nunjucks templates.

What is JAMStack and how does it differ from static website generators?

(August 8, 2020) Two ideas, JAMStack and static website generators, are getting attention as a way to simplify website and web application development, while simultaneously being vague unclear marketing terms. Both talk about static assets for website, but what does that really mean? To help decode the vague marketing words, let's examine the technologies, see how they differ, and try to figure out if there's anything important to learn.

Added support for Liquid templates to AkashaCMS, no performance improvements

(August 6, 2020) AkashaCMS was designed to support multiple layout rendering engines, but I never went beyond implementing EJS templates. The EJS template engine is competent, but there are many other engines with huge capabilities that could potentially be useful in AkashaCMS. I have two thoughts in mind, to bring in more powerful template engines, but to also find which template engine has the best performance. In other words, it's possible to improve AkashaCMS performance by adopting a different template engine.

Added support for Nunjucks templates to AkashaCMS

(August 9, 2020) Following yesterdays project, today I implemented support for Nunjucks in AkashaCMS. I also took it a step further and ensured we can use Nunjucks for implementing Partials, and used it to implement some of the core Partials. Nunjucks is a project of the Mozilla foundation, and is a port of the Jinja2 template engine from Python to JavaScript. It has many powerful features, while promising to be very small and fast.

Using GridJS for fancy searchable HTML tables on statically generated websites

(May 6, 2021) There's a wide variety of JavaScript/CSS libraries to spiff up the front-end of a website. In some cases we'll use the same CSS/JavaScript on every page if only for consistent layout code. But in some cases we need a library only on specific pages. For example, the GridJS library makes it easy to implement fancy tables with sorting and searching capabilities, but we probably don't want to use it on every page on the site.

Stacked Directories - A directory/file watcher for static website generators

(June 17, 2021) It's very convenient when a static website generator can automatically watch the source files, automatically rebuilding any changed pages, and automatically updating a browser tab. Having the web page automatically rebuilt is almost as good as a WYSIWYG editor. Some statically generated website projects require complex directory configurations. A new Node.js package, spun off from the AkashaCMS project, aims to support such complex directory relationships, while automatically watching files in those directories, and emitting events that can drive automated rebuilding of changed or added files.

With 0.7, the AkashaCMS plugins need to be updated to reflect new API's

(July 17, 2019) For the AkashaRender/Mahabhuta 0.7 release we added a critical API change making it easier to configure Plugin's and MahabhutaArray's. While some of the Plugin's have been updated, not all have.

Why use a Static Site Generator to generate HTML files for modern websites

(July 27, 2019) I have put a lot of work into developing AkashaCMS, and have used it to develop several websites comprising thousands of total pages. I often whether the time I spend on developing AkashaCMS is worth it, given the lost opportunity to write content for my websites. AkashaCMS is a reflection of my concern over the energy and resource consumption involved in regular dynamic CMS's like Wordpress or Drupal. Getting good performance on a dynamic CMS requires a virtual private server (VPS), adding to the cost and resource consumption. We should all be worried over the climate change and environmental impacts of our choices, including how we host our websites.

How to display UML diagrams inline on an AkashaCMS website

(July 19, 2019) UML diagrams are widely used in software engineering, and I'm working on an AkashaCMS project that's meant to be used for software documentation websites. While looking around I found a Markdown-it plugin to support rendering UML diagrams after placing a small UML descriptor in the Markdown file. It's easy to use, and better yet easy to integrate with an AkashaCMS website.

New AkashaCMS plugin to acknowledge authors on AkashaCMS documents

(August 11, 2019) It's helpful on many levels to have an author byline, and author bio, on web pages. Both of these help your readers know who you are and can act to build credibility for a website. Today we have released a new plugin to serve that purpose.

Implementing tests for AkashaRender and the plugins, and an automated testing infrastructure

(October 7, 2019) I'm finally getting around to implementing much-needed tests for the AkashaCMS system. Not only can each module now be quickly verified, it is now easy to test features as they're being developed. The final step is implementation of an automated system (using Jenkins) to run the tests on every push to the repository, and if the version number in package.json has changed to publish the package.

Better HTML previewing of AkashaCMS project pages in Visual Studio Code

(January 27, 2020) WYSIWYG is a useful document editing model, but in an AkashaCMS project there hasn't been a way to do that. The tools for AkashaCMS let us edit Markdown files in a programmers editor, like Visual Studio Code, but then we're left to our imagination as to how the page will look. It's easy to set up a preview mode in an AkashaCMS project using a simple command-line HTML server and an external web browser. But it's not well integrated with the editing experience, and in practice I never did it. There is a Visual Studio Code extension that makes this better offering a good preview experience right inside VSCode.

Progress on jQuery-style templates for AkashaCMS (Mahabhuta)

(2014-06-01 16:43) Since last weekend I've been working on Mahabhuta, the new element-oriented template system using jQuery's API, in AkashaCMS. The goal was to verify that it's useful by attempting to implement some important things with it. I'm happy to say that Mahabhuta is living up to what I hoped. I've been able to reduce complexity in AkashaCMS and the path is clear to perhaps removing the Kernel template engine, because the functionality I sought with Kernel is now available via Mahabhuta.

Viewer.js, a powerful pure-JavaScript document viewer to simplify your visitors document experience

(2014-05-01 19:37) I hate the typical user experience around viewing and distributing PDF files (or other document formats). Usually we're forced to download the file to our local computer, then view it using a separate viewer. It litters the Downloads directory with old files we've downloaded, and it's somewhat jarring to find yourself suddenly having to navigate to a separate viewer application. Further, an external viewer probably doesn't work well on a mobile device where the operating paradigm is quite different from desktop computers.

Announcing AkashaCMS 0.4.0 - server-side jQuery, streamlined rendering, and more

(Feb 14, 2015 12:07 PDT) Nearly a year in the making, with v0.4.x AkashaCMS is greatly improved, faster, uses server-side jQuery-style DOM manipulations, and more.

Announcing AkashaCMS 0.4.1 - rendering chains, grunt integration, EPUB generation, and more

(Feb 25, 2015 12:07 PDT) Major amount of work went on the last two weeks, restructuring AkashaCMS to allow pluggable rendering chains, using it in a Grunt workflow, and generate EPUB files.

Announcing the Blog & Podcast plugin

(Feb 10, 2015) They say every content management system becomes a blogging platform. Whether or not that's true, it's just become true for AkashaCMS. A new AkashaCMS plugin allows the creation of multiple blogs within an AkashaCMS website.

Looking forward to AkashaCMS 0.5.x work

(Feb 11, 2015 12:00 PDT) Now that AkashaCMS is reaching its 0.4.x milestone, what am I thinking of for the 0.5.x release

Created AkashaCMS organization to shephard AkashaCMS into the future

(Feb 11, 2015) On the cusp of its 0.4.x release, AkashaCMS creator David Herron announces the ownership transfer of AkashaCMS to the new AkashaCMS organization.

Upgraded akashacms-theme-boilerplate to Boilerplate v5, AkashaCMS 0.4.x release imminent

(Feb 14, 2015) The Boilerplate team just released version 5, which has now been rolled into akashacms-theme-boilerplate.

AkashaCMS 0.4.x release on hold for Boilerplate v5

(Feb 12, 2015) Since Boilerplate forms the basis for AkashaCMS theming, and since they just released version 5, it seems necessary to hold the 0.4.x release to integrate the latest Boilerplate.

AkashaEPUB 0.4.6 released, Guidebook posted to eBook stores

(April 28, 2015) Achieved a major goal with AkashaEPUB - the guidebook has been successfully uploaded to several online eBook marketplaces.

AkashaEPUB 0.4.2 released, Guidebook written

(April 20, 2015) Since the last news in February, I had the crazy idea to repurpose AkashaCMS to support building EPUB's. That's now finished, and a guidebook has been written.

AkashaEPUB received nearly complete rewrite - hugely simplified

(May 19, 2015) The initial version of AkashaEPUB demonstrated the need to hugely simplify book configuration. That's been done.

Pages can be JSON data, and can declare CSS and JS files

(May 9, 2015) Pages can now be written as JSON data, that's formatted through a partial into HTML. Pages can now declare their own CSS or JavaScript files.

Added akashacms-footnotes plugin - EPUB's can get footnotes

(June 7, 2015) In the book I'm writing now, I want footnotes. Therefore repurposing existing code was the order of the day.

Created skeleton for akashacms-blog-podcast

(September 27, 2015) It occurred to me, potential AkashaCMS users need a helping hand to start a blog.

How to add a free shopping cart and sell products on an AkashaCMS website

(November 13, 2015) Supposedly selling products via a website and having a shopping shopping cart requires a dynamically generated website using a content management system. But, there are online store services which can be added to any website, even ones built as static HTML files.

Major upgrade to Mahabhuta, the server-side DOM processing engine in AkashaCMS

(September 15, 2016) Mahabhuta can now, with its version 0.5 release, emerge from the shadows of AkashaCMS and serve a useful purpose in its own right. DOM processing in the style of jQuery is now possible in Node.js server applications. The update makes it more feasible to integrate Mahabhuta into applications other than AkashaCMS, including integration into Express applications.

Massive change, AkashaCMS is gone, replaced with AkashaRender

(June 27, 2017)

A couple years ago I grew dissatisfied enough with the design of akashacms, the previous processing engine in AkashaCMS. It was a powerful system, with it I built several large websites, wrote a book, and so forth. But its inner structure had grown organically into a bit of a mess. My pondering about what to do led me to implement a complete rewrite. The new rendering engine, AkashaRender, is more flexible and is more sensibly organized. It is also incompatible with the older system.

Over the last week I have deprecated the old akashacms-based system, and have published updates to everything including the plugins and this website. This blog post goes over what's happened.

AkashaCMS-Embeddables overhaul, huge simplification

(June 28, 2017)

The akashacms-embeddables plugin has long been a sore thumb, being overly complicated in part because of the wide variety of methods for embedding content from other sites. It may seem utterly simple when you paste a URL into a Facebook or Twitter status message, or a Wordpress blog post, and voila the embedded HTML snippet automatically pops up. Under the covers certain kinds of magic is done with oEmbed and OpenGraph protocols. A couple years ago when I started the akashacms-embeddables plugin that stuff either was immature, or I didn't understand it, or didn't know about it, or something, but the initial versions of the plugin didn't take advantage of those protocols, and instead had lots of special casing and hard-coded understanding of how to construct a Twitter iframe.

Now that the new AkashaRender-based system is published, I wanted to take the opportunity to clean up the akashacms-embeddables plugin. I've found a pair of packages that make retrieving oEmbed and OpenGraph data very nice and easy.

Published AkashaCMS-External-Links, adding "rel=nofollow" and icons to outbound links

(July 3, 2017)

It's now required that outbound links to sites that pay money (e.g. affiliate marketing) be marked with rel=nofollow. Your visitors might feel comforted being informed that a link leads to an external site, and perhaps to know what site that is.

Announcing AsciiDoc rendering support in AkashaCMS, another easy-to-edit text format option

(August 25, 2017)

The big goal with AkashaRender is simplifying the content editing experience. Until now that meant encuraging the use of Markdown when editing content, and EJS for writing templates. Markdown isn't the only easy-to-use content format. AsciiDoc is widely used especially in book authoring, and is far more powerful than Markdown.

Initial AsciiDoc support has been added to AkashaRender. This post is being written with the AsciiDoc Renderer, and the AkashaCMS Example website has a corresponding test page.

Building EPUB electronic books and websites on your laptop, no server-side tools required

(August 6, 2017)

Yesterday I announced the 2nd edition of Creating eBooks with Markdown and Open Source Tools is available on the Amazon Kindle store, and will be available on other marketplaces soon. I also tangentially talked about the lack of other tools with similar capabilities. It seems from my incomplete survey of the market that software to create EPUB's or static HTML websites usually require either an installed server-side rendering system, or else a heavy-weight WYSIWYG desktop-publishing application.

What the AkashaRender, AkashaCMS, AkashaEPUB system offers is lightweight tools that run on your laptop yet produce websites or EPUB's built using the latest web techniques.

Let's talk about that for a bit.

Published 2nd edition Creating eBooks with Markdown and Open Source Tools

(August 5, 2017)

In June and July, I set about updating the AkashaCMS toolchain to be based on AkashaRender. The AkashaEPUB toolchain also had to change, and that necessitated a new edition of Creating eBooks with Markdown and Open Source Tools. This book is the official guide for using AkashaCMS/AkashaEPUB tools to build electronic books. The major feature addition, despite it being much easier to configure AkashaRender to produce EPUB's, is that you can now publish to both EPUB and Website from the same content.

I haven't found another system to do that - to publish exactly the same content as either EPUB or a Website. Okay, that's not quite right since Gitbook can publish to EPUB, MOBI, PDF or online. However, Gitbook limits you to using their servers which just doesn't make sense. Rendering EPUB's and Websites is a lightweight lightweight enough to run on your laptop. Why use a SaaS eBook-publishing system that ensnare's you into using their server? With AkashaEPUB, you get a light-weight system that can run on any computer, and publish EPUB's or websites.

Collapsing figure/img tags into simplified fig-img tag

(August 11, 2017)

A purpose of a system like AkashaCMS is simplifying the work of content authors to more efficiently write their content. The task of simplifying work is multi-faceted and can be taken in many different directions.

The task at hand was to collapse the <figure>/<img> combination into a simplified tag.

This combination is the preferred way of presenting images, especially when there's to be a caption.

Updating an AkashaCMS site to use Bootstrap v4.3.x

(February 25, 2019) Bootstrap v4 has been out for a long time, and it's high time we here in the AkashaCMS project moved forward. I've just gone through the exercise of converting to use Bootstrap v4, and should therefore document what I had to do. It wasn't terribly hard but I think it was harder than necessary, and will study how to streamline the process.

How to set rel=nofollow or affiliate tags in external links in a Node.js web application

(March 27, 2019) Setting rel=nofollow or other attributes on outbound links is critically important. Search engines take a dim view of outbound links where there is a monetary gain -- e.g. an affiliate link -- that lack the rel=nofollow attribute. Automatically setting appropriate affiliate referral codes on all relevant external links is important for fully monetizing external links. In this article we'll go over a new package that handles both those tasks. It has an easy-to-use API where HTML enters the processor, and processed HTML is given as a result. The methodology can be expanded to handle approximately a zillion other HTML DOM processing tasks.

Announcing 0.7 release of AkashaRender and Mahabhuta

(July 17, 2019) A major change was made to the AkashaRender and Mahabhuta API's back in March/April. I had held back on publishing an update to these modules but they've been in use long enough to prove their stability. The changes improve configuration files, and make it easier to reuse MahabhutaArray's outside of an AkashaRender project.

Preparing AkashaCMS for 0.3.x, adding plugin support

(2013-08-04 21:08)

I'm going to be declaring AkashaCMS 0.3.x pretty soon, and I have an interesting new feature in the works.  The idea is to support multi-way extensibility of the processing of a website via the configuration file.  The implementation is a form of "plugin" that allows anybody to write a module that extends the configuration of an AkashaCMS site, add new processing functions, hooks at different steps of the processing, and add directories managed by the plugin containing assets, layouts or partials.

Okay, that was pretty dense so let's take it one step at a time.

AkashaCMS v0.3.0 released - major rearchitecting, plugins, improvements, much more planned for v0.4.x

(2014-04-15 00:44) I'm pleased to announce that AkashaCMS has reached version 0.3.0. This version has been over a year in development and isn't quite what I'd intended, but it is a result of the actual needs during the past year. The primary change was to architect AkashaCMS to support plugins, a move which allowed the creation of several useful plugins.

Static HTML website builders (AkashaCMS, etc) slashes web hosting costs to the bone

(2014-04-15 01:52) Today's web is supposedly about fancy software on both server and client, building amazingly flexible applications merging content and functionality from anywhere. What, then, is the role of old-school HTML websites? In particular, why am I wasting my time building AkashaCMS and not building websites with Drupal?

Major change in AkashaCMS - new model for rendering content, and jQuery as a template engine

(2014-05-27 14:47) I'm about to release an AkashaCMS v0.3.x update that represents a major rewrite of the rendering system, and the addition of support to use the jQuery API on the server side to manipulate rendered pages. Both of the changes are major, and take AkashaCMS to a new level of flexibility. First, Website authors will be able to use any combination of template engine on each page, giving better flexibility over page formatting. Second, the capability to use server-side jQuery calls means a different approach to inserting content into the page (versus traditional templates) plus we can implement filters to make broad-based content tweaks.


( Follow Node.js Web Development on Facebook