Skip to content

Tymeslot/tymeslot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

899 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Tymeslot

The Open-Source Alternative to Calendly

Enterprise-grade meeting scheduling platform built with Elixir & Phoenix LiveView

License: Elastic-2.0 Elixir Phoenix Phoenix LiveView GitHub stars

πŸš€ Try Cloud Version Β· πŸ“– Documentation Β· πŸ› Report Bug


🎯 Why Choose Tymeslot?

πŸ”“ Open Source (ELv2)

Fork, audit, contribute β€” or just use it. No vendor lock-in, ever.

🏠 Your Data, Your Rules

Self-host on Docker/Cloudron or use our managed cloud.

πŸ†“ Full-Featured Free Tier

Everything you need to get started. Forever. No credit card required.

πŸ”’ Privacy-First

No tracking pixels, no data mining, no selling your data.

🎨 Professional Templates

Responsive email designs with calendar attachments.

⚑ Built for Performance

Real-time updates with Phoenix LiveView. Blazing fast.

πŸ”Œ Integrations

Calendar Providers (6)

Google Calendar Outlook Calendar CalDAV Nextcloud Radicale Zimbra

Google Calendar Β· Outlook Β· CalDAV Β· Nextcloud Β· Radicale Β· Zimbra

Video Conferencing (5)

Google Meet Microsoft Teams MiroTalk P2P Local Meeting Custom Links

Google Meet Β· Microsoft Teams Β· MiroTalk P2P Β· In-Person / Phone Β· Custom Links

πŸ’° Simple, Transparent Pricing

πŸ†“ Free Forever β€” Self-Hosted or Cloud

  • βœ… Unlimited bookings & meeting types
  • βœ… All 6 calendar providers
  • βœ… All 5 video platforms
  • βœ… Multi-language (EN, DE, UK)
  • βœ… Webhooks & embedding
  • βœ… Advanced reminders
  • βœ… Community support

Perfect for: Individuals, small teams, self-hosters

⭐ Pro Tier β€” €5/month Β· Cloud Only

  • βœ… Everything in Free
  • βœ… Priority support
  • βœ… Support open-source development
  • βœ… Early access to new features

Perfect for: Professional businesses, agencies

Get Started β†’

Self-Hosting: Always free. Deploy on Docker, Cloudron, or bare metal β€” no licensing fees, ever.

✨ Feature Highlights

πŸ” Authentication & Users

  • Multi-provider OAuth (Google, GitHub)
  • Generic OAuth/OIDC SSO (Keycloak, Authentik, Okta, Azure AD, etc.)
  • Email/password with verification
  • Customizable profiles & avatars
  • 4-step onboarding flow

🧠 Smart Scheduling

  • 90+ timezone-aware cities
  • Custom business hours & breaks
  • Real-time conflict detection
  • Configurable meeting types

πŸ“… Calendar Sync

  • 6 calendar providers
  • Full CRUD operations
  • Auto token refresh
  • Calendar discovery

πŸŽ₯ Video Conferencing

  • 5 video providers
  • Auto room creation
  • Role-based access
  • OAuth integration

πŸ“§ Email System

  • Professional templates (MJML)
  • 5 notification types
  • Calendar attachments
  • Delivery tracking

πŸ”’ Security

  • Rate limiting
  • AES encryption
  • XSS protection
  • Circuit breakers

🌍 Internationalization

  • 3 languages (EN, DE, UK)
  • Auto browser detection
  • Localized booking pages
  • DST handling

πŸ”— Embedding

  • Secure iframe widgets
  • Domain restrictions
  • Webhook notifications
  • Customizable pages

⏰ Reminders

  • Unlimited per meeting
  • Flexible timing
  • Email notifications
  • Automatic retry

πŸ“Έ Screenshots

Dashboard & Management

Dashboard

Availability & Scheduling

Availability

Embedded Booking Widget

Embedding

πŸ†š Tymeslot vs Calendly

Feature Tymeslot Calendly
Open Source βœ… Yes ❌ No
Self-Hosting βœ… Free Forever ❌ Not Available
Data Privacy βœ… Your Infrastructure ❌ Their Servers
Unlimited Bookings βœ… Free Tier ❌ Paid Only
Calendar Providers 6 Providers 3 Providers
Video Providers 5 Providers 3 Providers
Multi-Language βœ… 3 Languages βœ… Multiple
Webhooks βœ… Free Tier ❌ Paid Only
Embedding βœ… Free Tier βœ… Available

πŸ’Ό Perfect For

πŸ‘¨β€πŸ’Ό Freelancers & Consultants

Replace endless email chains with professional booking pages.

🏒 Small Businesses

Coordinate team availability without enterprise pricing.

πŸ”’ Privacy-Conscious Orgs

Keep scheduling data on your own infrastructure.

🌍 International Teams

Multi-language support for global customer bases.

πŸ’» Developers & Tech Teams

Extensible platform with webhook integrations.

πŸ“– Open Source Projects

Embed booking widgets in your documentation.

πŸ› οΈ Built With

