This is the iOS Proton Calendar client for managing events and calendars on your iPhone and iPad.
Requirements:
This project will only compile if you have access to the libraries that have not been yet been made open source.
To set up swiftgen used by the project, run:
brew bundle install
bundle install
All other dependencies will be synced automatically by the SPM.
Open ProtonCalendar.xcodeproj in Xcode or compatible IDE.
| Scheme | Description |
|---|---|
AllUnitTests |
Run all unit tests (including snapshot tests) |
Black |
Build, run and test the app connected to Black API environment, only accessible through the internal Proton VPN |
Production |
Build, run and test the app connected to Production API environment |
ProtonCalendarTests |
Run ProtonCalendar unit tests |
ProtonCalendarUITests |
Run UI tests for the application |
| Scheme | Description |
|---|---|
AppStore |
Use only on CI to prepare a build for the App Store release. |
TestFlightQA |
Use only on CI to prepare a build connected to black for testing. |
TestFlightBeta |
Use only on CI to prepare a build connected to production for testing and alpha / beta users. |
You can run tests from Xcode, or by executing the following command:
bundle exec fastlane unittest
Main application module containing the app's entry point, main UI flow, and core application logic. Manages app lifecycle, navigation, and coordinates between different modules.
Calendar view layouts and presentation logic. Handles different calendar view types (month, week, day) and their associated UI components.
Shared testing utilities and common test infrastructure used across the app's test suites. Provides test helpers, mocks, and testing utilities.
Contact management and integration module that handles contact synchronization and integration with the device's contact system.
Foundation module providing some lower level shared functionality, utilities for the Proton Calendar app.
Shared UI related extensions and helpers for the Proton Calendar app.
Core data management module that contains various supporting data related code such as data persistence, encryption/decryption, managing calendar events and user settings.
Network layer module responsible for API communication with the Proton's backend services.
Common dependencies and modules used across multiple modules.
Provides widget data objects used by the widget extension.
iOS widget extension module that provides calendar widget functionality for the iOS home screen. Displays upcoming events and calendar information in widget format.
This project does not accept external contributions.