ForwardWidgets
Widgets for Douban and Trakt watchlists plus personalized recommendations, live TV streaming including PlutoTV, Yatu ra…
Open-source meeting scheduling platform built with Elixir/Phoenix LiveView. Self-host or use the managed cloud at tymes…
Booking pages, calendar sync, video rooms and automated emails — running on your server, under your control.
Built on Elixir/OTP, so it keeps running while you sleep.
Self-host with Docker → · Try the Cloud → · Live demo → · Docs → · Issues →
A real booking, start to finish: pick a duration, choose a time, done. · Watch in HD →
Open source, and staying that way. Calendly is closed SaaS. Cal.com relicensed away from open source in 2026. Tymeslot's source stays public and self-hostable under the GNU AGPLv3 — what you run today, you can keep running tomorrow.
Actively developed. Tymeslot is the engine behind tymeslot.app, our managed cloud — so the code you self-host is the same code we run in production for paying customers. New releases ship regularly; see the releases.
One command. Postgres is bundled, so there is nothing else to install.
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 \ luka1thb/tymeslot:latest
Open http://localhost:4000 — your scheduling platform is live. The first account you create becomes the admin. For SMTP, TLS, a reverse proxy and external Postgres, see the Docker guide.
Keep
tymeslot_pgas a named volume. Swapping it for a host path can fail on Docker Desktop, rootless Docker and SELinux hosts. If you need a specific location, use external Postgres instead.
No add-ons, no per-feature upsells. It all ships in the box.
Upcoming meetings, quick actions and your whole setup on a single screen. No hunting through menus to change how you take bookings.
Working hours, date-specific overrides, holiday blocks, per-meeting buffers, booking windows and minimum notice — set once, and your booking page reflects exactly when you are free.
Inline on a page, a popup, or a floating button. Copy the snippet, paste it on your site. Tokens are signed and domain-locked, so your widget only runs where you put it.
Every connected calendar is checked the moment someone books. One conflict anywhere blocks the slot everywhere — across Google, Outlook, CalDAV and the rest.
.ics file on every send, configurable reminders, and signed cancel/reschedule links that need no login.meeting_created, meeting_cancelled and meeting_rescheduled webhooks plug straight into n8n, Zapier, Make or your own backend.Calendars — sync availability and write confirmed meetings back, both ways.
Google Calendar |
Outlook |
Apple iCloud |
CalDAV |
Nextcloud |
Radicale |
Zimbra |
Baikal |
mailbox.org |
Video & location — auto-create a meeting room (or set a place) when a booking is confirmed.
Google Meet |
Microsoft Teams |
Zoom |
MiroTalk P2P |
In person / phone |
Custom link |
| Method | Guide | Notes |
|---|---|---|
| Docker | README-Docker.md | Single container, Postgres included — recommended |
| Cloudron | README-Cloudron.md | One-click install, automatic updates |
| Railway | Deploy → | One-click cloud, no server to manage |
| Managed Cloud | tymeslot.app | Zero setup, free plan included |
Full configuration reference — SMTP, OAuth, OIDC, reCAPTCHA, external Postgres, SSO-only mode — lives in the Docker guide. The first user to register on a fresh install becomes admin and gets /admin, where runtime settings (registration on/off, password auth, video transcoding) can be toggled without a redeploy. For promoting further admins on each target, see docs/ADMIN.md.
Optional. Charge attendees through Stripe at booking time. Off by default — self-hosters opt in by registering their own Stripe platform, and Tymeslot never holds the funds or takes a cut unless you set one.
Prerequisites
https://<your-domain>/webhooks/stripe/connect, set it to listen to events
on Connected accounts, and subscribe it to checkout.session.completed,
checkout.session.expired, charge.refunded, charge.dispute.created,
charge.dispute.closed, and account.updated.Tymeslot pins its Stripe API calls to version 2025-11-17.clover. Create the
webhook endpoint on that API version (or your account default, if newer);
endpoints on older versions keep working, as both payload generations are
read. Upgrading Tymeslot never rotates or invalidates webhook signing
secrets — existing endpoints and secrets stay valid.
Environment variables
| Variable | Purpose |
|---|---|
STRIPE_SECRET_KEY |
Your platform's Stripe secret key (sk_live_… or sk_test_…). Required when MEETING_PAYMENTS_ENABLED=true. |
STRIPE_CONNECT_WEBHOOK_SECRET |
Signing secret for the Connect webhook endpoint. Required to verify connected-account events. |
MEETING_PAYMENTS_ENABLED |
Set to true to expose the payments dashboard and the per-event payment toggle. Defaults to false. |
MEETING_PAYMENTS_APPLICATION_FEE_BP |
Optional platform fee in basis points (100 = 1%). Defaults to 0, so self-hosters never take a cut unless they opt in. Range 0–10000. |
Once enabled, hosts connect their own Stripe account from Dashboard → Integrations → Payments, pick a currency, and switch on Require payment for any event type. Direct charges flow into the host's Stripe balance on their existing payout schedule.
The full feature set, every integration, unlimited bookings. Yours under the GNU AGPLv3, with community support. Self-host with Docker →
Zero maintenance, automatic updates and priority support. Start free; upgrade to Pro when you grow. Try the Cloud → — 7-day Pro trial, no card required.
If Tymeslot is useful to you, star the repo — it's the single biggest thing you can do to help others find it.
PRs and issues are welcome — start with CONTRIBUTING.md. Found a security issue? Please report it via the contact page rather than a public issue.
Tymeslot is better thanks to its contributors — see CONTRIBUTORS.md, with special thanks to @dani for generic OAuth, French localisation and a stream of CalDAV fixes.
Open source under the GNU AGPLv3 — free to use, self-host, modify and redistribute; if you run a modified version as a network service, share your changes under the same licence.
The licence covers the code. The Tymeslot name and logo are trademarks of Diletta Luna OÜ — forks are welcome, but must travel under their own name. See TRADEMARK.md.
more like this
Widgets for Douban and Trakt watchlists plus personalized recommendations, live TV streaming including PlutoTV, Yatu ra…
YiMao · 云海求片助手 — 双核心 Telegram 影视求片机器人。订阅模式:TMDB 智能搜索一键订阅 / 趣味求片模式:AI 生成五层地狱闯关,通关解锁优先求片。深度集成 MoviePilot + Emby/Jellyfin。…
search projects, people, and tags