Skip to content

Quick start

This page walks you through the shortest path to a running calit instance.

  • Docker and Docker Compose installed on the host.
  • A public HTTPS URL pointing to the host (required for production use, e.g. https://book.example.com). For a local trial, http://localhost:8080 works.
  • An SMTP server for sending booking confirmation and reminder emails.

Clone the repository, or copy docker-compose.yml and .env.example from it to an empty directory:

Terminal window
git clone https://github.com/asm0dey/calit.git
cd calit
Terminal window
cp .env.example .env

Open .env and set at minimum:

VariableDescription
DB_PASSWORDPassword for the Postgres database.
APP_BASE_URLPublic origin of the app, e.g. https://book.example.com.
SESSION_ENCRYPTION_KEYAt least 16 characters. Generate with openssl rand -hex 32.
TOKEN_ENCRYPTION_KEYExactly 64 hex characters. Generate with openssl rand -hex 32.
MAIL_HOSTSMTP hostname.
MAIL_PORTSMTP port (commonly 587 or 465).
MAIL_USERNAMESMTP username.
MAIL_PASSWORDSMTP password.
MAIL_FROMFrom address for outgoing mail.
MAIL_START_TLSSTARTTLS mode: REQUIRED, OPTIONAL, or DISABLED. Use REQUIRED with port 587.
MAIL_TLStrue to use implicit TLS (port 465); false otherwise.
Terminal window
docker compose up --build -d

This builds the image and starts two containers: app (Quarkus on port 8080) and db (Postgres).

Open APP_BASE_URL in your browser. Because the database is empty, the app redirects automatically to /setup. Fill in the form to create your first admin account. There is no default password.

You are now logged in as the admin. From the management UI at /me you can:

  • Create meeting types with custom slugs, durations, and booking controls.
  • Configure your availability and calendar integrations.
  • Invite additional users (if you enable sign-ups).