Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Looking for lightweight personal blogging platform
112 points by trashtestcrash 11 months ago | hide | past | favorite | 80 comments
Requirements: - Write software engineering blogs with markdown - Open IDE, write some thoughts, push new version of the blog from my terminal - Be able to host on github for free - Be able to display code with syntax (I guess if it supports markdown it will support that too?) - Maintain structure e.g. post dates, navigation, post tags - Ability to have a page about me

Bonus points - be able to personalise a little bit the look and feel if I wanted to e.g. font

No need for: - comments on blog posts

What are my options?




As per many other comments, it sounds like a static site generator like Hugo (https://gohugo.io/) or Jekyll (https://jekyllrb.com/), hosted on GitHub Pages (https://pages.github.com/) or GitLab Pages (https://about.gitlab.com/stages-devops-lifecycle/pages/), would be a good match. If you set up GitHub Actions or GitLab CI/CD to do the build and deploy (see e.g. https://gohugo.io/hosting-and-deployment/hosting-on-github/), your normal workflow will simply be to edit your markdown and do a git add/commit/push to make your changes live. There are a number of pre-built themes (e.g. https://themes.gohugo.io/) you can use, and these are relatively straightforward to tweak to your requirements. In theory, since the content (markdown) is separate from the presentation (theme), you can change design relatively easily (although in practice there's often theme specific config).



There's also hexo [1]. I saw that on Matt Klein's website [2] and the theme looked pretty clean.

[1] https://hexo.io

[2] https://mattklein123.dev/2020/03/08/2020-03-07-new-website/


I love the simple design, I feel this may be what I'm after, will give it a shot! Thank you!


Many of the recommendations in this thread are great. Go with a SSG; almost all of the bigger players will be able to do everything you list and (a lot) more. Personally a big fan of Astro[1] but Hugo, Jekyll, 11ty, etc. will do the job just fine and there's imo no reason to pick one over the other in your case apart from working with a framework in a language you're comfortable with.

If you're looking to get started right away and don't care about having it hosted by someone else there's also bearblog[2] which I can recommend btw.

[1] https://astro.build/ [2] https://bearblog.dev/


Been procrastinating starting a blog for several weeks. I know a bit of code, but I was bothered about using github or the t e r m i n a l to write silly stuff online.

Thanks to your post about bearblog, I now have a blog. A tiny website exactly like I wanted. With really nice themes (that I can customise since I know a bit of code !) all for a fraction of Squarespace asked me. And apparently I have anlaytics also ? Can't wait to use those.

So far, this is the tits. Would be happy with more products looking like this !


If you don't need tagging (as http://danluu.com/ doesn't, for example), you can use my "no workflow" solution:

* draft in markdown

* render in HTML (using any Markdown to HTML tool, e.g. pandoc)

* link your CSS in the HTML file.

* push to your preferred serving platform

This has the advantage of getting you started as quick as you can open an editor.

If after 5 posts you are wanting a tool, pick whichever (Hugo).


I like this as a starting point, gonna recommend it from now on!

Although the benefit of using a static site generator like Hugo is the ability to short codes to reuse code snippets (like embedding videos or images). But that can wait - getting five posts out first is important!


+1

This puts the focus on writing content vs. spending unlimited time in the setup.


Sounds like any static site generator supporting Markdown will do.

- Jekyll: the OG, but requires a ruby toolchain.

- Hugo: compiles to a single static binary, but you may have to get used to its (Go text/html) templating.

- Zola: also compiles to a single static binary, but uses Jinja-like templating.

- Gozer [^1]: my own, like Hugo, but 1000x simpler. I rolled my own because I wanted something that didn't move under me in the next 10 years and just because it was fun and easy enough to build.

[1]: https://github.com/dannyvankooten/gozer


I run Jekyll in its own official docker container. You just need to mount the directory with the md files and it autogenerates new htmls whenever an md is updated. No need for Ruby.

I'm on my phone now and I can't check what I used to run it but all the details are at https://github.com/envygeeks/jekyll-docker/blob/master/READM...

