Zotonic Real-Time Web Framework - have you used it?

If so, where/how and what do you like about it? :003:

Zotonic, the Erlang Web Framework

Zotonic is the open source, high speed, real-time web framework and content management system, built with Erlang. It is flexible, extensible and designed from the ground up to support dynamic, interactive websites and mobile solutions.

Zotonic is incredibly fast and wonderfully stable - suited for anything from basic websites to complex distributed applications. It offers an elegant backend for managing content with the flexibility that developers need to build truly amazing applications.

Start getting to know Zotonic on the feature page , have a look at our introduction video and check out the gallery page.



We (the core team) are using it for lots of sites. some example categories:

  • Online learning and collaboration environment
  • Women health - pro choice
  • Heritage sites - unlocking collections of museums on the web
  • Help desk - live view of a customer’ browser to help them via chat and telephone
  • Story sites - let people share stories about their neighborhood
  • Jewish Monument - commemorating the more than 104.000 holocaust victims in the Netherlands

And much more.


Could you please also share the links to those sites what you are mentioned? Also interesting - do you have some topic about eg Bootstrap or other CSS/JavaScript/HTML custom integration into Zotonic?



For the backend we are currently using Bootstrap 3.

For the communication between server and client we use Cotonic https://cotonic.org/
Cotonic implements the client side MQTT communications, supervision of WebWorkers and more.

A couple of examples that are build with Zotonic:


And a couple more, as I can only have 5 links in a post:


@mworrell It’s looks very impressive! Thanks for sharing!

About Bootstrap - it’s my fault, now I see in GitHub that used Bootstrap 3.4.1.


For some not-too-distant future we are planning to switch to Bootstrap 5.

Then it will also be easier to combine the css with other css-frameworks, like tailwind.


Zotonic has become my go-to application prototyping system for maybe 4-5 years now). I love the category, resource, edge model. I’m not sure if this is still the case but in the past when I was tempted to use it for production I ended up have to reach for different tooling because it expected to run on one web-server node. I don’t know if that is still part of the framework


We have prototypes for multi-node and have been using them for a project. But… we didn’t see any performance bottle necks with any of our systems, so are still single-node.

Also we observed:

  • our usual uptime is ~100%
  • a single node is much easier to maintain and update (and has less failure modes)
  • million(s) of requests/hour without breaking a sweat (with sites being featured on the homepage of CNN, BBC and more news outlets)
  • VPS hosts are crazy stable these days, with live migration in case of hardware changes / failure
  • most updates are simple css/templates/erlang-code updates, we perform those live with hot code reloading

We have warm failover on our roadmap, which should catch the “data center is down” and “need host OS upgrade” use cases. Which, in our experience, happen maybe once every two or more years.


We are running it in production with a customer support application, which is featured on multiple client sites. It handles all this traffic very nicely.

In the past we have had a reverse proxy in front of it, but because Zotonic makes client side caching easy this cache was not hit much anyway. We decided to remove it entirely because it halved our response times, and complicated the setup.

The machine usually has 50k open connections which can grow to around 250k. Which is peanuts for the beam.

What kind of traffic are you expecting in production?


I 100% agree, the performance on a single node is amazing, and the system administration is much simpler. The problem I ran into was convincing everyone around me that it could work with a single node. Part of this was convincing reasonably large IT dept. (~80 engineers, and three levels of management) that it was possible to simplify the extent I was talking about. Perhaps they had all been burned by their ageing .NET systems stability and scaling enough to be cautious.

RE: what kind of traffic are you expecting in production?
I sadly don’t have good numbers on this. I’ve largely been working the transportation brokerage space, and this was a reasonably large trucking brokerage. That meant a team of around 2k employee’s spending their entire day with the software with pretty intensive searching and filtering truck data with lots of odd invoicing logic. The current infrastructure to support this was way bigger than I care to admit.


We have to explain this often to clients: “Now we would like you to show us a picture of your backend architecture”.


Firefox really really does not like this URL, there’s no TLS support so it kept giving me full-page warnings until I added a temporary exemption… ^.^;

I’ve only played with Zotonic to date so far, nothing deployed. I should make up a big project in it sometime to get a proper “feel” for it…

1 Like

We are working on a new website, but priorities…

The site is here https://test.zotonic.com. Zotonic 1.0 now manages its certificates automatically via LetsEncrypt.

The most up-to-date documentation is on this site (previously on readthedocs, but now dogfooded into zotonic), updated automatically from GitHub after a push.

The code of the site is here: GitHub - zotonic/zotonicwww2: The second incarnation of the Zotonic web site - also used as an example site. @mworrell added lots and lots of comments in de templates and code to explain things.


I’m curious where the name comes from @mmzeeman :see_no_evil:

Words that spring to mind when I think of Zotonic are those like zoologic, zoonotic… and, supersonic :lol:


Actually, the first version was called Zophrenic, along names like mnesia. Because it was a bit confused about what the system really was, with all its features. Back then it was much smaller.

But then… we had a customer and the name didn’t pass the email spam filters. Apparently the name was too similar to some pharmaceuticals.

So we renamed it to Zotonic. Also because we liked the name, and it was unique enough to be found via a web search.

And it enabled us to add more *tonic names, like Cotonic (the JS library).

Now we only need someone to make some nice *tonic imagery :smiley: :tropical_drink:


That’s awesome! Is it hardcoded to LetsEncrypt or does it support any ACME provider?

I actually really like “Zotonic”, lol. ^.^


Currently it is LE, but it is easy to make configurable, as we have full control of the code.


That is a cool story, and a lesson rolled into one. Always test your new cool project name against spam filters. :slight_smile:


I really like that the Zotonic team implemented a complete solution that demonstrates the capabilities of the Erlang programming language for creating web platforms of varying degrees of complexity. Implemented a modular architecture that allows you to implement ideas.

The project has a blog. I hope that the team will publish notes more often, stories about current work.

While reading the blog, I found out that the authors were involved in the creation of a book (The Architecture of Open Source Applications) for which they wrote a chapter about their project.

It would be great if there was time and opportunity to create a video course for developers, in which, using the example of a project, the authors would talk about its features and capabilities.