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..).
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...
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...
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.
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!
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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].
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.
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".
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!
+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
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.
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.
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 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.
197 comments
[ 2.8 ms ] story [ 63.0 ms ] threadI 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.
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..).
Plus, I am a coder. And coders code so that's what I do. It's just a psychological thing...
https://github.com/clckwrks/clckwrks
Edit: https://github.com/clckwrks/web-plugins
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 tend to blow it all away and start again in this situation, when I've got time I intend to move away from Jekyll
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.
https://github.com/jekyll/docker/wiki/Usage:-Running
I had to write a plug-in to be able to get it to support multiple sites:
https://github.com/sumdog/jekyll-multisite/
(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.
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.
Update: Maybe take a closer look to OctoberCMS. It seems to go into your direction.
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).
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
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.
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.
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.
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.
Other options are to go with static site generators like Middleman or Hugo for your blog and setting up a shop on Shopify or Sellfy.
As a side note, I have open sourced the code [1] for my shop/blog that is running at https://www.authenticpixels.com. It is written in Elixir/Phoenix.
[1] https://github.com/authentic-pixels/ex-shop
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.
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.
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.
Also I'm wondering, with Squarespace, it's not clear whether you can install on your own server or not
It has a local webserver, spell check, optional image compression, and minimal dependencies.
I don't get the need of Jekyll or Hugo. They're bloated and it's a pain to customize so called "themes". I'm OK with 'boring' HTML and CSS.
I didn't found something (yet) for JPEG.
jpegoptim --strip-all
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].
[1] Middleman - https://middlemanapp.com
[2] Shopify Cart Links - https://help.shopify.com/themes/customization/cart/use-perma...
[3] S3_website - https://github.com/laurilehmijoki/s3_website
I setup a Hugo site using that exact guide.
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".
For CMS I really can recommend http://mezzanine.jupo.org/
It also includes a Blog, is in Python/Django and is fulfilling all needs from very small to very large sites.
- No DB. Use a flat file layout similar to Jekyll or static site generators.
- Offers dynamic features like redirecting and custom routing when you need it. This isn't possible with a pure static site generator.
- Decent optional panel to write, edit and manage almost all aspects of your site.
- Quite fast once you set it up with good caching.
It is classified as a "flat-file CMS", explained here: https://github.com/getgrav/grav/issues/516
It does not require a database.
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.
(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.. ;)
[1] https://github.com/metaleap/HaXtatic/
[2] https://github.com/metaleap/HaXtatic/tree/master/__tmp_nu_
v0 "works" already, it's just stupidly inefficient and too messy code to properly refactor (vs rewrite from scratch)..
That said, I do sometimes look longingly at static site generators and wonder what's on the other side.
[1]: http://blog.tedmiston.com/
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.
[1] Middleman - https://middlemanapp.com
[2] Shopify - https://www.shopify.com