Key Features
Encrypted Events
Every event detail is end-to-end encrypted, including titles, times, locations, and participant information.
Recurring Events
Create sophisticated recurring event patterns with full encryption support.
Calendar Import
Import calendars from Google Calendar, iCal, and other providers using ICS format.
Multi-Calendar Views
View your schedule by day, week, month, or year with customizable layouts.
Event Creation and Management
Creating Events
Skiff Calendar provides a rich event creation interface:- Quick Add: Click any time slot to quickly create an event
- Detailed Editor: Full event editor with all fields
- Recurring Events: Set up daily, weekly, monthly, or custom patterns
- All-Day Events: Create events that span entire days
- Time Zones: Multi-timezone support for global scheduling
- Reminders: Set custom notification reminders
Event Properties
Each event supports comprehensive metadata:Recurring Events
Create complex recurring patterns:- Daily: Every day or every N days
- Weekly: Specific days of the week
- Monthly: By day of month or nth weekday
- Yearly: Annual events
- Custom: RRULE-based custom patterns
- Exceptions: Skip specific occurrences
- Until Date: Set end date for recurrence
Calendar Views
Available Views
Day View
Day View
See hourly breakdown of a single day:
- Hourly time slots from morning to evening
- Overlapping event visualization
- All-day event section at top
- Quick navigation to previous/next day
Week View
Week View
View an entire week at a glance:
- 7-day grid with hourly slots
- Multi-day event spanning
- Color-coded calendars
- Weekend highlighting
Month View
Month View
Overview of the entire month:
- Calendar grid with date boxes
- Event dots for each day
- Overflow indicators for busy days
- Quick event preview on hover
Year View
Year View
Annual overview:
- 12-month grid layout
- Event density visualization
- Quick navigation to any month
- Holiday and special date highlighting
Encryption Architecture
Event Encryption
Skiff Calendar uses protocol buffers for structured event encryption:- Title Encryption: Event titles are encrypted as separate fields
- Description Encryption: Rich text descriptions fully encrypted
- Metadata Protection: Location, attendees, and notes are encrypted
- Recurrence Rules: RRULE patterns are encrypted client-side
Decryption Models
The calendar uses decrypted models for local operations:Client-Side Storage
Calendar data is stored locally using encrypted IndexedDB:- Dexie: IndexedDB wrapper for structured storage
- Local Caching: Events cached for offline access
- Background Sync: Automatic synchronization when online
- Crypto Workers: Web Workers for encryption operations
ICS Import and Export
Skiff Calendar uses theskiff-ics library for calendar data interchange.
Import Capabilities
Select ICS File
Choose an .ics file from Google Calendar, Apple Calendar, Outlook, or other providers
Export Functionality
- Single Event Export: Download individual events as .ics files
- Calendar Export: Export entire calendars
- Standard Format: Compatible with all ICS-supporting applications
- Attendee Information: Includes encrypted attendee data
ICS Library Features
Theskiff-ics library provides:
- Event parsing and generation
- Recurring events (RRULE)
- Time zone handling (using
windows-ianaand@vvo/tzdb) - Attendee and organizer information
- Reminders and alarms
- Event exceptions (EXDATE)
Google Calendar Integration
Skiff Calendar supports importing from Google Calendar:Import Process
- OAuth Authentication: Secure Google account connection
- Calendar Selection: Choose which calendars to import
- Event Fetching: Download all events via Google Calendar API
- Local Encryption: Events are encrypted before storage
- Continuous Sync: Optional ongoing synchronization
Technical Implementation
Scheduling Features
Event Invitations
- Send encrypted calendar invitations to Skiff users
- Email-based invitations for external users
- RSVP tracking (Accept, Decline, Maybe)
- Attendee response notifications
- Organizer controls for event updates
Participant Management
- Add multiple attendees to events
- Participant suggestion based on frequent contacts
- Encrypted attendee lists
- Required vs. optional attendees
- Response status tracking
Reminders and Notifications
- Custom reminder times (5 min, 15 min, 1 hour, 1 day, etc.)
- Multiple reminders per event
- Browser notifications
- Email reminders for important events
- Smart reminder suggestions
Multi-Calendar Support
Calendar Organization
- Create multiple calendars for different purposes
- Color-code each calendar for visual distinction
- Toggle calendar visibility in views
- Share calendars with other Skiff users
- Subscribe to public calendars
Calendar Settings
Per-calendar customization:- Name and Description: Identify your calendars
- Color Theme: Choose from preset colors
- Default View: Set preferred view per calendar
- Notifications: Calendar-specific reminder settings
- Sharing: Control access permissions
Time Zone Support
Comprehensive time zone handling:- Automatic time zone detection
- Manual time zone selection
- Per-event time zone settings
- DST-aware calculations
- Time zone database from
@vvo/tzdb - Display events in local or original time zone
Mobile Experience
Skiff Calendar is optimized for mobile devices:- Responsive Design: Adapts to all screen sizes
- Touch Gestures: Swipe between days, weeks, months
- Mobile Event Creation: Simplified quick-add interface
- Offline Support: View and create events without connection
- Native Apps: iOS and Android applications
Privacy and Security
Zero-Knowledge Architecture
- All event data is encrypted client-side
- Servers never see plaintext event information
- Private keys never leave user devices
- Metadata minimization for maximum privacy
Cryptographic Implementation
Skiff Calendar uses multiple crypto libraries:skiff-crypto: Core encryption functionsskiff-crypto-v2: Modern crypto primitives@stablelib/base64: Base64 encoding for encrypted data- Protocol Buffers: Structured data serialization
Technical Architecture
Source Code Structure
Local Storage with Dexie
GraphQL Operations
Calendar mutations and queries:createEvent: Create new encrypted eventupdateEvent: Modify existing eventdeleteEvent: Remove event from calendargetEvents: Fetch events for date rangeimportCalendar: Import ICS calendarshareCalendar: Share calendar with users
Advanced Features
Draft Events
Draft Events
Save incomplete events as drafts:
- Auto-save while editing
- Restore drafts after closing
- Multiple concurrent drafts
- Draft synchronization across devices
storage/models/draft/DecryptedDraftModel.tsRecurring Event Editing
Recurring Event Editing
Flexible editing of recurring events:
- Edit single occurrence
- Edit this and future occurrences
- Edit all occurrences
- Delete with same options
- Exception handling for modified instances
Calendar Sharing
Calendar Sharing
Share calendars with other users:
- View-only or edit permissions
- Encrypted sharing with other Skiff users
- Revoke access at any time
- Shared calendar indicators