Skip to content

Repository files navigation

Invito

A lightweight, self-hosted scheduling tool. Give guests a link — they pick a time that works for both of you.

Invito slot picker

Invito connects to your existing CalDAV calendars to find open slots and blocks time when a booking is confirmed. No cloud lock-in, no monthly fee.

Features

  • CalDAV integration — connects to any CalDAV server (Nextcloud, iCloud, Google Calendar via DAV, etc.)
  • Multiple event types — define different meeting kinds with fixed durations (e.g. "30-min intro call", "1-hour consultation")
  • Public booking pages — share a link; guests book without needing an account
  • Embeddable widget — embed the booking picker as an iframe on any website
  • Pending approval — every booking request waits for your confirmation before being added to your calendar
  • Email notifications — accept or reject bookings directly from your inbox
  • OIDC login — no separate user database; plug in your existing identity provider
  • Single binary — deploy with one file and an SQLite database

Quick Start

Requirements

  • Go 1.22+
  • An OIDC provider (Keycloak, Authentik, Dex, GitHub, Google, …)
  • A CalDAV server
  • An SMTP server

Run with Docker

docker run -d \
  -e INVITO_BASE_URL=https://invito.example.com \
  -e INVITO_OIDC_ISSUER=https://auth.example.com/realms/main \
  -e INVITO_OIDC_CLIENT_ID=invito \
  -e INVITO_OIDC_CLIENT_SECRET=secret \
  -e INVITO_SMTP_HOST=smtp.example.com \
  -e INVITO_SMTP_FROM=invito@example.com \
  -e INVITO_SESSION_SECRET=replace-with-32-byte-hex \
  -v invito-data:/data \
  ghcr.io/jeboehm/invito:latest

Build from source

git clone https://github.com/jeboehm/invito.git
cd invito
go build -o invito ./cmd/invito
INVITO_BASE_URL=http://localhost:8080 ./invito

See Getting Started for a full walkthrough.

Documentation

Type Content
Tutorial Step-by-step: from install to first confirmed booking
How-to: Add a calendar Connect a CalDAV calendar
How-to: Create an event type Define a new meeting kind
How-to: Set your availability Configure recurring weekly office hours
How-to: Share a booking link Send guests a link
How-to: Manage bookings View and filter booking requests
How-to: Set up your profile Configure username and timezone
How-to: Embed a booking widget Add an iframe booking picker to your website
Explanation: Architecture Design decisions and system overview
Explanation: Data model Entities and relationships
Explanation: Booking flow How a booking moves from request to confirmation
Reference: Configuration All environment variables
Reference: HTTP API All routes and their behavior

Contributing

Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.

License

MIT — see LICENSE.

About

A self-hosted booking page for busy people. Share your link, let guests pick a time — you confirm or reject. Syncs with your own CalDAV calendar, sends email notifications, and stays fully under your control. One Go binary, one SQLite file, no subscription required.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages