Introducing Letterpad — A CMS for blogs

Abhishek Saha
4 min readJun 12, 2018

Letterpad is an open-source and a high performant publishing engine for blogs with a state-of-the-art technology. I am the author of Letterpad and in this post, I would like to provide a quick overview of what letterpad can do.

Why Letterpad:

There are quite a few open source CMS’s available for blogs which either require a lot of technical knowledge to setup/upgrade or bloated with features or not performant. Letterpad tries to bridge this gap.

Letterpad is not a static site generator. It uses sqlite as a database, but you can configure it to work with mysql or postgresql.

Letterpad has a small footprint on features. All the required features are built-in and so you will not need any external plugins.

Below are the important features that were considered while developing Letterpad:

  • Server side rendering
  • Multi author support
  • Comments (Disqus integration)
  • Google Analytics
  • Theme support
  • Multi-level navigation
  • Image optimizer
  • GraphQL for json API
  • Roles — Admin, Reviewer, Author, Reader
  • Markdown and RichText editor
  • Search Engine Optimised
  • Multi-language support (currently en, fr and pl)

The design was kept minimal for maximum performance impact. As of now, there is no plugin integration. Plugins would add more complexity and users will have to deal with builds and restarting servers. With the current setup, letterpad automatically takes care of the node module dependencies of any theme and creates highly optimized bundles for the client and server.

Clean Interfaces:

It offers a clean user interface to compose your story. In markdown mode, you have an instant preview of your story.

You can also activate zen mode to get a distraction free editor.

The below admin dashboard may look familiar to the Wordpress dashboard but it is not overloaded with features that Wordpress offers. This thin layer of minimalism was necessary to achieve high performance.

Letterpad has the concept of posts and pages, just like Wordpress and Blogger. The difference between posts and pages are:

  • Posts are the entries that are displayed in reverse chronological order on your home page (or other listing page like categories).
  • In contrast to pages, posts have comment fields beneath them and are included in your site’s RSS feed. Think of them as moving content.
  • Pages are for content that doesn’t change very much. Think of them as static content. Pages are for “non-blog” content. This can be an about me page, contact page, intro page or even documentation of your next project.

For Developers:

Letterpad is written in React, uses GraphQL and Sequelize and runs on Node. And it is an open source project, licensed under MIT. It is a Single Page Application and runs ridiculously fast. It has a very minimal initial configuration and is easy to setup.

If you are a developer and have understanding of React, you can create your own custom theme without any issues.

When you are building your theme, you have access to various data connectors which are High Order Components that you can use to pass data into your components. However, you can overwrite the defaults and ask for specific fields which you need for your theme. This reduces additional data transfers and you dont have to deal with backend changes. Thats the beauty of GraphQL.

There are also helpers available that you can use like adjacent posts, 404 page, display last x posts, pagination, search box, adding disqus for comments to build your theme.

Letterpad provides three optimised and minimal themes. You may select any one of those as boilerplate for your custom theme. Also, these themes will help you understand how letterpad works internally.

This is the default theme of letterpad, Hugo.

Default theme of Letterpad, Hugo

Letterpad is in Beta version and you are welcome to give it a try.

Additional Links

Github: https://github.com/letterpad/letterpad

Documentation: https://letterpad.app/docs

Demo Links:

Demo User — demo@demo.com

Demo Password — demo

Join the slack channelhttps://tinyurl.com/ycm7cbul

The demo will reset every 15 mins. So feel free to make changes.

--

--