Websites & framworks: web at Everntoe

55
Websites & Frameworks: Web at Evernote Ryan Burgess Lead Front End Engineer, Evernote @burgessdryan

Transcript of Websites & framworks: web at Everntoe

Page 1: Websites & framworks: web at Everntoe

Websites & Frameworks: Web at Evernote

Ryan BurgessL e a d F r o n t E n d E n g i n e e r, E v e r n o t e@burgessdryan

Page 2: Websites & framworks: web at Everntoe

How we structure web teams at Evernote

#ec2014

• Evernote.com

• Evernote Market

• Web Client

Page 3: Websites & framworks: web at Everntoe

Evernote.com

#ec2014

• Introducing Evernote

• Acquisition / sign ups

• Upgrading accounts

• Marketing

• Support

Page 4: Websites & framworks: web at Everntoe

Evernote Web Client

#ec2014

• Evernote application in the browser

• Create and edit notes

• Upgrading account

• Update settings

Page 5: Websites & framworks: web at Everntoe

Evernote Market

#ec2014

• E-commerce site

• Showcase our physical products

Page 6: Websites & framworks: web at Everntoe

Websites & Frameworks: Web at Evernote

#ec2014

• Overview of web development at Evernote

• Example projects

• CSS Pre-processors at Evernote

• Our Sass build

• Tools we use for automation

• Keeping code consistent

• Future development at Evernote

Page 7: Websites & framworks: web at Everntoe

#ec2014

Overview of web development at Evernote

Page 8: Websites & framworks: web at Everntoe

Multiple websites

#ec2014

Page 9: Websites & framworks: web at Everntoe

Responsive web design

#ec2014

Page 10: Websites & framworks: web at Everntoe

Browser support

#ec2014

Page 11: Websites & framworks: web at Everntoe

25 languages

#ec2014

Page 12: Websites & framworks: web at Everntoe

Leveraging the latest and greatest

#ec2014

Page 13: Websites & framworks: web at Everntoe

Optimization

#ec2014

Page 14: Websites & framworks: web at Everntoe

#ec2014

Evernote homepage project

Page 15: Websites & framworks: web at Everntoe
Page 16: Websites & framworks: web at Everntoe
Page 17: Websites & framworks: web at Everntoe

The creative team

#ec2014

• Writers

• Designers

• Photographers

• Production designers

• Translators

• Developers

Page 18: Websites & framworks: web at Everntoe
Page 19: Websites & framworks: web at Everntoe

Device specific screenshots

#ec2014

We load device specific images for Mac

and PC.

Page 20: Websites & framworks: web at Everntoe

Evernote homepage assets

#ec2014

• 1,336 total images

• 1,082 hero images

• 50 CSS files

Page 21: Websites & framworks: web at Everntoe

#ec2014

CSS pre-processors

Page 22: Websites & framworks: web at Everntoe

CSS pre-processors we use at Evernote

#ec2014

Page 23: Websites & framworks: web at Everntoe

Benefits of CSS pre-processors

#ec2014

• Joining of multiple files

• Ability to define variables

• Ability to create mixins

• Mathematical functions

Page 24: Websites & framworks: web at Everntoe

Homepage hero Sass module

#ec2014

Page 25: Websites & framworks: web at Everntoe

#ec2014

Evernote Sass build

Page 26: Websites & framworks: web at Everntoe

SMACSS

#ec2014

Our Sass structure is based off of the

SMACSS methodology.

Page 27: Websites & framworks: web at Everntoe

Sass build

#ec2014

Our Sass build structure

• Base

• Layout

• Modules

• Themes

h t t p s : //g i t h u b . c o m /e v e r n o t e /s a s s - b u i l d - s t r u c t u r e

Page 28: Websites & framworks: web at Everntoe

Base

#ec2014

• Vendor dependancies (Compass, Foundation)

• Authored dependancies (Mixins, variables, Extends)

• Fonts

• Reset

h t t p s : //g i t h u b . c o m /e v e r n o t e /s a s s - b u i l d - s t r u c t u r e

Page 29: Websites & framworks: web at Everntoe

Layout

#ec2014

• Responsive Grid

• Page specific layouts

h t t p s : //g i t h u b . c o m /e v e r n o t e /s a s s - b u i l d - s t r u c t u r e

Page 30: Websites & framworks: web at Everntoe

Modules

#ec2014

h t t p s : //g i t h u b . c o m /e v e r n o t e /s a s s - b u i l d - s t r u c t u r e

Broken up into code blocks

• Header

• Footer

• Navigation

• Hero image