Then HTMLs can be deployed to the public facing server.


I've hosted jekyll sites for a number of years. It's simple and gets the job done. The documentation is good, there are a lot of plugins written for it, and it's pretty configurable.


No love for Astro[1]? I've been using it and like its easy setup and extensibility.

(I host it on Netlify with a custom domain for free and Netlify builds a new release every time I push to main).

https://astro.build/


+1 for Astro. Super easy, with great documentation and dev ex.


Has a great template repo too

https://astro.build/themes/


I like Hugo a lot, personally.

If you want to go as minimal as possible, my https://github.com/Siilikuin/minimum-viable-hugo gets you set up with a single no-CSS, no-JS HTML page. I found this pretty ideal for staying to learn the platform.

If you really, really like minimalism, you could also try pandoc-server to dynamically serve HTML files from your Markdown as people visit the page, just like PHP does: https://pandoc.org/pandoc-server.html


I have been using Pelican with a modified new.css theme. Recently migrated from hosting on a DO instance with Nginx to Github Pages.

What I'd love to do is totally remove the SSG from this pipeline and replace it with a WYSIWYG editor (blasphemy, I know). Or at least something that I could just drag and drop images to so I don't have to manually link them in the .md files.

I'd also like to totally remove the CSS from my site and just link to an existing theme served by a CDN somewhere, like if there was a "standard" simple theme with same defaults and platform-specific font choices etc. (ie. how it was supposed to be near the beginning where users would get served markup (via HTML) and then be able to theme it as they desire (obviously still possible but very few people do this).

Micro.blog looks interesting but the themes aren't quite as minimal as what I prefer.


I have all the settings documented for Pelican.

And hOWTOs for code syntax highlighting too.

Under "Pelican" tag on this Pelican blog of mine:

https://egbert.net/blog/tags/pelican.html


Nice work! I love underground documentation. Dubious font color choice ;)


DUBIOUS, MY ... ah, thank you.


I think this is what your looking for: https://jamstack.org/

I use Hugo with a theme called Congo. https://gohugo.io/ https://github.com/jpanther/congo


Thank you for mentioning Congo! I was thinking to make a personal blog using Astro, but since Congo looks great I might as well go with it and Hugo.


Most SSGs, or if you want to have it easy: https://getpublii.com/ - generates static sites, can publish to github pages (among others), has themes.



I have used Jekyll forever. Now with Netlify.

I have no reason to recommend this other than its worked for me for 10+ years. It's perfectly fine. I am not even much of a Rubyist, it's 100% an accident of history.

I create/edit posts on Github directly, in master. They publish when they get a timestamp attached to the markdown file. Even when published, I only share around to a few friends for feedback and typos before sharing more widely.

As someone who used to tweak his Jekyll installation endlessly, I find obsession with tweaking/exploring/creating blogging platforms a sort of procrastination to avoid the actual blogging part ;)


Here's my personal blog, set up in 2019 on github pages (free hosting), built with Jekyll [1] which supports markdown, code snippets, tags, sections and more.

For a technical person, it does the job pretty well and almost without any maintenance effort:

- Github: https://github.com/TCGV/Blog

- Live: https://thomasvilhena.com/

[1] https://github.com/jekyll/jekyll


Build your own setup with Soupault! It has the Unix philosophy of piping output to CLI tools that do one thing well rather than locking you into a specific system. It helps glue together many other tools like a lightweight syntax renderer, modified date adding, aggregating the posts to create feeds, make some markup modifications, etc.

Additional suggestions outside a specific tool:

* Inevitably you will need more than base Markdown supports features, so you’ll either need to buy into a specific Markdown fork (some of which aren’t open) that won’t port to other platforms if you need to migrate, script the hell out Pandoc or some other tool creating your own fork, or you could start with a lightweight syntax like reStructuredText or AsciiDoc that have a more comprehensive base supporting 98% of your needs including proper metadata in the file, image sizes, figures, callouts/admonitions, spans with class names, definition lists, details/summary, footnotes, citing blockquotes; building these ad-hoc will suck to maintain & could output bad semantic markup making it difficult for screen readers, TUI browsers, web crawlers to parse & understand

