Skip to content
elek.io

Your CMS doesn't need a server, and your website probably doesn't either.

With elek.io, your CMS will run as a desktop app on your own device, even offline. We believe most websites should be static: rebuilt when their content changes, not built again on every request.

Why static

Most websites change now and then. Their CMS runs around the clock anyway.

We think most websites don't need their own server, and are better off without one. Here is why.

A CMS on a server

Serves visitors
HTML, CSS and images What visitors get
Theme and plugins Elementor, Yoast SEO, Contact Form 7, … 3 updates
CMS WordPress, TYPO3, Drupal, …
Runtime PHP, Node.js, …
Database MySQL, MariaDB, PostgreSQL, …
Server Linux with Apache or nginx, … Always on
Updates Backups Monitoring Hosting bill

Everything below the files runs around the clock, visitors or not, and each layer needs its own updates.

A static site

Serves visitors
HTML, CSS and images What visitors get
File storage Web space, S3, GitHub Pages, … Serves files only

Visitors get the same files, from file storage alone. Nothing else of the site runs while visitors read it.

Without a server

What a static site does better.

Files on storage are as simple as a website gets. That leaves less to wait for, attack, pay for and update.

Time on the server. Median of 100 requests. A CMS on a server, 45 ms. CMS +13 ms. Database +11 ms. Theme +21 ms. A static site, 0.5 ms. File +0.5 ms.

Fast. Visitors get finished files. No page is assembled on request.

Measured with WordPress on a laptop. Other hardware gives different numbers.

access.log. "GET /wp-login.php HTTP/1.1" 404 "POST /xmlrpc.php HTTP/1.1" 404 "GET /.env HTTP/1.1" 404 "GET /wp-admin/ HTTP/1.1" 404 Nothing here to log in to.

Secure. No database, login page or plugin is online. There is little to attack and nothing to patch.

Hosting bill, September. File storage, 0.3 GB. Traffic, 21 GB. Server hours, 0. Total, free plan, €0.00.

Cheap. Hosts bill for storage and traffic, not for a server that waits. Many small sites host for free.

Response time. Rush of visitors. Server, Up to 18.4 s. Static, Up to 4.3 ms. 250 ms.

Calm under load. A rush of visitors only means more requests for the same files.

Measured with WordPress on a laptop. Other hardware gives different numbers.

Runtime to upgrade, None. Database to back up, None. Content history, In Git.

Little to maintain. No runtime to upgrade and no database to back up. Every change is versioned with Git.

Current host, dist/. New host, dist/.

Portable. Any web space or bucket works. Moving to another one means copying files, not migrating a database.

Why another CMS

We found no CMS for static sites that handles content like one on a server. So we're building one.

Those we found keep content in the website's own repository, tied to that one site. Their hosted plans charge per editor after the first few, and translation is often a weak spot.

Projects
All your content in one Git repository, apart from the code of the websites and apps that use it. Every change is kept as a commit, so Git shows who changed what and can restore any earlier state.

Changed Teaser, 2 min ago. Added showroom.jpg, Yesterday. Release 1.4.0, Sep 28.

Collections
One for each kind of content, such as Vehicles, Locations or Pages, with the fields you define. 18 field types, from text and dates to select lists and Markdown, each with rules such as required, unique or a maximum length.
Entries
One vehicle, one location, one page, each with the fields of its Collection. An Entry links other Entries instead of copying them: a vehicle points to its location, so a new address is changed once.
Assets
Images, PDFs and other files, stored once and linked from any Entry. An Asset that is still linked can't be deleted, so no page loses its image.

showroom.jpg, Used by 3 Entries.

Components
Groups of fields for many places, such as a hero, a gallery or opening hours. An Entry holds any number of them in any order, so a page is built from sections. Change a Component, and every Collection that uses it follows.
Languages
Text, numbers and links translate, and so do the names, labels and descriptions of your Collections and their fields. No plugin and no setting per field. A required field without a translation fails validation.
Types
Core turns the model into zod schemas and TypeScript types, so your code knows every field and its type.

How it works

From the first field to your website and apps.

You will be able to create and manage content in elek.io Desktop, use it with elek.io Core, and optionally let elek.io Cloud host and deliver it to one or more websites and apps.

When you do need a server

Not everything can be built in advance.

Your website is built from each Release before anyone visits it. A native app can't ship an update for every change. A page rendered on request, or a live part of a static one, reads its content while it runs. elek.io Cloud will serve every Release to both through a Content API.

More about Cloud In development
elek.io Desktop Will create Release 1.5.0 In development
elek.io Core Builds it once per Release
Your website Static files on file storage
elek.io Cloud Will serve it on every request In development
Your apps And pages rendered on request

Products

Desktop for editors. Core for developers. Cloud only if you need it.

Autohaus Ebersfelde, Website. 3 changes not synced. Release 1.4.0, Sep 28. Sync. Checked 2 min ago. Check now.

In development

Offline CMS for Windows, macOS and Linux.

More about Desktop
Alpha

Use your content and generate TypeScript types and API clients.

More about Core
In development

When you do need a server.

More about Cloud

Questions

Before you choose.

What agencies and developers ask first.

Why a desktop app and not a browser?

A CMS in the browser runs on a server: your own, which you host and patch, or a vendor's, which holds your content. elek.io Desktop will run on each editor's computer instead and save to a folder there, so editors will be able to keep working offline, and the content will stay where you put it. It is in development, for Windows, macOS and Linux.

What is the difference between a server and file storage?

File storage works like a hard drive on the internet: it stores your files and hands them out, and nothing of yours runs there. What's gone is what makes a server your problem: the operating system, runtime, database and updates, and one machine running all the time for one site.

What does it cost?

elek.io Core is free. elek.io Desktop will be free too. elek.io Cloud will come with unlimited editors. Its prices aren't set yet.

What happens to my content if elek.io stops?

It stays where it is: in your Git repository and in a folder on every computer that works on it, as plain JSON files with Assets in Git LFS. Any program can read them without us. elek.io Core works without our servers, and elek.io Desktop will too.

Do editors need an account?

Not with elek.io. elek.io Desktop will need none, and only elek.io Cloud will ask for one. To work together, everyone needs access to the Project's Git repository, for example through a GitHub account.

Can several editors work on the same Project?

That is what elek.io Desktop is designed for. Each editor will work on a copy on their own computer, even offline, and your Git repository will bring the copies together. It is in development.

Which frameworks does it work with?

Any framework that builds static files. elek.io Core integrates with Astro, and any other framework can read the JSON files that elek export writes. Tell us in GitHub Discussions opens in a new tab which framework you'd like an integration for.

elek.io is in development.

Get updates by following us on Bluesky.