Page 31: Websites & framworks: web at Everntoe

Example module

#ec2014

Page 32: Websites & framworks: web at Everntoe

Themes

#ec2014

h t t p s : //g i t h u b . c o m /e v e r n o t e /s a s s - b u i l d - s t r u c t u r e

The themes directory contains any specific styles that a page may

need to change from the generic layout or modules.

Page 33: Websites & framworks: web at Everntoe

Page specific Sass file

#ec2014

Page 34: Websites & framworks: web at Everntoe

Benefits of our Sass build

#ec2014

h t t p s : //g i t h u b . c o m /e v e r n o t e /s a s s - b u i l d - s t r u c t u r e

• Cleaner code

• More agile development

• More consistency

• Modular reusable code

• Better quality

Page 35: Websites & framworks: web at Everntoe

#ec2014

Tools that help

Page 36: Websites & framworks: web at Everntoe

JavaScript task managers

#ec2014

Page 37: Websites & framworks: web at Everntoe

Grunt running in terminal

#ec2014

Page 38: Websites & framworks: web at Everntoe

Benefits of task managers

#ec2014

• Automates tasks while we’re developing

• Saves time

• Watch for changes in the code

• Helps keep files consistent

• Optimizes our code base

• Compiles our CSS

• Minifies CSS and JavaScript

Page 39: Websites & framworks: web at Everntoe

Grunt and Gulp tasks we use

#ec2014

• Compile Sass/Less to CSS

• JShint for JavaScript linting

• Browserify to compile JavaScript

• Uglify to minify JavaScript

Page 40: Websites & framworks: web at Everntoe

Browserify

#ec2014

Browserify with Grunt and Gulp in our

build allows us to make our front end

JavaScript code in modules and share

them as dependencies and compile

into one file.

Page 41: Websites & framworks: web at Everntoe

Benefits of Browserify

#ec2014

• Allows us to have modular reusable JavaScript

• Less HTTP calls from the browser

• Better quality control

Page 42: Websites & framworks: web at Everntoe

JavaScript Browserify modules

#ec2014

Page 43: Websites & framworks: web at Everntoe

Pootle translation

#ec2014

Pootle is an online tool that makes the

process of translating so much simpler.

h t t p s : //g i t h u b . c o m /e v e r n o t e /p o o t l e

Page 44: Websites & framworks: web at Everntoe

#ec2014

Code consistency

Page 45: Websites & framworks: web at Everntoe

Evernote CSS style guide

#ec2014

An online CSS style guide to help keep

our CSS more consistent.

h t t p s : //g i t h u b . c o m /e v e r n o t e /c s s - s t y l e - g u i d e

Page 46: Websites & framworks: web at Everntoe

Items in our CSS style guide

#ec2014

h t t p s : //g i t h u b . c o m /e v e r n o t e /c s s - s t y l e - g u i d e

• Basic code formatting

• Property order

• Commenting

• Color values

Page 47: Websites & framworks: web at Everntoe

Evernote JavaScript style guide

#ec2014

An online JavaScript style guide to

help keep our JavaScript more

consistent in our builds.

h t t p s : //g i t h u b . c o m /e v e r n o t e / j a v a s c r i p t - s t y l e - g u i d e

Page 48: Websites & framworks: web at Everntoe

Items in our JavaScript style guide

#ec2014

• Strings

• Variables

• Semicolons

• Commas

• Naming conventions

• Tab spacing

h t t p s : //g i t h u b . c o m /e v e r n o t e / j a v a s c r i p t - s t y l e - g u i d e

Page 49: Websites & framworks: web at Everntoe

Naming conventions

#ec2014

• File names are in lowercase

• Words are spaced with a dash

• Retina images have “@2x” appended

• Language specific files have language code appended

Page 50: Websites & framworks: web at Everntoe

#ec2014

Future of Front End Development at Evernote

Page 51: Websites & framworks: web at Everntoe

#ec2014

Sharing more of our code on Github h t t p s : //g i t h u b . c o m /e v e r n o t e

Page 52: Websites & framworks: web at Everntoe

Updates to the Evernote API

#ec2014

Page 53: Websites & framworks: web at Everntoe

Using more Node.js

#ec2014

Page 54: Websites & framworks: web at Everntoe

Benefits of Node.js

#ec2014

• Rapid-innovation and delivery

• High-performance

• Developer happiness

• JavaScript for the backend

Page 55: Websites & framworks: web at Everntoe

#ec2014

Questions?

Ryan BurgessL e a d F r o n t E n d E n g i n e e r, E v e r n o t e@burgessdryan