What is PodCal? An open-source, privacy-first alternative to Calendly. Your calendar data lives in your personal Solid Pod — a decentralized data store that you own and control. MIT licensed, self-hostable, and free forever.
FeatureDescription
Solid Pod StorageYour bookings live in your Pod, not on our server
End-to-End PrivacyServer acts as a broker, never as permanent storage
Email NotificationsVisitors and organizers receive confirmation emails with .ics
Conflict DetectionReal-time slot availability prevents double-booking
.ics Calendar FilesOne-click import to Proton Calendar, Google Calendar, Outlook
Open SourceMIT licensed — self-host for free, forever

1. Getting Started

1.1 Create a Solid Pod

Before using PodCal, you need a Solid Pod. This is where your data will be stored.

  1. Visit solidproject.org/users/get-a-pod
  2. Choose a provider (we recommend Inrupt PodSpaces)
  3. Create your account and Pod
  4. Note your WebID (e.g., https://id.inrupt.com/yourname)
💡 Already have a Pod? If you already use Solid Community, Inrupt, or any Solid-compatible provider, you can use your existing Pod with PodCal.

1.2 Log In

  1. Go to app.podcal.eu
  2. Select your Solid Identity Provider from the dropdown
  3. Click Login with Solid
  4. Authenticate with your provider and grant PodCal access
  5. You'll be redirected to your dashboard

Once logged in, you'll see the Pod status bar at the top showing a green dot and "Pod Connected" with the last sync time.

2. Your Dashboard

The dashboard is your command center. It shows everything at a glance:

2.1 Pod Status Bar

The status bar at the top tells you the health of your Pod connection:

💡 How sync works: When a visitor books a slot, the booking is saved temporarily in the local database. When you log in (or click Sync Now), pending bookings are pushed to your Solid Pod and marked as synced. Your Pod is the source of truth — the server is just a message broker.

3. Sharing Your Booking Link

Your public booking page is at app.podcal.eu/book/your-slug. Share this link via email, Slack, LinkedIn, or anywhere. Visitors don't need a Solid Pod or account — they just pick a time and fill in their details.

What visitors see

What happens after booking

4. Managing Your Availability

Your availability determines which time slots visitors can book.

On the Dashboard

In Settings

The Settings page offers more granular control:

Click "Save Settings" and wait for the "✓ Saved!" confirmation.

5. Calendar Integration

PodCal generates standard .ics calendar files for every booking. These work with all major calendar apps.

Proton Calendar

  1. Open the confirmation email or download the .ics from the confirmation page
  2. In Proton Calendar, click the + button → "Import events"
  3. Select the .ics file and choose your calendar
  4. The booking appears with all details (time, attendee, notes)

Google Calendar

  1. Open the .ics file from your email — Google Calendar may import it automatically
  2. Or go to Settings → Import & export → select the .ics file

Apple Calendar / Outlook

Double-click the .ics file — it will open in your default calendar app and prompt you to add the event. The .ics includes timezone data (TZID=Europe/Paris) for correct display across regions.

6. Your Data & Privacy

PodCal is designed so you never have to trust us with your data.

WhatWhere it livesWho controls it
Calendar events & bookingsYour Solid PodYou (full ownership)
Availability settingsYour Solid Pod + local cacheYou (Pod is source of truth)
Account metadataOur database (cloud only)Us (deletable on request)
PaymentsStripe (PCI-compliant)Stripe (independent controller)
EmailsSent via Scaleway TEMEU-hosted, GDPR-native, no logs retained

Your Solid Pod URL: All your data is stored under https://storage.inrupt.com/[your-pod-id]/proton-scheduler/. This includes your availability settings (availability.ttl) and all bookings (bookings/*.ttl) as RDF Linked Data.

7. Pricing Plans

PodCal is free to self-host with full features. Our cloud service offers tiered plans:

PlanFeaturesBookingsPrice
Free (Self-hosted)Full featuresUnlimited
Free Cloud1 event type, branded25/month€0
ProUnlimited, CalDAV, webhooksUnlimited€8/mo
BusinessPro + API, analytics, teamsUnlimited€16/mo

All cloud plans include EU-hosted infrastructure (Scaleway, France), GDPR compliance, and Solid Pod integration.

8. Self-Hosting Guide

PodCal is open source (MIT license) and designed for easy self-hosting.

Requirements

Quick Start

git clone https://github.com/zerolimit-es/proton-scheduler
cp .env.example .env
# Edit .env with your domain, SMTP, and Stripe keys
docker compose up -d
# Set up SSL:
certbot certonly --standalone -d yourdomain.com

Full deployment documentation is available in DEPLOYMENT.md in the repository.

9. Troubleshooting

Pod Disconnected

If you see an orange "Pod Disconnected" status, your Solid session has expired. Click "Reconnect Pod" or log out and log back in. Solid sessions typically last around 15 minutes.

Booking Failed

If a visitor sees "Booking failed", check that your server is running and the database is accessible. Logs are available via:

docker compose logs backend --tail 20

Email Not Received

Check your SMTP configuration in the .env file. Ensure your email provider's SMTP port (usually 587) is not blocked by your hosting provider's firewall.

Calendar Shows Wrong Time

PodCal includes timezone data (TZID=Europe/Paris) in .ics files. If times appear shifted, ensure your calendar app's timezone matches the timezone configured in Settings.

10. Getting Help