Backend: Elixir 1.19 Β· Phoenix 1.8 Β· Phoenix LiveView 1.1 Β· Oban Database: PostgreSQL 14+ Β· Ecto SQL Frontend: Tailwind CSS Β· ESBuild Β· Alpine.js Email: Swoosh Β· MJML Templates Infrastructure: Docker Β· Cloudron Ready

πŸš€ Getting Started

☁️ Cloud

Try Now β†’ β€” Zero setup Β· Start in 60 seconds

🐳 Docker

Guide β†’ β€” Self-hosting Β· Full control

πŸ“¦ Cloudron

Guide β†’ β€” One-click install Β· Managed platform

πŸš‚ Railway

Deploy β†’ β€” One-click cloud deploy Β· No server management

🐳 Quick Start (Docker Image)

If you already have Docker installed, you can pull and run the image in one step:

docker run --name tymeslot \
  -p 4000:4000 \
  -e SECRET_KEY_BASE="$(openssl rand -base64 64 | tr -d '\n')" \
  -e PHX_HOST=localhost \
  -v tymeslot_data:/app/data \
  -v tymeslot_pg:/var/lib/postgresql/data \
  youruser/tymeslot:latest

This command pulls the image automatically if it is not present locally. For a full Docker guide, see README-Docker.md.

🀝 Contributing

⭐ Star the Repo

Star β†’ β€” Help others discover Tymeslot.

πŸ’° Support Development

Subscribe β†’ β€” Fund open-source development.

πŸ› Report Issues

Open Issue β†’ β€” Bugs & feature requests.

πŸ’» Contribute Code

Guidelines β†’ β€” Local setup, development workflow & PR process.

πŸ›‘οΈ Security

Built-in Protection

  • βœ… Input sanitization & XSS protection
  • βœ… AES encryption for credentials
  • βœ… Rate limiting & IP protection
  • βœ… Security headers (CSP, HSTS, CSRF)
  • βœ… Spam protection (honeypot + reCAPTCHA v3)
  • βœ… Regular dependency updates

Spam Protection

Protect signup and booking forms from bots:

  • Honeypot: Invisible field catches automated bots
  • reCAPTCHA v3: Google's invisible bot detection (optional)

Enable in your environment:

export RECAPTCHA_SITE_KEY="your_key"
export RECAPTCHA_SECRET_KEY="your_secret"
export RECAPTCHA_SIGNUP_ENABLED="true"
export RECAPTCHA_BOOKING_ENABLED="true"

Get keys at Google reCAPTCHA

Registration Control

Disable new user sign-ups without taking down the app β€” useful for invite-only or closed deployments. Defaults to true (registration open) when the variable is unset.

When disabled:

  • The sign-up page and "Sign up" link are hidden
  • Email and OAuth registration attempts are rejected with an informative message
  • Existing users can still log in normally

How to set REGISTRATION_ENABLED=false depends on your deployment:

Deployment How to set it
Local dev Add REGISTRATION_ENABLED=false to your .env file and export it before starting the server, or run export REGISTRATION_ENABLED=false directly
Docker Compose Add REGISTRATION_ENABLED=false to your .env file β€” it is forwarded to the container automatically
docker run Pass -e REGISTRATION_ENABLED=false, or use --env-file .env to load your .env file
Railway Set REGISTRATION_ENABLED to false in the Railway dashboard under Variables
Cloudron Set REGISTRATION_ENABLED to false in the Cloudron app settings

Password Authentication Control

Disable email/password login entirely and require OAuth β€” useful for SSO-only deployments (Keycloak, Authentik, Google Workspace, etc.) where you want to enforce identity-provider authentication. Defaults to true (password auth enabled) when the variable is unset.

When disabled:

  • The login form, sign-up page, and password reset flow are hidden
  • Direct POST /auth/session requests are rejected with an error redirect
  • Password-based registration and reset attempts return an informative error
  • OAuth login and registration continue to work normally
  • Existing users with passwords can still sign in via OAuth if configured

How to set PASSWORD_AUTH_ENABLED=false depends on your deployment:

Deployment How to set it
Local dev Add PASSWORD_AUTH_ENABLED=false to your .env file and export it before starting the server, or run export PASSWORD_AUTH_ENABLED=false directly
Docker Compose Add PASSWORD_AUTH_ENABLED=false to your .env file β€” it is forwarded to the container automatically
docker run Pass -e PASSWORD_AUTH_ENABLED=false, or use --env-file .env to load your .env file
Railway Set PASSWORD_AUTH_ENABLED to false in the Railway dashboard under Variables
Cloudron Set PASSWORD_AUTH_ENABLED to false in the Cloudron app settings

Report Vulnerabilities

Use our contact page for security issues.

πŸ“„ License

This project is licensed under the Elastic License 2.0 - see the LICENSE file for details.

🏒 About

Tymeslot is developed by:

πŸ’¬ Community & Support


Built with ❀️ using Elixir, Phoenix, and LiveView
Made by Luka Karsten Breitig · Diletta Luna OÜ · Tallinn, Estonia