* Don’t do syntax highlighting on the client side for a static site (e.g. no highlight.js or similar)

* Don’t touch the base user font size for a blog as users should be able to override font size for their accessibility (e.g. no body { font-size: 14px })

* Add an Atom and/or RSS feed


If you only care about web, Markdown has always supported inserting raw HTML. Unfortunately, these lightweight markup languages cannot emulate all of the features of all of the underlying output formats, because different output formats have incompatible features.


If I were to start again from scratch, I'd likely use Zola as SSG (https://www.getzola.org/)


I was going to suggest Zola too. I use it for my personal blog (hosted via GitHub Pages). Not sure if all of OP's requirements are met, but many do.


every time I've tried to set something up using jekyll and a theme I actually like, I've run into dependency issues, so I'm really liking the look of this


A lot of great suggestions here and some stuff I’ve never heard of before!

Throwing my own suggestion into the ring, as I was just looking into this last week.

I started setting up a blog using Hexo. It’s another Node based SSG that uses markdown and supports tags. It has a lot of neat plugins that people have developed, too.

I like it so far!

https://github.com/hexojs/hexo


I've used hexo for years, I like it because it's simple, mature and has a large ecosystem of community plugins.

It is showing it's age with some of the tech choices, but it still works great and is easy to debug and tailor to specific needs



Here's a walkthrough of how I set up Hugo with free hosting on Cloudflare - https://smaller.fish/posts/hugo


I've played around with several platforms in the last year or so. I've landed on the following setup that works very well for me and ticks all your boxes:

A SvelteKit[0] app hosted on Cloudflare pages. The repo is hosted on GitHub and hooked up to the Cloudflare Pages app [1]. On PRs, I get preview environments. On merge, the changes get deployed to my "production" website. I write blog posts and other content in markdown, which is then processed by mdsvex[2] with very minimal setup.

Mostly, my requirements were more focused around getting the actual framework, hosting, etc. out of my way so that I could focus on writing. Gatsby and Next.js were too configuration heavy and turned me off once I scratched beyond the surface.

[0] https://kit.svelte.dev/ [1] https://developers.cloudflare.com/pages/configuration/git-in... [2] https://github.com/pngwn/MDsveX


Others have mentioned static site generators. I like Hakyll [1] because it can tightly integrate with Pandoc [2] and allows you to develop custom solutions (such as `.pdf` downloads) if your needs ever grow.

[1]: https://jaspervdj.be/hakyll/

[2]: https://pandoc.org/


My blog works like many of those described in others comments, it's:

