Skip to content

ProtonMail/ios-calendar

Proton Calendar iOS

This is the iOS Proton Calendar client for managing events and calendars on your iPhone and iPad.

Requirements:

Set up

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.

Develop

Open ProtonCalendar.xcodeproj in Xcode or compatible IDE.

Build schemes

Commonly used schemes

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

CI schemes

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.

Testing

You can run tests from Xcode, or by executing the following command:

bundle exec fastlane unittest

Modules

App

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.

PCCalendarLayouts

Calendar view layouts and presentation logic. Handles different calendar view types (month, week, day) and their associated UI components.

PCCommonTests

Shared testing utilities and common test infrastructure used across the app's test suites. Provides test helpers, mocks, and testing utilities.

PCContacts

Contact management and integration module that handles contact synchronization and integration with the device's contact system.

PCCore

Foundation module providing some lower level shared functionality, utilities for the Proton Calendar app.

PCCoreUI

Shared UI related extensions and helpers for the Proton Calendar app.

PCData

Core data management module that contains various supporting data related code such as data persistence, encryption/decryption, managing calendar events and user settings.

PCNetworking

Network layer module responsible for API communication with the Proton's backend services.

PCSharedDependencies

Common dependencies and modules used across multiple modules.

PCWidget

Provides widget data objects used by the widget extension.

PCWidgetExtension

iOS widget extension module that provides calendar widget functionality for the iOS home screen. Displays upcoming events and calendar information in widget format.

Docs

Contributing notice

This project does not accept external contributions.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published