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.
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.
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.
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.
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
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.
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)
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.
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.
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.
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.
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.
Any other suggestions would be welcome...
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.
Another good solution is the Shopify Buy Button combined with SendOwl for digital goods delivery.
- 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.
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.
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.
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).
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...
You reminded me of my college days circa 2003. Built some fun projects with XSLT and XPATH.
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.
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.
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.
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..).
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.
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.
Markdown content stored in Git, custom indexes in Redis/memcached, data fetched via GraphQL, rendered with React, published with`git push`.
Not at all the right tool for the job, but I had a lot of fun building it.
That said, I do sometimes look longingly at static site generators and wonder what's on the other side.
(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)..
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 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).
Dropbox is doing away with allowing you to publicly share docs, so now/soon one can't use Dropbox for hosting static websites anymore.
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.
I'm planning on using processwire to build a webstore with either Foxycart or Snipcart.
Just as a starter I will be moving my personal blog over to it just so I can have one processwire app in production.
That was the static CMS used my Joel Spolsky.
I downloaded a long time ago, and had to buy it because it worked very well.
Now it is EOLed and I am looking for something similar, but cannot find it. Tried Jeckyl but I am not convinced, although I really love ruby.
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.
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.
My other recommendation would be to use Spike - (https://www.spike.cf/) (from the same guys who built Roots) along with rooftop CMS (https://www.rooftopcms.com/) or Contentful CMS (https://www.contentful.com/)
there's also Flatmarket which I've been meaning to recommend for someone else to try:
https://christophercliff.com/flatmarket/
https://github.com/christophercliff/flatmarket
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.
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
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.
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 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 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.
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.
I always make sure to proxy Ghost through a CDN because it lessens the load on my server.
For digital products, I use Sellfy and Selly[#]
[1] https://github.com/chyrp/chyrp
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.)
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".
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.
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.
A great open source CMS based on Firebase that outputs a static site.
Easy to do relationship fields, create JSON templates, customize for clients.
Only issue is developers have stalled out on project dev and basic support. Would love to pay more if someone could fork and take up the charge.
For e-commerce, I never want to see Magento again (used at company where I work) and would look squarely at Shopify next time
For both uses any self hosted CMS feels like you spend too much time as admin/configurator
CMS for static sites (Using Jekyll under the hood)
(Disclaimer I'm the creator of GrepPage).
The code quality is not good, but it has loots of good functionality and making small modifications is fairly simple.