- Jekyll(any static site generator would do, I'd probably pick Zola or Hugo if I was starting from scratch. See list[0])

- GitHub to host source code

- GitHub actions to push resulting assets to S3(Would try R2 over S3 if starting from scratch I think)

- Cloudflare for TLS, edge caching(including HTML[1] which is nice)

The source for my blog is: https://github.com/k0nserv/hugotunius.se. I also made a starter template[2] at some point, but it's quite out of date now.

0: https://github.com/myles/awesome-static-generators

1: https://hugotunius.se/2020/01/01/edge-cached-static-sites-on...

2: https://github.com/k0nserv/one-cent-blog


I made Svekyll for exactly the simplicity you want.

https://svekyll.com

Svekyll is the simple conventions of Jekyll but the dynamic power of Svelte. It's nothing more than a package.json file and a posts directory with Markdown files.

Svekyll gets all 100s on lighthouse. Mostly because each generated blog post is a single HTML file with all the JS inlined. But, you still can do anything you want as it is a Svelte app. Because it is a bunch of html files, it is easy to host on any web server, no backend customization required.

Someone else mentioned publishing via email. I do that too using my hosting service extrastatic. You can email a draft and it gets converted to markdown and then placed into the git repository for the blog.

Svekyll is open source: https://extrastatic.dev/svekyll/svekyll-cli. You could definitely host on GitHub using a GitHub action to build and publish it.

Let me know if you want assistance: chris@extrastatic.com


How much code do you want to write for it? Do you just want to push to a repo and it happens automatically? What does the structure of your "navigation" "post dates" look like? Browsable?

The most simple thing I could think of would be asciidoc + github pages. Write stuff, generate output HTML, push all to repo, wait for sync. Done.


I built my blog to publish via email.

It’s got everything you need except it’s not possible to edit posts. You just have to email yourself a new, updated version and make that version public.

Taught me a lot about serverless, SES, css, and htmx. 10/10 would recommend trying this route if you don’t want to use the standard toolsets.


can you elaborate a bit more how did you achieve this. also source code will be amazing if you have it open sourced of course.


Source code is a bunch of lambda functions to extract content from emails, then present that information in blog posts.

There are quite a few moving parts -

1. Route 53/AWS SES rules to handle Inbound emails

2. S3, Lambdas, and Step Functions to process emails into json objects

3. Cloudfront distro and behaviors to handle content delivery

4. Aws Cognito to handle login

This probably needs an accompanying blog series just to explain how everything works with each other.

If you’re interested, I’ve written a bit about it on https://pretzelbox.cc/blog which dogfoods the above product.

If there’s genuine interest, I’ll be happy to open source it.


I created the BlogInABox[1] devcontainer to help people get started with Jekyll + GitHub pages. It's a repo that you can fork that has a site ready to go, and a devcontainer that has nice utilities like spellcheck & markdown linting/fixing. This way, you can use it locally in a devcontainer or with github codespaces and a simplified process.

It comes with a companion site [2] that shows how to get scheduled posts, comments, etc. working nicely.

[1] https://github.com/SeanKilleen/blog-in-a-box-container/ [2] https://bloginaboxdemo.com/

Hope this is helpful!


I looked for something similar and ended up coding my own. It was a lot of fun and even did not took too much time. Of course, I had one advantage – being an Emacs user I could leverage Emacs & Org mode. And one nice thing about my one is that the whole blog (content, templates, styles, JS) is contained in one source file. (Of course, binary assets are kept separately, though technically they could be embedded in an org file, too.) And btw, I don't even need to leave Emacs and go to the terminal to push he new version. :-)

If not for Emacs, I'd probably glue together a few tools like Pandoc, sedm scp and the like.


I use https://mataroa.blog/ after it was posted on HN by one of it's creators. Been happy with it for the past 2 years so far


A variation of this post pops up here a lot. Reminds me of writers on writing forums looking for the perfect "light weight" word processor.

Problem being, everyone has one "must have" feature that they want along with the light-weight solution. And for every writer that "must have" feature is different.

When you join all the single, one-off "must haves" together you end up with Microsoft Word.

As for blogging platforms, I use wordpress.com. Paid, not free. No work at all on my end apart from writing. Haven't thought about the platform in a long while now.



I love Mataroa: https://mataroa.blog

I jumped from WordPress to Mataroa and I'm also using Jekyll, Hugo, Zola, and Obsidian to blog.

There are a lot of great things about Mataroa that I love. I've blogged about Mataroa: https://pivic.blog/blog/mataroa/


Hugo is getting a lot of love in here (with good reason). If you do end up trying Hugo and feel it's like 90% what you want but never quite perfect, do check out Zola (https://www.getzola.org/). It feels the most like Hugo of anything I've tried but I found the docs and the template system better.



Astro Js or similar hosted on Netlify, Cloudflare, etc.

Please review the link for further details on Jamstack and/or SSG. https://nishad.link/posts/getting-started-with-jamstack/

Consider exploring Htmx if you don't want markdown or don't want to deal with npm..


I can't recommend Eleventy enough!

https://www.11ty.dev

I converted my WordPress blog to Eleventy 4 years ago and never looked back, it's been delightful!

https://www.joshcanhelp.com/taking-wordpress-to-eleventy/


Lately I've been using Fruition - which is just a way to attach a custom domain name to your published Notion directory. The script is no longer maintained but it keeps working using some Cloudflare agent scripting mechanisms.

URL: https://github.com/stephenou/fruitionsite


Quartz! https://quartz.jzhao.xyz/

Beautiful, performant, native support for editing via Obsidian. I use it for my personal side, https://thestu.art


MkDocs with the Material for MkDocs theme has reasonable blogging support, and a dockerized image for building. It also has some other features like footnotes, mermaid diagrams, and "code annotations" for code blocks.

Type markdown, build in docker, publish assets to GitHub Pages :tada:


I used eleventy recently to build my website. What I liked:

- npm / js-based tooling, no fooling around with ruby - plenty of great docs - enough public adoption to find good answers to common things you’d like set up

Not sure why I hadn’t tried it before - I know it’s been around for a while.


You do need a server for this (with PHP), but you can probably compile it to a static website too: https://github.com/Cristy94/markdown-blog


Quarto - https://quarto.org

I've been searching for some time also, more or less the same requirements, and I settled on quarto. Give it a try, you won't be disappointed!


Cannot agree more! It's a new product made by Posit, who are behind R and RStudio. I think it pulls together Knitr and a few other technologies.

Features: * It has a "blog" mode for listing posts in order, pulls out thumbnails, snippets, etc. * It has a pre-made github action that builds on each push * It lets you write blog posts in jupyter notebooks, OR * You can use the "quarto markdown" flavor and put text and run code blocks in the same file. * Supports python and R code (ATM) * Supports Giscus for comments

Only downside is that there are limited themes, which are a bit unexciting. I'm sure people will be adding more once this catches on.


Interesting how no one suggested prose yet: https://prose.sh/

I use it for my personal blog, it supports custom domains and it's uses public key authentication.


check out bearclaw https://github.com/donuts-are-good/bearclaw

write it in markdown and host it anywhere, no fancy shenanigans


I'll definitely go with Astro if you don't need any CMS stuff. They already have a blog template. It's super fast to deploy to vercel as well. So you can just focus write your content.


May I recommend my personal creation https://mkws.sh/? Simple, sh based, very customizable, very lightweight.


I really like https://bearblog.dev

It helps you get focused on just writing while removing all the unnecessary stuff.



Google Sheets hosted via Netlify :) https://basicinstinct.site/


