Skip to content

jeboehm/invito

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

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors