After nearly two years without updates, Blog-Doc is back with a complete rewrite. Inspired by lessons learned while building Aether, this new version brings powerful features while returning to the project's original philosophy: keeping a Node.js CMS and static site generator as simple, lightweight, and enjoyable to use as possible.
Maybe, just maybe, but most certainly because I'm a dinosaur (Old-school web developer — just HTML, CSS, and vanilla JavaScript) and have been away for a while,...
Over time, and silently, your browser's bookmarks-bar becomes a graveyard for a huge collection of bookmarks. I like Firefox a lot, the only browser that I us...
CSS has long been evolving to make styling more powerful and intuitive. One of the newest and most exciting additions to the CSS selector arsenal is the `:has()...
Intro I was surprised this morning to discover that the [launching post of Aether](/post/meet-aether-a-cms-that-actually-gets-out-of-your-way) got some comment...
From Legacy to Modern Every developer has that moment when they stumble upon an old template that stops them in their tracks. The design speaks to them: clean...
Old Writer Theme **Old Writer** is a high-contrast, accessibility-first blog theme for [Aether CMS](https://github.com/LebCit/aether-cms) that blends modern we...
Hey Aether community! I've got some incredibly exciting news to share with you. After weeks of thoughtful development and testing, I'm thrilled to announce that...
Intro I've released today (2025-06-06) [Aether CMS](https://aether-cms.pages.dev/) which is a modern and flexible Node.js content management system with an int...
My journey with content management started in the WordPress ecosystem, building themes and plugins. But over time, I grew tired of the heavyweight platforms and...
I wrote, in December 2023, an article about the same subject ([Create a simple Markdown-based blog in Node.js](/post/create-a-simple-markdown-based-blog-in-node...
Dear JavaScript developers and Node.js enthusiasts, Remember when you first met Express.js? Those magical early days of server-side JavaScript when Express swo...
Like in the early days of JavaScript template engines, [STE](https://litenode.pages.dev/docs/rendering-templates/) used to rely on regular expressions to identi...
With the release of [LiteNode](/post/litenode-nodejs-web-framework), it was time for Blog-Doc to be updated to leverage this Node.js web framework. LiteNode red...
Dive into My Ultimate Markdown-based Application Tutorial in Node.js! Hey everyone! I'm thrilled to announce my latest and most comprehensive tutorial yet: **...
Intro I've highlighted in some of my previous articles that Node.js shouldn't be solely blamed for misuse, as any tool can fall victim to lazy implementation,...
Intro While developing a Node.js application, passing data from the server to the client is an inevitable checkpoint that you'll encounter. To simplify this ta...
Intro I mentioned in the previous post that I was working on a project that made me develop [Google's Query Language Wrapper](/post/google-ql-wrapper). At the...
Some years ago (2021), I've used [Google Sheets](https://developers.google.com/sheets) as a data store and created some useful applications using [Apps Script](...
Building a responsive application can be a chore, especially when ready-made templates lack the specific design you envision. Even if you find a decent one, cha...
[Markdown](https://daringfireball.net/projects/markdown/) is a lightweight markup language designed to be simple and easily readable by humans. Writing and re...
It's been a while since my last post - almost four and a half months to be precise! [The previous post](/post/create-a-simple-markdown-based-blog-in-nodejs),...
A Simpler Way! This tutorial was published in 2023 and is now outdated. A simpler, faster approach using [LiteNode](https://litenode.pages.dev/) is now availab...
I've released the [new version of Blog-Doc](https://github.com/LebCit/blog-doc/releases/tag/v2.0.0) about a month ago. Since then, I've decided that Blog-Doc mu...
Intro Start typing in the search bar of any browser **node modules** and one of the first three suggestions will be _node modules meme_. Why developers of back...
Once in a while, a crazy idea installs itself in your mind, like Blog-Doc. Blog-Doc is not only _The Simplest Node.js CMS & SSG_, but it's also **The Best**!...
Intro I've build the first version of the administration using [Pure.css](https://purecss.io/) because Blog-Doc uses it. Since I wanted to split the menu out...
A front-end administration!  If you have ever worked wit...
Intro After creating [Blog-Doc as a static site generator](/post/blog-doc-a-tiny-and-dead-simple-ssg), [Deta got a major upgrade](https://deta.space/blog/intro...
Blog-Doc uses [Eta](https://eta.js.org/) as a template engine and Markdown to write and format the markup of the generated posts and pages. Motivation It's af...
Intro Let's say that you have a button on which you want to click and perform a simple action like displaying some hidden content. You'll directly think: ``...
Intro Over the past few weeks, I mostly wrote on how to template a Node.js application with [EJS](https://ejs.co/) using [Express](https://expressjs.com/). T...
Intro Writing a post content with HTML is not as easy as doing it with [Markdown](https://daringfireball.net/projects/markdown/). Since my coming [back to th...
When developing a Node.js app with Express, we'll usually have two or more routes. If we use the [express.Router](https://expressjs.com/en/guide/routing.html#...
Intro In the [last tutorial](/post/templating-a-nodejs-app-with-ejs), we've built a basic Node.js web application using EJS and Express. So, to understand this...
Intro There are a lot of tutorials about EJS out there, as well as a lot of [questions/answers](https://stackoverflow.com/questions/tagged/ejs). I decided to...
Intro In this post, I will not dive into CSP's details. The link in the description, above, is enough for a simple introduction to the subject, but if you wish...
Update (June 2025) Since this post was originally published, Deta Cloud has been discontinued and is no longer available. Please keep this in mind as you read...
I was writing a post about MidDay, [my new WordPress Theme](/post/midday-wordpress-theme), and wanted to include a simple FAQ section but with a little of style...
Hello everyone, Credits This WordPress theme wouldn’t have seen the light without: - [Black & White Portfolio Template](https://www.w3schools.com/w3css/try...
Did you know that you can create panels, sections and controls in the Customizer with JavaScript? "The PHP API for their registration is essentially a wrapper...
When we use a server side language to get our changes this is what happens: 1- the Request is made by the browser to the server 2- the Response is sent from...
A good way to grab the the user's attention is of course to write useful content 😁 Being funny is also a very good strategy to keep users coming back to your...
One of the most beautiful functionalities of WordPress is the Customizer, because it allows developers to give a simple way for users to modify themes/plugins a...
Ever wanted to hide the WordPress Toolbar? If you are a new developer, you should know that it's not allowed to hide it directly wit CSS. But even if you ar...
One of the most asked question by new WordPress users is: **"how to change the copyright?"**. They don't want a label of any kind on their site and that's tot...
Note This post was updated in June 2025. Some features or services originally mentioned are no longer available. **Every time** you want to check your Gmail,...
Hello everyone, Credits This WordPress Theme wouldn’t have seen the light without: - the [Clean Blog](https://startbootstrap.com/themes/clean-blog/) templa...
From Zero to Hero or at least not a zero anymore! From the Highway to the Classic Road. If you didn't read my [About](/pages/about) section, you can quickly...
I’m very excited and happy to announce the release (in 2016) of **my first plugin**! This [plugin](https://wordpress.org/plugins/full-screen-morphing-search/) i...