blot (https://blot.im/about) is a contender. plain text files stored in git are converted into a website; usable for blogs and other types of sites (e.g. your use case, a blog + an about me page). the source code to blot is in the public domain.

$5/month, I am a customer and have liked the experience. also self-hostable for free.




Tiddlywiki might be interesting.

https://tiddlywiki.com/


omg.lol (https://home.omg.lol/) has not been mentioned. You get quite a few nice bonuses from it (like community!) for a very reasonable, imo, $20USD a year. At least give it a look my friend!


Distill for R Markdown is a great alternative too. I really like the layout and the flexibility you get with the plots.

The site can be hosted directly on github pages and you can configure the custom domain on github. Fairly easy to setup and use.

Comes out of the box with GDPR compliance, google analytics and cookie consent

https://rstudio.github.io/distill/website.html


I've been using docusaurus + algolia search the last few years and loving it.


I'm building my own SSG using Zig.


https://www.flatpress.org/

just php. nothing else is needed. flatfile database. you can personalize it easily. it exists since 2006 and it still maintained. boring, it just works.


I follow.


Static generator. Github pages to host. Git to push. Domain registrar of your choice if domain desired. I use Namecheap.


Like many others here I'm going to recommend Jekyll too, and I recently started blogging with it [1]. Although the primary reason to suggest Jekyll would be that its non-nonsense and has been around a while (which is what the other comments mention), I would also like to add that when I needed customizations it was easy to Google for them because of the large community. Going in I believed that no platform will match all my needs, so I needed something where minor customizations wouldn't demand a steep learning curve. Some specific examples that I was able to solve with some basic searching:

[1] On the homepage [a] I needed some excerpts from the post to appear underneath the title. I also wanted this excerpt to show up in the RSS feed.

[2] Since I think of my posts as live documents - if I remember a new detail, I add it to my posts, because more than anything else my blog is notes for me -I also wanted to add a "Last major update" date to my posts - you can see this appear over the titles (the date after '||') and at the top of individual articles. I wanted this to be manual because I didn't want this date to change because I fixed a typo etc.

[3] Since I'm interested in technical articles, I wanted a good way to cite papers. I use jekyll scholar [b] for the purpose, and if you look at the last 2 articles on my blog you'll see the outcomes it produces.

[4] I also wanted my article URLs to be concise instead of the jekyll default which has year, month, day as part of it - this was a fairly easy change to make as well.

[5] Linking to a different section in an article or a section in another article without using the public URL (because this might change if for some reason I end up with a different namespace tomorrow) - this is also possible using variables, whose values get (re-)generated every time you change the document markdown.

[6] Before I push the article to github I usually have it served for a while (typically a few days) on a local server on my laptop (you don't have to install a separate server - the jekyll build system bundles one, this is how you locally see what the article would look like) which I proof-check from different devices while in the house, e.g., from my mobile when I'm not at my desk. Its convenient.

[7] Of course, support for MathJax.

[8] Lot's of themes to pick from. For ex. Al-Folio [c] is a minimalist theme that seems to be becoming popular for academic writing.

I'm sure some of the other solutions do most of these, but I wanted to draw your attention to the ease of customizability.

[a] https://blog.quipu-strands.com/

[b] https://github.com/inukshuk/jekyll-scholar

[c] https://github.com/alshedivat/al-folio?tab=readme-ov-file


For a static blog written in Markdown, Github has all of that built-in.

When you’re on Github, use its IDE by pressing the . key. You can, of course, use Git and edit the files locally.

Own and maintain these two folders _posts and _assets. If you are going to write regularly, I suggest creating sub-folders inside _posts but name your Markdown files by date such as 2024-02-5-foo-bar-is-my-file.md.

On Github, use Github Pages (officially powered by Jekyll) and deploy using one of the pre-defined Jekyll Themes[1]. That’s it, your blog is at reponame.github.io which you can CNAME it from a domain you own just like I did mine at my-domain.com.

Comments: You can either use Github Discussion as your blog’s commenting system or embed a third party service which you can export and carry around when you change such services. Honestly, and personally, I don’t want to deal with comments these days.

Now, for the customization, the themes are in simple Jekyll[2] which you can play around with. In future, if you want to move from Jekyll to something else, you just have to worry about that _posts and _assets folder. They may have different naming convention but you can just config-managed it or change it to your choice. This is why I suggested owning that two yourself.

You also may not worry about FrontMatter[3] (meta in the header) and its accompanying jazz by asking Jekyll to use the plugins jekyll-optional-front-matter and jekyll-titles-from-headings. These comes as part of the officially supported Jekyll plugins[4] by Github. That way, you are just writing a human-readable plain-text spiced up with Markdown and readable by almost every other Static Site Generator. You can use your favorite IDE or another Markdown editor such as Obsidian to edit your files without ever running Jekyll locally.

Now, play with the _config.yml that Jekyll generates for you from the theme above to define your post dates, navigation, and others. Jekyll is one of the OGs — the Gandalf of Static Site Generators. If you have a problem, someone somewhere has solved that.

If you really think of it, “there is no spoon”, eer, I mean “Jekyll.”

Did I missed something? I was supposed to write a blog article for my website on this one and this comment will serve as my starting bullet points.

1. https://docs.github.com/en/pages/setting-up-a-github-pages-s...

2. https://jekyllrb.com

3. https://frontmatter.codes/docs/markdown

4. https://docs.github.com/en/pages/setting-up-a-github-pages-s...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: