The timeless SSG + CMS, in the making.
When I'm writing a blog post, I want to deal with the least amount of software complexity.
- I should be able to compose freeform html, rich text and markdown
- I should be able to just use GUI from start to end
- I should be able to organize categories, posts and pages using folders and text files
- I should get automated index pages, pagination, sitemap, rss, search etc. without touching code
- I should be able to easily customize it
- I should be able to use it without remembering much
- And, everyone also should be able to do all of those.
- Writ (source: https://github.com/scriptype/writ)
- Reads Feed (source: https://github.com/scriptype/feed)
- Upstairs is boiling (source: https://github.com/upstairsisboiling/upstairsisboiling.github.io)
mkdir "All about trees"
cd "All about trees"
echo "Pines are nice" > "Hello world.txt"
writ start
npm install -g scriptype/writ-cms
- Accepted text file extensions: .txt, .md, .markdown, .hbs, .html.
- Create a folder
Folder name can be human readable and it will be used as the display name.
Create a new uncategorized post:
- Create a text file
Create a categorized post:
- Go to a category folder
- Create a text file inside the folder
If you need to refer/embed static assets, such as photos or demo iframes, within the post, the easiest way is to have a folder for everything the post needs, including the post itself.
Create a foldered post:
- Create a folder
- Inside the folder, create a text file named "post". e.g post.md, post.txt
Human readable name of the folder will be the post title.
A post file can look like this:
My new post starts like this.
And it ends like this.
You can also add metadata like this in the beginning of a post file
---
type: text
date: 2023-01-05, 01:57
tags: bananas, books
musiclist:
- Your favorite artist - A song
---
My new post starts like this.
And it ends like this.
"musiclist" is displayed at the end of the post when it's rendered.
- Create a folder named "pages"
- Create a text file inside the folder
Just like with foldered posts, foldered subpages is the easiest way to manage local assets.
- Create a folder inside the "pages" directory
- Inside the folder, create a text file named "page". e.g. page.txt, page.md, page.html
You can use a different folder for pages by adding this to settings.json
:
"pagesDirectory": "my-different-pages-folder"
- Create a folder named "assets"
- Put any static assets into this folder
You can use a different folder for assets by adding this to settings.json
:
"assetsDirectory": "my-different-assets-folder"
Clone writ-cms by running:
git clone git@github.com:scriptype/writ-cms.git
Then set it up:
cd writ-cms
npm install
# Sets up the git hooks
npm run hookup
# Recommended for being able to quickly test things in any directory
npm i -g .