SlotFinder
A web-based meeting time finding tool with calendar-based availability selection.
Features
- Calendar-based day/range selection
- Hour slot selection for availability
- Real-time ranking of best meeting times
- OIDC authentication (Keycloak)
- Support for guest responses (no login required)
- Profile picture sync from OAuth provider
Quick Start (Development)
# Start PostgreSQL and Keycloak (preconfigured)
docker compose up -d
# Copy env and run app
cp .env.example .env
uv run python app.py
Open http://localhost:5000 and login with:
- Username: admin
- Password: admin
Docker Compose Setup
| File | Purpose |
|---|---|
docker-compose.yml |
Full stack (app + postgres + keycloak) |
docker-compose.dev.yml |
Dev override - disables app container |
docker-compose.override.yml |
Symlink to dev.yml for local debugging |
Dev mode (default): Only runs postgres & keycloak, you run the app locally:
ln -sf docker-compose.dev.yml docker-compose.override.yml
docker compose up -d
uv run python app.py
Production mode: Runs everything in containers:
rm -f docker-compose.override.yml
docker compose up -d
Keycloak Admin
- URL: http://localhost:8080
- Admin:
admin/admin - Preconfigured realm:
slotfinder
Environment Variables
| Variable | Default | Description |
|---|---|---|
SECRET_KEY |
dev-secret-key |
Flask secret key |
DATABASE_URL |
postgresql://slotfinder:slotfinder@localhost/slotfinder |
PostgreSQL connection |
SESSION_COOKIE_SECURE |
false |
Require HTTPS for session cookies (set to true in production) |
OIDC_CLIENT_ID |
slotfinder |
Keycloak client ID |
OIDC_CLIENT_SECRET |
slotfinder-dev-secret |
Keycloak client secret |
OIDC_DISCOVERY_URL |
http://localhost:8080/realms/slotfinder/.well-known/openid-configuration |
OIDC discovery endpoint |
OIDC_USE_GIVEN_NAME |
false |
Store first/last name from OAuth provider |
Usage
- Login via SSO to create polls
- Share poll link with participants
- Select available days on the calendar (click or drag)
- Select available hours
- Submit your availability
- View ranked time slots showing who is available
