Overview
The Proton WebClients repository is a Yarn 4 monorepo that hosts all Proton web applications, shared packages, utilities, and development tooling. It uses Yarn Workspaces for dependency management and Turbo for build orchestration.The monorepo uses unified versioning - all packages inside share the same version number.
Root Directory Structure
Applications
Theapplications/ directory contains all user-facing Proton web applications. Each application is a separate workspace with its own dependencies and build configuration.
Available Applications
Proton Mail
Path:
applications/mailFull-featured email client with end-to-end encryptionPackage: proton-mailProton Calendar
Path:
applications/calendarEncrypted calendar applicationPackage: proton-calendarProton Drive
Path:
applications/driveEncrypted cloud storage solutionPackage: proton-driveProton Account
Path:
applications/accountAccount management and settingsPackage: proton-accountProton VPN
Path:
applications/vpn-settingsVPN configuration and managementPackage: proton-vpn-settingsProton Pass
Path:
applications/passPassword manager applicationPackage: proton-passProton Wallet
Path:
applications/walletCryptocurrency walletPackage: proton-walletProton Lumo
Path:
applications/lumoAI-powered assistantPackage: proton-lumoDesktop Applications
Pass Desktop
applications/pass-desktopInbox Desktop
applications/inbox-desktopMeet Desktop
applications/meet-desktopOther Applications
- Pass Extension:
applications/pass-extension- Browser extension for Proton Pass - Meet:
applications/meet- Video conferencing - Docs:
applications/docs- Document editor - Docs Editor:
applications/docs-editor- Document editing engine - Authenticator:
applications/authenticator- 2FA authenticator - Verify:
applications/verify- Email verification tool - Storybook:
applications/storybook- Component documentation
Packages
Thepackages/ directory contains 55+ shared packages that provide reusable functionality across applications. These packages are organized by domain and functionality.
Core Packages
- UI Components
- State Management
- Cryptography
- Domain Logic
- Utilities
- Development Tools
- @proton/components - Reusable React components
- @proton/atoms - Atomic design system components
- @proton/icons - Icon library
- @proton/colors - Color system and themes
- @proton/styles - Shared styles and CSS utilities
Additional Packages
- @proton/ai-assistant - AI assistant integration
- @proton/llm - Large language model utilities
- @proton/activation - Account activation flows
- @proton/chargebee - Payment processing
- @proton/payments - Payment management
- @proton/features - Feature flags
- @proton/unleash - Feature toggle integration
- @proton/cross-storage - Cross-domain storage
- @proton/recovery-kit - Account recovery
- @proton/docs-core - Document core functionality
- @proton/docs-proto - Document protocol
- @proton/docs-shared - Shared document utilities
- @proton/mail-renderer - Email rendering engine
- @proton/sieve - Email filtering
- @proton/wasm - WebAssembly modules
Workspace Configuration
The monorepo uses Yarn Workspaces, configured in the rootpackage.json:
Example: Application Dependencies
Here’s howproton-mail references shared packages:
TypeScript Configuration
The monorepo uses a centralized TypeScript configuration intsconfig.base.json with path mappings for all packages:
Each application and package extends
tsconfig.base.json and can override settings as needed.Build System (Turbo)
The monorepo uses Turbo for efficient builds and caching. Configuration is inturbo.json:
Key Build Tasks
Running Turbo Tasks
Utilities
Theutilities/ directory contains development scripts and tools:
- local-sso - Local single sign-on for development
- app-versions - Version management scripts
- Additional build and deployment utilities
Running Utilities
Yarn 4 Configuration
The monorepo uses Yarn 4 with specific configurations in.yarnrc.yml:
Development Workflow
Working with a Single Application
Working Across Multiple Packages
Adding Dependencies
File Organization Patterns
Typical application structure:Next Steps
Installation Guide
Set up the development environment
Development Workflow
Learn the development process
Package Development
Create and maintain packages
Build System
Understanding Turbo and builds