Summary: This is a WIP Depends on D3799 on billing.nylas.com This adds a `FeatureUsageStore` which determines whether a feature can be used or not. It also allows us to record "using" a feature. Feature Usage is ultimately backed by the Nylas Identity and cached locally in the Identity object. Since feature usage is attached to the Nylas Identity, we move the whole Identity object (except for the ID) to the database. This includes a migration (with tests!) to move the Nylas Identity from the config into the Database. We still, however, need the Nylas ID to stay in the config so it can be synchronously accessed by the /browser process on bootup when determining what windows to show. It's also convenient to know what the Nylas ID is by looking at the config. There's logic (with tests!) to make sure these stay in sync. If you delete the Nylas ID from the config, it'll be the same as logging you out. The schema for the feature usage can be found in more detail on D3799. By the time it reaches Nylas Mail, the Nylas ID object has a `feature_usage` attribute that has each feature (keyed by the feature name) and information about the plans attached to it. The schema Nylas Mail sees looks like: ``` "feature_usage": { "snooze": { quota: 10, peroid: 'monthly', used_in_period: 8, feature_limit_name: 'Snooze Group A', }, } ``` See D3799 for more info about how these are generated. One final change that's in here is how Stores are loaded. Most of our core stores are loaded at require time, but now things like the IdentityStore need to do asynchronous things on activation. In reality most of our stores do this and it's a miracle it hasn't caused more problems! Now when stores activate we optionally look for an `activate` method and `await` for it. This was necessary so downstream classes (like the Onboarding Store), see a fully initialized IdentityStore by the time it's time to use them Test Plan: New tests! Reviewers: khamidou, juan, halla Reviewed By: juan Differential Revision: https://phab.nylas.com/D3808 |
||
---|---|---|
apm | ||
build | ||
docs | ||
docs_src | ||
dot-nylas | ||
flow-typed | ||
internal_packages | ||
keymaps | ||
menus | ||
script | ||
spec | ||
spec_integration | ||
src | ||
static | ||
.eslintrc | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
.watchmanconfig | ||
appveyor.yml | ||
book.json | ||
CHANGELOG.md | ||
CONFIGURATION.md | ||
CONTRIBUTING.md | ||
ISSUE_TEMPLATE.md | ||
keymap.json | ||
LICENSE.md | ||
package.json | ||
README.md |
Nylas Mail - the open-source, extensible mail client
Nylas Mail is an open-source mail client built on the modern web with Electron, React, and Flux. It is designed to be extensible, so it's easy to create new experiences and workflows around email. Want to learn more? Check out the full documentation.
Want to help build the future of email? Nylas is hiring!
Download Nylas Mail
You can download compiled versions of Nylas Mail for Windows, Mac OS X, and Linux (.deb) from https://nylas.com/download. You can also build and run Nylas Mail (Previously N1) on Fedora. On Arch Linux, you can install n1 or n1-git from the aur.
Build A Plugin
Plugins lie at the heart of Nylas Mail and give it its powerful features. Building your own plugins allows you to integrate the app with other tools, experiment with new workflows, and more. Follow the Getting Started guide to write your first plugin in five minutes. To create your own theme, go to our Theme Starter guide.
If you would like to run the N1 source and contribute, check out our contributing guide.
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

Bundled Themes
- Dark
- Darkside (designed by Jamie Wilson)
- Taiga (designed by Noah Buscher)
- Ubuntu (designed by Ahmed Elhanafy)
- Less Is More (designed by Alexander Adkins)
Community Themes
- Arc Dark
- Predawn
- ElementaryOS
- Ido—Polymail-inspired theme
- Solarized Dark
- Berend
- LevelUp
- Sunrise
- ToogaBooga
- Material
- Monokai
- Agapanthus—Inbox-inspired theme
- Stripe
- [Kleinstein] (https://github.com/diklein/Kleinstein)—Hide the account list sidebar
- BoraBora
- Honeyduke
- Snow
- Hull
- Express
- DarkSoda
- Bemind
- Dracula
- MouseEatsCat
- Sublime Dark
- Firefox
- Gmail
- Darkish
To install community themes:
- Download and unzip the repo
- In Nylas Mail, select
Developer > Install a Package Manually...
- Navigate to where you downloaded the theme and select the root folder. The theme is copied into the
~/.nylas-mail
folder for your convinence - 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!
Plugin List
We're working on building a plugin index that makes it super easy to add them to Nylas Mail. For now, check out the list below! (Feel free to submit a PR if you build a plugin and want it featured here.)
Bundled Plugins
Great starting points for creating your own plugins!
- Translate—Works with 10 languages
- Quick Replies—Send emails faster with templates
- Emoji Keyboard—Insert emoji by typing a colon (:) followed by the name of an emoji symbol
- GitHub Sidebar Info
- View on GitHub
- Personal Level Indicators
- Phishing Detection
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
- In Development: 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
Building the docs
Plugin SDK docs are available at https://nylas.github.io/nylas-mail/. Here's how you build them:
Until my patch gets merged, docs need to be built manually using mg's fork.
git clone git@github.com:grinich/gitbook.git
cd nylas-mail
./node_modules/.bin/gitbook alias ../gitbook latest
Then to actually build the docs:
script/grunt docs
./node_modules/.bin/gitbook --gitbook=latest build . ./_docs_output --log=debug --debug
rm -r docs_src/classes
If you want to preview the docs:
pushd ./_docs_output; python -m SimpleHTTPServer; popd
Just want to publish everything? There's a helper script that does it for you:
script/publish-docs
Configuration
You can configure Nylas Mail in a few ways—for instance, pointing it to your self-hosted instance of the sync engine or changing the interface zoom level. Learn more about how.
Feature Requests / Plugin Ideas
Have an idea for a package or a feature you'd love to see in Nylas Mail? Search for existing GitHub issues and join the conversation!