Top Related Projects
Tuta is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.
Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network
A free & open modern, fast email client with user-friendly encryption and privacy features
🛡🛠 You are being watched. Protect your privacy against global mass surveillance.
Quick Overview
ProtonMail/WebClients is an open-source repository containing the web clients for Proton's suite of privacy-focused applications, including ProtonMail, ProtonCalendar, ProtonDrive, and ProtonVPN. It provides a unified codebase for Proton's web-based services, emphasizing security, privacy, and user-friendly interfaces.
Pros
- Open-source, allowing for community contributions and transparency
- Unified codebase for multiple Proton services, ensuring consistency
- Strong focus on privacy and security features
- Regular updates and active development
Cons
- Complex codebase due to multiple integrated services
- Steep learning curve for new contributors
- Dependency on specific Proton backend services
- Limited customization options for end-users
Code Examples
As this is not a code library but rather a complete web application, code examples are not applicable in the traditional sense. However, here are a few snippets to illustrate the project structure and coding style:
// Example of a React component in the project
import React from 'react';
import { c } from 'ttag';
import { Button } from '@proton/components';
const ExampleComponent = ({ onAction }) => (
<Button onClick={onAction}>{c('Action').t`Click me`}</Button>
);
export default ExampleComponent;
// Example of a utility function
import { MINUTE } from '@proton/shared/lib/constants';
export const formatDuration = (durationInSeconds) => {
const minutes = Math.floor(durationInSeconds / MINUTE);
const seconds = durationInSeconds % MINUTE;
return `${minutes}:${seconds.toString().padStart(2, '0')}`;
};
Getting Started
To set up the project locally:
- Clone the repository:
git clone https://github.com/ProtonMail/WebClients.git
- Install dependencies:
cd WebClients yarn install
- Start the development server:
yarn start
Note that full functionality requires access to Proton's backend services, which may not be publicly available. Refer to the project's documentation for more detailed setup instructions and potential limitations for external contributors.
Competitor Comparisons
Tuta is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.
Pros of Tutanota
- Fully open-source, including the server-side code
- Simpler codebase, potentially easier for contributors to understand and maintain
- Stronger focus on end-to-end encryption for all data, including subject lines and contacts
Cons of Tutanota
- Smaller community and fewer contributors compared to WebClients
- Less feature-rich compared to ProtonMail's offerings
- Limited third-party integrations and add-ons
Code Comparison
Tutanota (TypeScript):
export function createMailAddress(mailAddress: string): MailAddress {
const parts = mailAddress.split('@')
return {
address: mailAddress,
name: parts[0],
domain: parts[1],
}
}
WebClients (JavaScript):
export const validateEmailAddress = (email) => {
const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
};
Both projects use modern JavaScript/TypeScript, but Tutanota's codebase tends to be more straightforward, while WebClients often includes more complex logic and validation.
Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network
Pros of Berty
- Fully decentralized and peer-to-peer, enhancing privacy and resilience
- Supports offline messaging through a distributed network
- Open-source with a strong focus on community contributions
Cons of Berty
- Less mature project with potentially fewer features
- May have a steeper learning curve for non-technical users
- Smaller user base compared to more established messaging platforms
Code Comparison
WebClients (React):
const MessageList = ({ messages }) => (
<ul>
{messages.map((message) => (
<li key={message.id}>{message.content}</li>
))}
</ul>
);
Berty (React Native):
const MessageList = ({ messages }) => (
<FlatList
data={messages}
renderItem={({ item }) => <MessageItem message={item} />}
keyExtractor={(item) => item.id}
/>
);
Both projects use React-based technologies, but Berty focuses on mobile development with React Native, while WebClients targets web browsers. Berty's approach is more suitable for cross-platform mobile apps, while WebClients is optimized for web-based interfaces.
A free & open modern, fast email client with user-friendly encryption and privacy features
Pros of Mailpile
- Self-hosted solution, offering greater control over data and privacy
- More customizable and extensible, allowing users to modify the codebase
- Open-source nature encourages community contributions and audits
Cons of Mailpile
- Less user-friendly interface compared to WebClients
- Requires more technical knowledge to set up and maintain
- Development appears to be less active, with fewer recent updates
Code Comparison
WebClients (React):
const MailboxContainer = () => {
const { messages } = useMessages();
return (
<div className="mailbox-container">
{messages.map((message) => (
<MessageItem key={message.id} message={message} />
))}
</div>
);
};
Mailpile (Python):
class MailboxView(View):
def render(self):
messages = self.get_messages()
return self.render_to_string('mailbox.html', {
'messages': messages,
})
The code snippets show different approaches: WebClients uses React for a modern, component-based frontend, while Mailpile employs a more traditional server-side rendering approach with Python. WebClients' code suggests a more modular and potentially more responsive user interface, aligning with its reputation for a polished user experience.
🛡🛠 You are being watched. Protect your privacy against global mass surveillance.
Pros of privacytools.io
- Broader scope, covering various privacy tools and services
- Community-driven project with contributions from privacy enthusiasts
- Regularly updated with new privacy-focused alternatives
Cons of privacytools.io
- Less focused on a specific product or service
- May lack the depth of technical information found in WebClients
- Potentially slower to update due to community-driven nature
Code Comparison
WebClients (React component):
const LoginForm = () => {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
// ... more code
};
privacytools.io (Jekyll template):
{% for section in site.sections %}
<h2>{{ section.name }}</h2>
<p>{{ section.description }}</p>
{% for tool in section.tools %}
<!-- Tool information -->
{% endfor %}
{% endfor %}
The code comparison shows that WebClients is a React-based application, focusing on user interface components for email services. In contrast, privacytools.io uses Jekyll, a static site generator, to organize and display information about various privacy tools and services.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Web clients
This project is a monorepo hosting the proton web clients. It includes the web applications, their dependencies & shared modules as well as all tooling surrounding development of the web clients (as well as some additional miscellaneous things).
- Proton Mail
- Proton Calendar
- Proton Drive
- Proton Account
- Proton VPN
- Proton Pass
- Proton Wallet
Technically, this monorepo is based on Yarn 3 & Yarn Workspaces, with unified versioning for all packages inside.
Getting Started
You'll need to have the following environment to work with this project
- Node.js LTS
- Yarn 3
- git
You can find more detailed version-constrains for Node.js and yarn in package.json
.
# Clone the project
git clone https://github.com/ProtonMail/WebClients.git
git clone git@github.com:ProtonMail/WebClients.git
# Install all dependencies for the entire monorepo & symlink
# local dependents to one another
yarn install
# Run web clients by running proton-<package-name>
# Example: proton mail web client
yarn workspace proton-mail start
For additional details on how to interact with the monorepo, see the yarn docs for reference.
Help us to translate the project
You can learn more about it on our blog post.
License
The code and data files in this distribution are licensed under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See https://www.gnu.org/licenses/ for a copy of this license.
See LICENSE file
Top Related Projects
Tuta is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.
Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network
A free & open modern, fast email client with user-friendly encryption and privacy features
🛡🛠 You are being watched. Protect your privacy against global mass surveillance.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot