Platform Overview · How to use it

2 min read
Foundational8 min read
Rapid overview

How to use it

How you interact with the platform depends on who you are.

As a visitor / end user

You usually never see "the platform" at all — you see a product:

  • You open a survey link (Erevna), browse a café's menu (Katalogos), land on an event page (Kefi), or play a browser game (Aurora).
  • Your request hits Traefik, which routes you by hostname to the right frontend or static page over HTTPS.
  • If the product needs you to log in, you authenticate against that product's Keycloak realm — your Erevna login is not your Katalogos login.

As a tenant (a customer running a product)

A tenant is a paying/organisation customer — say a restaurant using Katalogos or an organiser using Kefi:

  1. You sign up / log in through that product's Keycloak realm.
  2. You get a tenant identity; from then on everything you create is tagged with your tenant id and only ever visible to you, thanks to automatic per-tenant filtering.
  3. You manage your product data through the product's web app (build a menu, design a survey, set up an event), upload images that land in S3-compatible storage, and receive notifications (e.g. emails) when relevant events happen.
  4. Billing is handled by the payments service according to your plan.
  5. For Kefi specifically, you can point your own custom domain at your event page — Traefik's host routing plus path-rewrite middleware makes your domain resolve to the right internal route, with a TLS certificate issued automatically.

As a developer working on the platform

To work on or extend the platform you operate at the infrastructure and code level:

  • You work inside the dloizides Kubernetes namespace on the K3s cluster.
  • You build container images and push them to the private registry over the WireGuard VPN; deployments reference them by digest, so a rollout is an explicit, reproducible change.
  • You add functionality by working within the relevant microservice (the one that owns that bounded concern), wiring cross-service reactions through RabbitMQ events rather than direct calls.
  • You reuse the shared NuGet / NPM packages instead of re-implementing cross-cutting concerns, and you can stand up an entirely new product with the create-dloizides-app scaffolder.
  • New routes and hostnames are exposed by configuring Traefik (host rules, TLS, and any middleware such as security headers or rewrites).

See also