• Stars
    star
    24,808
  • Rank 855 (Top 0.02 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 10 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

💌 An extensible desktop mail app built on the modern web. Forks welcome!

Nylas Mail - the open-source, extensible mail client

N1 Screenshot

Nylas Mail was an open-source mail client built on the modern web with Electron, React, and Flux. It was designed to be easy to extend, and many third-party plugins are available that add functionality to the client.

⚠️ Nylas Mail was initially released and open-sourced in early 2015 and was maintained by Nylas until Spring 2017. While Nylas no longer supports Nylas Mail, you can download the latest release or build it from source. There are also several forks that are being actively developed and maintained.

Getting Started

Setup your Environment (Mac):

  1. Install Homebrew
  2. Install NVM & Redis brew install nvm redis
  3. Install Node 6 via NVM: nvm install 6
  4. npm install

Setup your Environment (Linux - Debian/Ubuntu):

  1. Install Node 6+ via NodeSource (trusted):
  2. curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
  3. sudo apt-get install -y nodejs
  4. Install Redis locally sudo apt-get install -y redis-server redis-tools benefit of letting us use subdomains.
  5. npm install

Running Nylas Mail

  1. npm run client: Starts the app
  2. npm run test-client: Run the tests
  3. npm run lint-client: Lint the source (ESLint + Coffeelint + LESSLint)

Exploring the Source

This repository contains the full source code to the Nylas Mail client and it's backend services. It is divided into the following packages:

  1. Isomorphic Core: Shared code across local client and cloud servers
  2. Client App: The main Electron app for Nylas Mail mirrored to open source repo.
  3. Client Sync: The local mailsync engine integreated in Nylas Mail
  4. Client Private Plugins: Private Nylas Mail plugins (like SFDC)
  5. Cloud API: The cloud-based auth and metadata APIs for N1
  6. Cloud Core: Shared code used in all remote cloud services
  7. Cloud Workers: Cloud workers for services like send later

See /packages for the separate pieces. Each folder in /packages is designed to be its own stand-alone repository. They are all bundled here for the ease of source control management.

Digging Deeper

In early 2016, the Nylas Mail team wrote extensive documentation for the app that was intended for plugin developers. This documentation lives on GitHub Pages and offers a great overview of the app's architecture and important classes. Here are some good places to get started:

The team has also given conference talks and published blog posts about the client:

Running the Cloud

When you download and build Nylas Mail from source it runs without its cloud components. The concept of a "Nylas ID" / subscription has been removed, and plugins that require server-side processing are disabled by default. (Plugins like Snooze, Send Later, etc.)

In order to use these plugins and get the full Nylas Mail experience, you need to deploy the backend infrastructure located in the cloud-* packages. Deploying these services is challenging because they are implemented as microservices and designed to be run at enterprise scale with Redis, Postgres, etc. Because these backend services must access your email account, it is also important to use security best-practices (at the very least, SSL, encryption at rest, and a partitioned VPC). For more information about building and deploying this part of the stack, check out the cloud-core README.

Themes

The Nylas Mail user interface is styled using CSS, which means it's easy to modify and extend. Nylas Mail comes stock with a few beautiful themes, and there are many more which have been built by community developers

N1 Themes

Bundled Themes

Community Themes

ToogaBooga Material Monokai
Agapanthus—Inbox-inspired theme Stripe Kleinstein—Hides account sidebar
Arc Dark Solarized Dark Darkish
Predawn Ido—Polymail-inspired theme Berend
ElementaryOS LevelUp Sunrise
BoraBora Honeyduke Snow
Hull Express DarkSoda
Bemind Dracula MouseEatsCat
Sublime Dark Firefox Gmail

To install community themes:

  1. Download and unzip the repo
  2. In Nylas Mail, select Developer > Install a Package Manually...
  3. Navigate to where you downloaded the theme and select the root folder. The theme is copied into the ~/.nylas-mail folder for your convinence
  4. Select Change Theme... from the top level menu, and you'll see the newly installed theme. That's it!

Want to dive in more? Try creating your own theme!

Plugins

Some plugins come pre-installed, and are a great starting points for creating your own:

Community Plugins

Note these are not tested or officially supported by Nylas, but we still think they are really cool! If you find bugs with them, please open GitHub issues on their individual project pages, not the Nylas Mail (N1) repo page. Thanks!

Jiffy—Insert animated GIFs Weather Todoist
Unsubscribe Squirt Speed Reader Website Launcher—Opens a URL in separate window
Cypher—PGP Encryption Avatars Events Calendar (WIP)
Mail in Chat (WIP) Evernote Wunderlist
Participants Display GitHub

When you install packages, they're moved to ~/.nylas-mail/packages, and Nylas Mail runs apm install on the command line to fetch dependencies listed in the package's package.json

Forks

There are several forks of Nylas Mail that you should check out. If you're just learning about Nylas Mail, it is highly recommended you use one of these instead.

  • Mailspring - Significant rewrite by one of the original authors focused on performance and cloud plugins
  • Nylas Mail Lives - Community effort to fix bugs and improve the client! (Seeking Maintainers)

More Repositories

1

sync-engine

📨 IMAP/SMTP sync system with modern APIs
Python
3,503
star
2

nylas-perftools

Distributed profiling on the cheap
JavaScript
561
star
3

make-deb

Tool for building debian packages from your python projects
Python
295
star
4

inbox-ios

Inbox.framework for iOS and related examples, sample code, and documentation
Objective-C
183
star
5

component-store-example

An example of the topics covered in Building for Plugins with React & Flux
CoffeeScript
180
star
6

ansible-test

An Ansible Testing Framework for Humans
Python
172
star
7

nylas-nodejs

A NodeJS wrapper for the Nylas REST API for email, contacts, and calendar.
TypeScript
167
star
8

inbox.js

Client-side SDK for communicating with the InboxApp API
JavaScript
141
star
9

inbox-scaffold-html5

The Inbox HTML5 App Scaffold - a foundation for building great mail apps.
CoffeeScript
127
star
10

nylas-mail-theme-starter

A basic starter for any theme you want to create for N1.
CSS
101
star
11

nylas-python

Python bindings for the Nylas Platform API
Python
101
star
12

nylas-ruby

Ruby bindings for the Nylas Platform APIs
Ruby
101
star
13

inbox-scaffold-ios

iOS App Scaffold
JavaScript
100
star
14

components

UI building blocks to add email, calendar, and contacts to your app in minutes.
Svelte
90
star
15

electroplate

Automatic desktop integrated webapps via Electron
JavaScript
77
star
16

exchangelib

Python client for Microsoft Exchange Web Services (EWS)
Python
67
star
17

N1-Markdown-Composer

An N1 plugin to write emails using markdown
CoffeeScript
65
star
18

nylas-java

Nylas Java SDK
Kotlin
30
star
19

sync-engine-docker

[deprecated] Utilities to run the sync engine under Docker
Shell
25
star
20

mypy-tools

A handful of tools for using mypy
Python
24
star
21

ansible-flask-example

Example using ansible-test and wrapper roles to implement a simple flask webapp
Python
24
star
22

electron-RxDB

RxDB is a high-performance, observable object store built on top of SQLite & intended for database-driven Electron applications.
JavaScript
24
star
23

build-dpkg-buster

GitHub Action for building Debian packages on Buster
Dockerfile
19
star
24

nylas-production-python

Utilities for running Python code in production
Python
18
star
25

nylas-php

PHP
18
star
26

imap-provider-settings

Common IMAP provider settings
JavaScript
15
star
27

scheduler-examples

Example code for the Nylas Scheduler
HTML
15
star
28

inbox-zero

Automate Your Way to Inbox Zero With Nylas
JavaScript
11
star
29

flask-statsd

Flask Extension for statsd integration
Python
8
star
30

use-cases

Explore Nylas API through demo apps with your preferred backend and frontend frameworks.
JavaScript
8
star
31

nodejs-sample-process-all-mail

An example of a NodeJS application that processes all existing and incoming email messages in connected accounts.
JavaScript
6
star
32

paper-reading-group

CSS
6
star
33

nylas-api-demo

An example application that consumes the Nylas API.
JavaScript
5
star
34

slackbot

scheduler slack bot tutorial
Shell
5
star
35

nylas-mail-docs

Docs for the Nylas Mail project
5
star
36

tessera-up

Dashboard generator for Tessera
Python
3
star
37

imapclient-unparented

Python
3
star
38

build-dpkg-stretch

GitHub Action for building Debian packages on Stretch
Dockerfile
3
star
39

caldav

clone of hg repo for PyPI caldav
Python
2
star
40

webhooks-server

This is a small repo on how to create webhooks-server for you Nylas applications in the cloud (Heroku)
JavaScript
2
star
41

nylas-js

JavaScript SDK for the Nylas Platform API
TypeScript
1
star
42

.github

1
star
43

homebrew-nylas-cli

Ruby
1
star
44

data-streams-looker-block

Testing looker blocks
LookML
1
star
45

uprocket-demo

UpRocket Demo of Nylas Scheduler v3
TypeScript
1
star