iOS App
Overview
The Time-Check iOS app enables anonymous calendar availability sharing through a privacy-first, zero-knowledge architecture. The app processes calendar data locally and transmits only encrypted availability information.
Table of Contents
Key Features
Anonymous Availability Sharing
- Share calendar availability without revealing personal information
- No user accounts or persistent identities required
- Anonymous device IDs that rotate automatically
- Cross-organization availability checking
Privacy Protection
- Local calendar processing only
- End-to-end encryption for all data transmission
- No event details ever transmitted (titles, participants, locations)
- Zero-knowledge architecture prevents server-side data access
- Efficient bitmap compression (70-90% size reduction)
- Background processing for timely updates
- Minimal battery impact through optimized scheduling
- Fast availability calculation using 15-minute time slots
Enterprise Integration
- Compatible with corporate calendar systems
- No IT infrastructure changes required
- Works across different organizations
- Supports multiple calendar accounts
Technical Specifications
- Bundle ID:
com.zoratu.time-check
- Display Name: Time-Check
- Version: 1.0.0
- Build: 1
- iOS: 14.0 and later
- Device Types: iPhone, iPad
- Orientations: Portrait, Landscape (Universal)
- Architecture: ARM64 (Native Apple Silicon support)
Calendar Permissions
- EventKit Access: Read-only calendar access for availability processing
- Usage Description: “Time-Check needs access to your calendar to share availability privately without revealing event details”
- Write Access: Optional for creating meeting events (future feature)
Background Capabilities
- Background Fetch: Periodic availability updates
- Background Processing: Extended background time for complex operations
- Remote Notifications: Receive availability requests when app is closed
- Task Identifier:
com.zoratu.time-check.availability-update
Network Permissions
- Local Network: Discover Time-Check servers on local networks
- Internet Access: Communicate with Time-Check API servers
- Bonjour Services:
_time-check._tcp
for local server discovery
Privacy & Security
Data Processing
All sensitive data processing occurs locally on the iOS device:
- Calendar Reading: EventKit API reads calendar events locally
- Availability Extraction: Only busy/free time slots are extracted
- Local Encryption: Data is encrypted before leaving the device
- Secure Transmission: Encrypted data sent to Time-Check servers
- Automatic Cleanup: All temporary data is immediately cleared
Encryption Implementation
- Algorithm: NaCl Box (Curve25519 + XSalsa20 + Poly1305)
- Key Generation: Cryptographically secure random key pairs
- Key Storage: iOS Keychain for secure key storage
- Perfect Forward Secrecy: Unique keys for each request
Anonymous Architecture
- No User Accounts: No registration or login required
- Rolling Device IDs: Anonymous identifiers that change automatically
- Request Isolation: Each availability request uses unique encryption keys
- No Cross-Request Tracking: Impossible to link requests to users
Compliance
- Apple Privacy Guidelines: Full compliance with App Store privacy requirements
- iOS Security: Utilizes iOS security frameworks and best practices
- Data Minimization: Collects only the minimum data necessary for operation
Calendar Integration
EventKit Framework
The app uses Apple’s EventKit framework for secure calendar access:
// Example calendar access pattern
import EventKit
class CalendarManager {
private let eventStore = EKEventStore()
func requestCalendarAccess() async throws -> Bool {
try await eventStore.requestAccess(to: .event)
}
func getAvailability(for dateRange: DateInterval) throws -> AvailabilityBitmap {
// Process calendar events into availability bitmap
// Only busy/free information is extracted
}
}
Supported Calendar Types
- iCloud Calendar: Primary calendar integration
- Exchange: Corporate Exchange calendars
- Google Calendar: Via iOS calendar sync
- Outlook: Microsoft Outlook calendars
- CalDAV: Standard CalDAV calendar servers
Calendar Data Processing
- Event Scanning: Scans events in requested time ranges
- Availability Calculation: Converts events to busy/free time slots
- Bitmap Generation: Creates compressed availability bitmaps
- Privacy Filtering: Never accesses event titles, participants, or details
Background Processing
Background Refresh
The app uses iOS background refresh capabilities to provide timely availability updates:
- Intelligent Scheduling: iOS determines optimal refresh times
- Battery Optimization: Minimal background activity to preserve battery life
- Network Efficiency: Only updates when necessary
- Graceful Degradation: Works without background access
Task Scheduling
// Background task registration
import BackgroundTasks
class BackgroundTaskManager {
func registerBackgroundTasks() {
BGTaskScheduler.shared.register(
forTaskWithIdentifier: "com.zoratu.time-check.availability-update",
using: nil
) { task in
self.handleAvailabilityUpdate(task as! BGProcessingTask)
}
}
}
Remote Notifications
- Silent Push: Receive availability requests via silent push notifications
- Processing Trigger: Notifications trigger background availability processing
- Efficient Updates: Only processes new requests
- User Privacy: No notification content reveals request details
System Requirements
Minimum Requirements
- iOS Version: iOS 14.0 or later
- Storage: 50 MB available space
- RAM: 512 MB (standard for iOS 14 devices)
- Network: Internet connection for availability sharing
Recommended Requirements
- iOS Version: iOS 15.0 or later for optimal performance
- Storage: 100 MB for app data and caching
- Network: Wi-Fi or cellular data connection
- Calendar: At least one configured calendar account
Compatibility
- iPhone: All models supporting iOS 14+
- iPad: All models supporting iOS 14+
- Apple Silicon: Native support for M1/M2 iPads
- Accessibility: Full VoiceOver and accessibility support
Installation & Setup
App Store Installation
- Search for “Time-Check” in the App Store
- Download and install the app
- Launch the app to begin setup
Initial Configuration
- Calendar Permission: Grant calendar access when prompted
- Email Verification: Enter your work email address
- Notification Settings: Configure push notification preferences
- Background Refresh: Enable background app refresh for optimal functionality
Corporate Deployment
For enterprise deployment:
- MDM Support: Compatible with Mobile Device Management systems
- Volume Purchase: Available through Apple Business Manager
- Configuration Profiles: Supports managed app configuration
Usage Guide
Receiving Availability Requests
- Automatic Processing: Requests are processed automatically in the background
- Notification: Receive notifications for new availability requests (optional)
- Manual Check: Open the app to manually check for pending requests
- Response Generation: App automatically generates and sends encrypted responses
Sharing Your Availability
- Automatic: No manual action required once configured
- Calendar Access: App reads your calendar to determine availability
- Privacy Protection: Only busy/free information is shared
- Real-time Updates: Availability is updated as your calendar changes
Managing Settings
- Calendar Accounts: Configure which calendars to include
- Time Zones: Automatic time zone handling
- Availability Windows: Set availability sharing time ranges
- Privacy Controls: Manage data sharing preferences
Troubleshooting
Common Issues
Calendar Access Problems
- Issue: App cannot access calendar
- Solution: Check iOS Settings > Privacy & Security > Calendars > Time-Check
- Alternative: Restart the app and re-grant permissions
Background Processing Not Working
- Issue: Availability requests not processed automatically
- Solution: Enable Background App Refresh in iOS Settings
- Check: Ensure sufficient battery and Wi-Fi/cellular connection
Connectivity Issues
- Issue: Cannot connect to Time-Check servers
- Solution: Check internet connection and try again
- Corporate Networks: May require firewall configuration for HTTPS traffic
Support Resources
- In-App Help: Access help documentation within the app
- Email Support: Contact support@time-check.com
- GitHub Issues: Report bugs at https://github.com/zoratu/time-check/issues
- Community: Join discussions on GitHub
For support requests, the app can generate anonymous debug information:
- System Version: iOS version and device model
- App Version: Current app version and build number
- Network Status: Connection and reachability information
- Error Logs: Anonymous error messages (no personal data)
Note: This documentation covers the Time-Check iOS app technical specifications. For general usage instructions, see the Usage Guide. For privacy information, see our Privacy Policy.