An example app on earl.ee

SvelteKit, extended, running on earl.ee.

This app was built from its Dockerfile and deployed with git push, the same way as every other app on the platform.

Framework
SvelteKit
Built as
Node adapter, custom HTTPS server
Answering at
sveltekit-extended-1806.earlee.app
Listens on
port 3000, HTTPS
A request travels from the browser over HTTPS to the earl.ee router, which passes it to this app's container on port 3000. Browser you HTTPS earl.ee router certificate, TLS :3000 This container Node
Your request reached this page over HTTPS. The platform holds the certificate and passes the request to the container on port 3000; the app reads its address from the request.

What SvelteKit does here

The server ran this page’s load function for this request.

{
  "host": "sveltekit-extended-1806.earlee.app",
  "time": "2026-10-31 20:07:30 UTC"
}

What end-to-end TLS does here

Between the earl.ee router and this container, the request travels over TLS as well. The router checks this container’s certificate before it passes anything on.

Two paths compared. By default a request goes from the browser over HTTPS to Caddy, over mutual TLS to the earl.ee router, and over plain HTTP to the container. For this app the last step is TLS as well. BY DEFAULT Browser HTTPS Caddy mTLS earl.ee router HTTP Container THIS APP Browser HTTPS Caddy mTLS earl.ee router TLS This container Two paths compared. By default a request goes from the browser over HTTPS to Caddy, over mutual TLS to the earl.ee router, and over plain HTTP to the container. For this app the last step is TLS as well. BY DEFAULT Browser HTTPS Caddy mTLS earl.ee router HTTP Container THIS APP Browser HTTPS Caddy mTLS earl.ee router TLS This container

Measured by this app, for this request

Scheme
https
Certificate from
EU-Native Platform Root CA
Issued for
f8c4cf15-8afe-4ac4-946f-d797e173b16b
Valid until
2027-10-21 19:56 UTC

Stated by the platform

What PostgreSQL does here

This app has a PostgreSQL database of its own in each environment. The database runs in a container on the app’s own network, and only this app’s container can reach it.

This container connects to its PostgreSQL database on port 5432 without TLS. Both containers are on the app’s own network, which nothing outside the app can reach. THIS APP’S NETWORK This container :5432, no TLS PostgreSQL This container connects to its PostgreSQL database on port 5432 without TLS. Both containers are on the app’s own network, which nothing outside the app can reach. THIS APP’S NETWORK This container :5432, no TLS PostgreSQL

Measured by this app, for this request

Server
PostgreSQL 18.4 (Debian 18.4-1.pgdg13+1)
Host
db-f8c4cf15-8afe-4ac4-946f-d797e173b16b-live
First row written
2026-10-21 14:38 UTC
Container started
2026-10-21 19:56 UTC
Page views counted
33
Database size
7.5 MB

The first row is older than this container, so the data outlived at least one container.

Stated by the platform

What Valkey does here

This app has a Valkey instance of its own in each environment. Valkey keeps everything in memory. It runs in a container on the app’s own network, and only this app’s container can reach it.

This container connects to its Valkey instance without TLS. Both containers are on the app’s own network, which nothing outside the app can reach. THIS APP’S NETWORK This container no TLS Valkey This container connects to its Valkey instance without TLS. Both containers are on the app’s own network, which nothing outside the app can reach. THIS APP’S NETWORK This container no TLS Valkey

Measured by this app, for this request

Server
Valkey 9.1.1
Host
valkey-f8c4cf15-8afe-4ac4-946f-d797e173b16b-live
Valkey started
2026-10-27 20:05 UTC
Container started
2026-10-21 19:56 UTC
Page views counted
12
Memory used
1.0 MB
Memory limit
64.0 MB
When full
allkeys-lru

The counter starts again at 1 whenever Valkey loses its contents.

Stated by the platform