Jekyll or Hugo, hosted for free on Netlify and using Forestry.io or Cloudcannon as the CMS.
Jekyll is great for blogs and simple brochure sites, go Hugo (heh) if you need something more complex. Hugo is much faster than Jekyll when running builds on larger sites.
I'd recommend Snipcart for e-commerce. Recently built a shop with it, using Jekyll as the framework. I've made a number of online stores with a variety of platforms and this was the easiest - took about 15 mins. Cheaper than Shopify too.
I'd like to second Hugo. Static sites with Netlify are a joy, since they can handle however much traffic you want, there are no scaling headaches or updates or stuff for bots to randomly hack.
I'm currently trying to decide between Lektor and Hugo, Lektor's data model seems more powerful, Hugo seems harder to learn (worse-quality docs) but Lektor doesn't seem very actively maintained, and Hugo has a larger community around it.
As an interesting speed comparison, one of our users has a site with 2,000 blog posts that takes Jekyll 10 mins to build. We migrated it to Hugo and the build time went down to 900 ms.
We're big fans of Jekyll, but Hugo certainly beats it when it comes to speed.
That's awesome. I'll have to check this out. I wonder what type of speed improvements one could get rewriting this with crystal-lang (https://crystal-lang.org).
I'm also trying to decide between Hugo and Lektor (Note: I'm having some flask experience). At first view Hugo seemed superior but I looked at some important specifics for me like e.g. thumbnail generation, Plugin System (important for developers) or CMS like editing. All this stuff is not available in Hugo core but it's already built into Lektor.
It seems the biggest weakness of Hugo is that it is statically built and not easy to extend (only easier to deploy). If you build your own Makefile/gulp etc. around it it may also work for you but Lektor is more flexible when looking at this. From a developers perspective Lektor seems more customizable... unless you are a die hard Go developer.
I think Lektor community can outgrow Hugo's one because of the plugin system. Building a toolset around a binary to extend a page generator does not seem the right way @hugo team.
But at the end it all depends on your requirements. Hugo is much much easier to deploy and many people do not want to extend their page generator.
The fact that it's such an egregious issue (85 minutes for 2000 posts?!) that has been open for 9 months doesn't give me much hope in the development speed of Lektor. This also matches my experience, as I see trivial issues and PRs open for months in Lektor's repo...
The Lektor dev (it wasn't Armin) told me on Gitter that development has stalled a bit, but will hopefully pick up in 2017. I certainly hope so, becaue it's a well-designed site generator.
maybe when community and development speed and extensibility are the main requirements it all leads back to Jekyll :/ if I would be a ruby guy it would be definitely my first choice.
Hugo is the speedy gonzales with easy deployment but lacks good extensibility when you want to go into the code level :(
sorry :D it really depends on your requirements. If Hugo in its current state covers you or if you can live with a light toolchain around Hugo go Hugo (I think many people do not need to touch the go code). There is nobody saying that you cannot write a little python code which is run before/after hugo (actually some people are doing that!). But if you want total control/extensibility with your python code in the page generator the Lektor plugin system will give you more power.
I decided to go with Lektor in the end, since it's much easier to work with and good enough for my purposes for now. Plus, since I'm a Python dev, I can extend it much more easily.
I am bep, the lead maintainer of Hugo. A plugin system will happen in Hugo, and I don't think it will take too long to get there -- we have been thinking about it for some time, and it feels natural to have that before we call it 1.0. CMS like editing is something that could live well outside of Hugo, me thinks.
Thanks bep. I'm really looking forward to that. With a plugin system the Hugo community will also grow IMHO. Looking forward to it. I agree that CMS like editing should not necessarily be inside of Hugo.
I looked into snipcart however the admin was slow, and the pricing was much more expensive then Shopify when at scale (revenues in the millions).
Over the holidays I spent the time to write a Sinatra based replacement for the Shopify Checkout. There is a big opportunity for someone to do with ecommerce what Discorse did for forum software.
Yup, it's absolutely getting to that point, but not for $$$ reasons. Shopify Plus, their enterprise plan is fixed price. This is why I spent much of the holidays writing our own custom cart.
When was the last time you tried Snipcart? We (Snipcart team) noticed a few hiccups with dashboard perf and made some improvements a short while back. If you give it another go for another project, don’t hesitate to let tell us if you think it’s still lacking. Also, we do monthly fixed fees for merchants with >20K/monthly sales.
Slightly offtopic: I'm very interested in trying Snipcart, again. Back when we had to decide between Snipcart and Shopify's SDK for a static site, Snipcart's lack of product management was a dealbreaker.
Shopify's administration interface, in contrast, is fantastic. However there are some issues which Shopify doesn't intend to fix at all, like their handling of EU vat calculation or the fact that refunds aren't enough to get Shopify's transaction fee back (like it is the case for Paypal, Stripe and others) - with Shopify you have to cancel the order, which in my opinion, is a misleading order status. A refunded/exchanged order is not a canceled order.
While products and variants are still defined on-site (unless you’re using a CMS plugin), we—Snipcart—did ship out-of-the-box inventory management in the dashboard a few months ago. Keep us in the loop about that feature next time you try out the product. Feedback always goes a long way for us!
I know. I actually talked to you guys and you were quite helpful. Unfortunately the product management wasn't ready back then. And, frankly, inventory management alone isn't enough in our case. Our shop system is used by non-tech savvy people and they still need to be able to create products, variants, etc. in a user friendly way.
Shopify's biggest issue is the fact that you can't edit the line items for an order, or the billing information. This is a monumental flaw, which has been round since day 1.
To get round this Shopify's sale people recommend hacks like 3rd party app that delete the original order and create a new order. This actually has a whole heap of unintended consequences. I'd say this is the biggest reason for us looking for an alternative.
The best ecommerce backend I've seen is Neto.com.au however their performance (front end site latency) is shockingly terrible.
Appreciate the recommendation, really (I’m one of the devs at Snipcart). We’re actually going to publish a piece on how static & JAMstack set ups affect clients in modern projects real soon—we have a strong dev shop/agency background so that aspect’s always been interesting to us. Would love to hear your thoughts on it so we’ll try to share on HN too; we’ll be focusing a lot on both “static” CMS & headless/API-first CMS like Prismic & Contentful. Have you tried these BTW, or do you find them overkill for small-scale projects?
I like the idea of services like Prismic and Contentful, but yes I find them overkill for smaller projects.
For larger ones I'd be worried about being tied too closely to a company which may or may not be around in a few years - I'd probably look to open source project instead.
For example Drupal has good user and content management features, and with D8 there's more interest in 'headless' Drupal, where it becomes an API backend to custom front-ends.
Another note is that there are very few good (or cheap) solutions for selling digital downloads in Europe due to the VAT regs. Gumroad is the main one, followed by Etsy - though it's a very different beast.
Sadly, two years on now, EU VAT is still utterly crazy. It's like they don't even realise how much of a burden that system is for small businesses selling online. :-(
The businesses I have that have to deal with it all use some sort of custom integration, because we never found any service that could do what we needed and didn't involve some unacceptable level of risk (like our entire business becoming unable to operate if the service went under suddenly, for example).
Even with a lot of automation and a system designed for exactly what we do, complying with the EU VAT rules still takes an absurd proportion of the time we spend on administrative overheads.
A number of our portfolio sites (including http://piaustralia.com.au ) are static html hosted on AWS S3 + Cloudfront.
The sites are created using Middleman[1], a ruby static site generator which I've found to be a little bit more flexible than Jekyll.
On our static sites, we grab inventory information as JSONP from a small Sinatra based service on Elastic Beanstalk with read only access to the DB. Other than this and the checkout (we'll get to that in a bit), everything is client side Javascript utilising local storage for the cart state.
We do not host our own checkout. Instead we use Shopify's ancient and way under-publicised "Cart Links"[2] feature. Cart Links let you pre-populate a cart and send the user to the checkout if you so wish.
To upload the static files to S3 we use an awesome program called S3_website which knows how to look for the rendered html from a number of static site generators, and sync it to S3. It's also smart enough to setup redirects, invalidate CDN caches and even gzipping content. It's freaking amazing[3].
Had a conversation with a potential client about this the other day:
For a small store I wouldn't recommend anything other than Shopify or Squarespace as they're cheap, nicely designed [0], secure enough and will meet 90% of anyone's needs out of the box.
Once the client is up and running and have figured things out a bit, something more custom may be appropriate - perhaps a static site with an e-commerce provider such as Snipcart or Gumroad (as I've mentioned in another comment).
Only when a client has serious cash to spend and serious requirements, such as integrating with CRMs and fulfilment systems or complex user roles and permissions should they even begin to consider something like Wordpress or Drupal - or even Magento (shudder).
[0] My main gripe with Squarespace is that their templates are optimised for looking fantastic in demos over being usable for more mundane content. Very few clients are able to produce the quality of photography demanded by the designs.
Good comment. Whole heartedly agree. Our job is to give them what they need, not what we think is cool. I hate it when developers over-engineer their client's needs. It becomes a costly maintenance nightmare down the road for everyone.
Absolutely. I see it a lot, especially in charities and non-profits, and it makes me angry.
They're sold on platforms which are too complex and expensive, just because they don't know (or are not informed) how much things should cost or what the alternatives are.
Like you say, it's our job to provide what people need, and trustworthy relationships over short-term gain are always more valuable in the long run.
Things I hear CMS developers talking about: Constantly applying security updates. The lack of maintenance on their favourite plugins. Which caching plugins works the best. How important a CDN is. The need for security plugins, which themselves are often exploited. The HN/Reddit hug of death. Whether a host has suitable versions of PHP. "Webscale" being ten users a minute.
I don't get it. I've been using a static site built in Jekyll, which just works(tm). I recently rebuilt my blog with AMP compliance, and it still looks the way I want it to.
If you're not Ruby person, there's Hugo as a Go alternative. For blogs, we really should be seeing the end of maintenance, vulnerabilities, and static pages are cheaper to host.
Edit: of course, I answered the blog question, but not the ecommerce one.
I understand most people's enthusiasm with static site generators. But either they are only building sites for themselves or their clients are very different than mines. How do your clients edit the site? How do they do simple things like cropping images for example? And what about forms, newsletter subscribe forms or contact forms? Do you use a third party service for everything? I can't see how that is simpler or more reliable.
The assumption that Wordpress means a client can edit their own site has been very wrong, for many users. Unless the site is built in Microsoft Word (and I've seen that done..) they are going to be using a professional for edits, and hence I refer back to static builders.
That's why we are developing Strattic, which is a static publishing sites for the popular CMSs like WordPress. This way end-users who aren't techy can continue to manage their sites in our secure staging area, and the site is then published live as static. Our company site is running on our platform - the origin site is WordPress: https://strattic.com. I'd love to hear feedback, and we're also looking for beta testers.
We're solving the CMS issue for our users. Just import your Jekyll/Hugo repo. Forestry will automatically generate an index.html file (it's a CMS in a React.js file) and deploys it to your static site. Now, non-technical users can log into your static site at site.com/admin/ and see a powerful CMS.
While it's obviously not the best solution, and not something that everyone would want to do, I started creating an application just so that other people could edit a static site. It gives them a basic editor, abstracts away frontmatter, and can generate the new site from updated content.
I definitely have some regrets from this approach instead of just picking a CMS that already exists, and if I were in a similar situation in the future I'd probably start comparing preexisting CMS options.
The solution here is to use a cloud based CMS (we use Contentful ourselves) and then just import the content during the build process of the static site. The client gets the CMS, you control the site. Best of both worlds.
The nice thing about things like WordPress is that "non-tech" people can be using it as well.
Jekyll can easily be broken, and suddenly someone who just wanted to write a new blog post for your company's marketing site accidentally removed all analytics cookies.
That's why WordPress is still growing, and isn't going anywhere anytime soon. The problem is that while non-tech users like it, tech users increasingly don't. That's what we're hoping to solve with Strattic: https://strattic.com.
One of my old employers has a monolithic Rails app for their backed, and that includes the company's corporate website. Kind of crazy to think that the marketing people and the application developers are both making commits to the same code base. Awesome, but also crazy.
Worth noting that you don't have to be a Ruby person to effectively use Jekyll. Most of the dynamic features are implemented in the Liquid templating language -- I hardly ever touched any Ruby when dealing with Jekyll, especially if I were using it in conjunction with (typical) Github Pages, which whitelists Jekyll plugins and thus incentivizes sticking with the simple vanilla setup.
I'm not a ruby person but I use Jekyll for a lot of projects. What I can't do is write plugins, but you should really have strong custom requirements to need a plugin.
I know Ruby, and was recently a business "can't write my own plug-ins" person. If you have a plug-in need that would be handy for you, feel free to ping me. For fun, I'll craft you a demo that incorporates what you'd need to know to write that plug-in yourself, with source code and a how-to Youtube video!
After having to "blow it all away and start again" a few times myself, I now use Jekyll via Docker. Jekyll themselves take care of all the dependencies and my machine can stay clean.
That's true, but if you're a relatively seasoned developer, the ecosystem is stable enough that you can manage. By "stable", I mean, being able to run homebrew and install something like rbenv. I can't remember the last time Jekyll up and failed on me, but for other projects, it's straightforward to blow away a Ruby install and start clean.
Admittedly, I'm not sure how easy it is to find canonical Ruby management tutorials when starting out. I think Ruby's system is somewhat simpler than npm, but only because I don't do too much with Ruby and don't often need to change things around.
I run Jekyll as well. It's alright for developers. Liquid templates are terrible (you can have invalid filters, use tags that aren't defined and it's all arbitrary on which one of those things will cause an error and which won't).
I had to write a plug-in to be able to get it to support multiple sites:
(I'm working on getting tests setup in containers so I can support multiple Jekyll versions and accept pull requests).
If you're starting from scratch, I'm not sure if I'd suggest Jekyll today. I mean it still works for me, but the path has been frustrating and I've found a lot of limitations with it. I wrote a lot of custom ruby plugins to get what I wanted out of it.
I've used Middleman on another project, which was decent, but at the time it lacks some of the more complicated templating Jekyll has. It may have improved since then.
I briefly looked at Hugo. It looks interesting and is worth checking out as well.
In that case Jekyll or Middleman are not the implementations you want, but static site generators still work. There are various solutions with WordPress-like admin backends that produce static pages for the frontend.
Is there any that is decent yet cheap? I've trying to find one for the small non-profit I help, but the open source implementations I found were at the toy stage (couldn't even embed a video) or Movable Type, which sounds great but at a price of $999, it's about $969 above what they can afford.
Embedding video should be at that price level something like: Upload to Youtube, copy embed code into your YourPageGeneratorNameHere nearly all open source page generators I know support this. You maybe want to look into known very easy solutions like wordpress.com blogger etc. ?!
Having to mess directly with HTML is too risky. Maybe it could work if it had a really easy to use version control, but I've never seen that either.
Wordpress.com is expensive if you want "advanced" features like editing the CSS(!). As for Blogger, I don't want to tie them to a proprietary solution.
Thanks for the suggestions, but it requires them to edit Markdown, which is a no-go. I need a GUI. Is there an Hugo or Jekyll frontend that provides a GUI and supports those tags? I couldn't find one.
You want a WYSIWYG editor which understands videos on the one side and a light blog posting engine on the other. I think something like this is not existing. Choose your devil: Go WordPress, go to a free service (like blogger) and put a custom domain in front, or accept that markdown can be used. A full featured blog editor which produces light static output is like a hybrid... it sounds to be heavy on the editor and transform part and light on the output... I think nobody is really targeting that on OSS.
Update: Maybe take a closer look to OctoberCMS. It seems to go into your direction.
It does exists, it's called Movable Type, it's just expensive :)
Thanks for the suggestion, but it doesn't seem like it generates static pages...? I'm keen on that because I really don't want to have to babysit the server and apply security fixes (I trust nginx to auto-update without breaking the site).
I actually disagree that Middleman isn't the right tool here - you're just relegating the content ownership to the wrong place. We run a number of multi user blogs in Middleman, but permissions and post ownership lives one level up on a cloud based CMS.
Could you, please, provide more details on this? I'm searching for the same solution. I'm planning a blogger-like static site generator. All media will be on external resources, and I want to keep maintenance price to a minimum (preferably zero) cost. Thanks.
Sure - we use Contentful as our cloud based CMS offering. There are a few other players here - but the only ones I can speak to would be Prismic and Siteleaf, both of which are really solid.
Once you've got your content CMS-side, you can then pull that content into your SSG during the build process. All of those offerings I mentioned also have webhook support, so on publish of any content you can refire the build (to then pull down the new content).
We are loving this setup. There are really very few downsides.
Feel free to hit me up if you want to dig in more - m AT coldandgoji.com
+1, I use Grav too for my blog. Admin panel is really light, there's a lot of skeletons based on modern templates and they are a much smaller number which can be bad but also good so that you don't get overwhelmed by crappy stuff like it happens with Wordpress.
I first thought cool. On second look I see it is based on PHP. I'm sure newest PHP is really fast and advanced but I don't want to invest any of my time on that language (just my personal opinion).
Update: OK, it also runs on nginx. Made a wrong claim it does not run on it. Sorry.
Well that shouldn't be true. Firstly there is no good reason why any PHP framework would ever require a specific web server, so the claim seems dubious. A little reading in their installation guide confirms Grav should work with any web server: https://learn.getgrav.org/basics/installation
Maybe over-engineered, but I really like the result in both the codebase and UI. I'm just curious about your terminology--how do you distinguish what is a 'snippet', 'wiki', or 'blog' post?
Cool, this is exactly the idea I was starting to build from scratch with almost the same stack. I might substitute "Library" where you use the term "Wiki". I think wiki is supposed to mean collaborative editing, but I will be the only one posting/editing (initially at least).
Do you have a mechanism for controlling publish state (like draft, published, archive)?
Other than honoring the CC license you have for that project, are there any other concerns you have about using it as a boilerplate? This project will be focused on sustainable food systems just fyi.
It's great you built your own tool and workflow that suits you, but there's no need to declare things 'bloated', just because they include things you don't want to use. That's your opinion. Its defaults suit me pretty well, and it's really well documented.
Cool, I hear you but Jekyll actually comes with a very minimal theme (when you 'jekyll new my-site'). Heavy 3rd party themes aren't really the fault of Jekyll.
`python -m SimpleHTTPServer` for the local server (or if you prefer the python3 variant, `python3 -m http.server`), aspell for the spell check, and OptiPNG for PNG compression.
I have tried to reduce the JS & CSS being used on the page. I've only included the grid and navbar components from Bootstrap's CSS framework and there is pretty minimal JS involved.
I have used Turbolinks to replace the <body> tag on each request via ajax.
If you already think we're going to say WordPress, what do you want to do that WordPress doesn't do?
I don't like WordPress for eCommerce, but I think it's great for blogs and content sites.
For eCommerce... just too many variables. Who you want to use for fulfillment, what other systems you want to integrate with, if you need a staging instance or customer loyalty software or any of the 50 other things you can integrate.
For content... Ghost is OK. Just... WordPress has thought of everything already. Plugins, solid UX, extra features you didn't know to ask for... it's hard for other platforms to catch up.
For me, it is quite a shallow reason. I just don't enjoy developing in PHP.
Wordpress is amazing at what it does, but I always dread having to touch it. There is nothing else that gets close to it (that I have found) in terms of ease of use for the users, which is why I keep having to return to it. I long for the day when someone writes something just as good in Haskell (hey, I can dream..).
In regards to WordPress in haskell, I wish for the same! I've been following clckwrks off and on for a few years, I wonder if it's secure plugin API was ever finished...
You code so little with Word Press, there's an extension for like everything you own or do you already. It's more just configuration stuff, right? What are you trying to do with your new site?
I like to really understand what is going on under the hood. If I don't quite understand how something works I like to read the source code. Also sometimes a plugin doesn't quite do exactly what I want, or is so large and complex due to trying to cater for everyone that I just feel uneasy about using it and so for simple things I prefer to just write a little code that does exactly what I need and no more.
Plus, I am a coder. And coders code so that's what I do. It's just a psychological thing...
Craft CMS. It allows you to define a meta model in a convenient editor, and lets you render out data with a template engine (HTML/JSON/...). The meta-meta-model consists of a few sensible objects, so it's not just UML rendered down. It has fine grained access control, so you can define which user can access what data.
Things like image uploads in the backend (admin) area are solved. E.g you can setup an S3 bucket that is used for your site's dynamic assets.
Security updates are one-click-installs and I'd say there is at least one per week.
There are plenty of plugins available, too.
It's a bit pricey (compared to FOSS) if you use it for clients, but you can develop for free or even host your own website for free with it.
I've used it twice so far, and I enjoyed it very much.
https://ghost.org/ blogs are really awesome. It's Node.js based, simple to install. I don't like static generators, that authoring experience is just not for me.
I use Ghost for my site http://tedium.co, and I've been able to do some interesting things with it. I like the flexibility it offers without the cruft of WordPress.
That said, I do sometimes look longingly at static site generators and wonder what's on the other side.
Ghost for me as well [1]. I like the UI and how lightweight it is vs something like WordPress. I also like being able to make quick content tweaks without redeploying like with a static site generator.
I see static site tools are still trending. I've used a variety of static site tools for play but never had a client opt for it. Probably the only static site I'm currently running is for my local Auckland CSS meetup and that's just plain ol' hard coded HTML.
For those clients that require a CMS and not specifically a blog, I use http://processwire.com
The plugin ecosystem is lacking but I've always been impressed with its performance and intuitive API. I don't currently run e-commerce on it but Gumroad would be my first choice if I had to.
After testing some static site generators I've settled with Hugo and never looked back. I like especially the fact that I only have a single static file with no further dependencies. And the speed is fantastic. Hot reloading is very useful.
Prefer my own hacked-together static site generator. First iteration [1] was a mess, next (more-robust cleaner and faster) one is coming along nicely [2] and should replace [1] "any-day-now"..
(nb. If you need Markdown or restructuredText, this isn't for you for the time being, writing a few <p> or <h2> tags and the rare occasional <a> link never much bothered me since ~1998, images/nav have some Haskell-coded "Xtender-renderers" (simplified and no-recompile-needed custom html 'subtemplates' aka 'controls' coming in [2] though), and for more verbose text-content-only tags such `code` or `blockquote` it's easy to set up self-expanding short-tags such as `{X{c:code goes here}}` and `{X{bq:blockquote text here}}` etc.. ;)
If you're able to pull it off (i.e. have the time to iterate until it works) this is probably the best solution for the blogging part. Highest level of flexibility, a lot to learn, not too hard startegic-wise.
Trust me when I tell you that refactoring is nearly always the better solution. Consider that rewriting from scratch doesn't necessarily yield a better result than what you have already.
I really like Squarespace too, but just be wary if you have a site information architecture that needs to go beyond 1 level of menus. It doesn't handle sub-levels well.
I'd also really appreciate it if they let you save a template page (eg for a landing page) for easy re-use. Re-creating specific landing pages and thank you pages for each campaign we run is a bit of a pain as what I really just want to do is change a few paragraphs of text and update an image or two for these.
That would've been my choice a couple years ago and I still like this kind of setup for its transparency and maintainability. In fact, I've created sgmljs.net ("isomorphic" SGML + Prolog/Datalog + JavaScript-microservices web stack) to support both in-browser and (static or dynamic) backend preparation of your HTML, XML, or markdown files.
SGML has built-in dependency graph info so there's no need for Makefiles and OS command invocations. Unlike XSLT, SGML can parse and produce fully-featured HTML5. (Parts of) SGML constitutes a meta-language for injection- and XSS-free templating (designed to be non-Turing-complete, unlike XSLT). SGML also allows definition of custom Wiki syntaxes (sgmljs has full markdown support).
I think XML, for all the hate it gets, is so much nicer for extensible markup than all the weird template languages people invent daily...
And XSLT/XPath are really nice too. I just need to figure out how to shell out to external programs from libxslt's xsltproc and then I'll be able to do anything I want...
If this is for a client that can't manage a static site themselves, then I would probably look into splitting out the content editing part. For example services like https://www.datocms.com/ let you publish to a separate static site generator.
I just discovered Dato when I was looking for a CMS for Middleman and it looks fantastic. Expensive, but it seems to be an excellent choice for client work.
All good recommendations here, but I'd add a few more. .
I say take a look at Keystone CMS (http://keystonejs.com/) - it's a Node based CMS and is really easy to work with and has tons of options to customize as you need it.
Most websites I make for people I make with Wordpress or Ghost because the client likes them. My own site is static html — I wrote the current version by hand, but I have since made a rudimentary Perl script to quicken the process.
I used to work a lot with Wordpress in the past, but as projects tend to be more and more specific, I found Middleman[1] more flexible and for structured content (eg. directories) or for generating pages automatically, using a YAML structure is very convenient.
For my online shop, I use Shopify[2] as it is a side project and I did not want to spend a lot of time writing / setting it up. Shopify proves very convenient and includes a blog if needed.
Do you want to customize everything with ease? Do you have someone who can maintain the security of your blog and eventually add new features later?
=> WordPress on your own hosting
Do you want to use a very classical theme? Do you want a complete service with no skills required and no maintenance?
=> Wix or WordPress.com
Do you want to customize everything? Do you have someone to maintain the blog on a regular base?
=> Jekyll on GitHub or on your own hosting
Shall you need to sell things online with the blog, WordPress can be augmented with Shopify, meanwhile Wix has already this feature.
Sphinx. Lots of documentation uses it, so it can do most anything, plus if you are familiar with Sphinx, you will be hopefully more likely to write your documentation as well :)
Jekyll/Hakyll for blogs. They are both very customizable, you can write Markdown, and since they produce static pages you have one security worry less.
I use python based Nikola, a static blog generator. This i s for my personal blog. The killer features for me are using jupyter to write blog posts and custom urls for posts (which seem to be missing from pelican, the only other blog generator to support jupyter). The documentation is good for the usual tasks. In the extremely rare case when the documentation is not sufficient, the code is really easy to understand.
As in the previous thread, I'll just cautiously mention OctoberCMS. I don't know if they will do the job, I'm evaluating it for my client projects for project briefs starting with "we'd like a CMS... "
It is just as Open Source. However, it's newer, but has just hit stable recently. A strong plugin system. Purposed built for CMS from the ground up, built on Laravel with all the nice things.
It lacks some of the features you'd get with a dedicated backend service but it's truly static and costs about $0.004/transaction on AWS Lambda (not including Stripe's take).
The flat file Kirby CMS is a great option. The starter template has a basic blog implementation, it's easy to start modifying to look like what you want, and it has a basic admin panel for adding new pages/posts that's client friendly, unlike a static site generator. If you're not into making your own theme, there's a site for buying them called getkirby-themes.com which most other flat file CMS options don't have.
It used PHP and can run quite quickly if you setup caching and PHP 7 on your host. Content is generated from txt files that can have any number of fields (titles, subtitles, body, asides, meta info, etc).
As for ecommerce, I use Ecwid. It's a separate login to manage products, but it's also free for 10 or fewer products. After that it's a very reasonable monthly fee.
If it's for you, probably hand code. If it's for a client, try https://pulsecms.com It allows you to create static sites with a CMS layer on top that clients can edit easily. Static sites all the way baby!
Webflow + DPD (digital downloads), or Webflow + Shopify (physical goods)
If your CMS is not supposed to do anything particularly fancy and if you don't want the annoyance of dealing with techy staff, Webflow is currently the best website builder that I know. It's a visual tool and that saves you lots of time, especially if you are tech savvy. They are just releasing a CMS API that is going to make it even more flexible.
If you are selling real goods, Webflow integrates with Shopify very efficiently. If you are selling digital downloads, I'd consider DPD, which is in many ways better for digital downloads since it was born just for to do that. I am currently using it and I am very satisfied.
I think the comments here shoq that there is a massive opportunity for a Wordpress Killer. Nothing I've seen listed could replace Wordpress for the majority of non technical clients I would hand over a CMS managed site to.
We believe the platform we are developing, Strattic, could fill the gaps - it publishes WordPress (and other platforms) as static sites. That way non-technical clients still get their CMS, and developers get a production static site. Best of both worlds. https://strattic.com
Actually that sounds like something that I could use. How are you going to handle plugins? Or will you not? I suppose you could support plugins that provide content transformations...but not plugins that are more dynamic...
For my blog, I personally use Flask+Jinja with a custom markdown parsing setup[1]. Sure, it's not the best thing in the world but there's no database and in my experience it works pretty well. I've been meaning to set it up so that things are cached properly, but the machine is beefy enough to handle the current load. And let's be honest, if my blog gets HN'd I'll be too excited to be annoyed by having to switch to a static setup.
I have a private blog that I write for my own to better my writing skills.
I use Ulysses (the app) with a custom style (CSS) and extract my posts to an HTML file. I then upload the HTML file and the CSS file, which Ulysses also extracts, to S3, so then I can view it and read it from time to time. I realize this isn't the most elegant solution, but it works for me because I have very specific requirements from a CMS and I haven't been able to find them in any of the CMSes out there. (Most of them don't even have a clue as to what "minimalism" means.)
For blogs and personal sites, I'd suggest a static site generator such as ikiwiki (for self-hosting), Branchable (hosted), or Github Pages (hosted, but no SSL support for custom domains).
In addition to SSL support, ikiwiki offers several other useful features for constructing a blog or news site, such as "take all the pages under blog/* and emit a page with the last 10 in reverse order, including an RSS feed".
TextPattern was my favourite back when, even if it featured very awkward ideas (all content, styles, maintenance goes through their web interface to database -- good luck with unix tools to compare, diff and patch changes).
These days static content is the only valid answer in my books. I don't want to spend my nights worrying about rotting PHP/Ruby/NodeJS runtimes behind the scenes.
Jekyll/Lektor as a static CMS. Deployed to Amazon S3 backed by Cloudfront CDN.
All of this gives me: ease of deploy, AWS's reliable infrastructure, ultra fast website (can easily score 90+ out of 100 on google's pagespeed insights tool), delivered over SSL with a free certificate on my own domain, "infinite" scale, etc.
All of this can literally run on cents of a dollar per month.
If you're already comfortable with the node.js world it's easy to hack it if you want to support something new as well. Out of the box it requires very minimal setup to get things going.
We're huge fans of Bolt (http://bolt.cm) for small and medium sized websites. Its based on Synfony (PHP) and Twig and allows super easy creation of content types by configuration.
I have grown to love Jade/Pug templates, compiled with npm scripts. You can build your own site generator to convert pug templates with the simple command `pug --watch`.
Part of my Dropbox file tree is synched to a server hosting it with IIS - so I just throw a flat file in my /HTML/ folder and link to it on Gilgamech.com.
Yeah, that's one of the issues I avoid by directly hosting the files, instead of using them as a web host. I'd use Neocities if I didn't have my own server. (My server is just my old gaming PC, on my home internet.)
I sort of like werc, the framework behind cat-v. I would only imagine it for a personal site/portfolio, however, and not for commercial or business use.
Jekyll is great for blogs and simple brochure sites, go Hugo (heh) if you need something more complex. Hugo is much faster than Jekyll when running builds on larger sites.
I'd recommend Snipcart for e-commerce. Recently built a shop with it, using Jekyll as the framework. I've made a number of online stores with a variety of platforms and this was the easiest - took about 15 mins. Cheaper than Shopify too.
Edit: Here's a guide from Snipcart on how to do it - https://snipcart.com/blog/static-site-e-commerce-part-2-inte...
(I have nothing to do with Snipcart, just like the service)