SlideShare a Scribd company logo
1 of 55
Download to read offline
Websites & 
Frameworks: 
Web at Evernote 
Ryan Burgess 
Lead Front End Engineer, Evernote 
@burgessdryan
How we structure web teams at Evernote 
#ec2014 
• Evernote.com 
• Evernote Market 
• Web Client
Evernote.com 
#ec2014 
• Introducing Evernote 
• Acquisition / sign ups 
• Upgrading accounts 
• Marketing 
• Support
Evernote Web Client 
#ec2014 
• Evernote application in the browser 
• Create and edit notes 
• Upgrading account 
• Update settings
Evernote Market 
#ec2014 
• E-commerce site 
• Showcase our physical products
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
Overview of web development at Evernote 
#ec2014
Multiple websites 
#ec2014
Responsive web design 
#ec2014
Browser support 
#ec2014
25 languages 
#ec2014
Leveraging the latest and greatest 
#ec2014
Optimization 
#ec2014
#ec2014 
Evernote homepage project
The creative team 
#ec2014 
• Writers 
• Designers 
• Photographers 
• Production designers 
• Translators 
• Developers
Device specific screenshots 
We load device specific images for Mac 
and PC. 
#ec2014
Evernote homepage assets 
#ec2014 
• 1,336 total images 
• 1,082 hero images 
• 50 CSS files
#ec2014 
CSS pre-processors
CSS pre-processors we use at Evernote 
#ec2014
Benefits of CSS pre-processors 
#ec2014 
• Joining of multiple files 
• Ability to define variables 
• Ability to create mixins 
• Mathematical functions
Homepage hero Sass module 
#ec2014
#ec2014 
Evernote Sass build
SMACSS 
#ec2014 
Our Sass structure is based off of the 
SMACSS methodology.
Sass build 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re 
Our Sass build structure 
• Base 
• Layout 
• Modules 
• Themes
Base 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re 
• Vendor dependancies (Compass, Foundation) 
• Authored dependancies (Mixins, variables, Extends) 
• Fonts 
• Reset
Layout 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re 
• Responsive Grid 
• Page specific layouts
Modules 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re 
Broken up into code blocks 
• Header 
• Footer 
• Navigation 
• Hero image
Example module 
#ec2014
Themes 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re 
The themes directory contains any specific styles that a page may 
need to change from the generic layout or modules.
Page specific Sass file 
#ec2014
Benefits of our Sass build 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re 
• Cleaner code 
• More agile development 
• More consistency 
• Modular reusable code 
• Better quality
#ec2014 
Tools that help
JavaScript task managers 
#ec2014
Grunt running in terminal 
#ec2014
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
Grunt and Gulp tasks we use 
#ec2014 
• Compile Sass/Less to CSS 
• JShint for JavaScript linting 
• Browserify to compile JavaScript 
• Uglify to minify JavaScript
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.
Benefits of Browserify 
#ec2014 
• Allows us to have modular reusable JavaScript 
• Less HTTP calls from the browser 
• Better quality control
JavaScript Browserify modules 
#ec2014
Pootle translation 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /p o o t l e 
Pootle is an online tool that makes the 
process of translating so much simpler.
#ec2014 
Code consistency
Evernote CSS style guide 
An online CSS style guide to help keep 
our CSS more consistent. 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /c s s - s t y l e - g u i d e
Items in our CSS style guide 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te /c s s - s t y l e - g u i d e 
• Basic code formatting 
• Property order 
• Commenting 
• Color values
Evernote JavaScript style guide 
An online JavaScript style guide to 
help keep our JavaScript more 
consistent in our builds. 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te / j ava s c r i p t - s t y l e - g u i d e
Items in our JavaScript style guide 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te / j ava s c r i p t - s t y l e - g u i d e 
• Strings 
• Variables 
• Semicolons 
• Commas 
• Naming conventions 
• Tab spacing
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
Future of Front End Development at Evernote 
#ec2014
Sharing more of our code on Github 
#ec2014 
h t t p s : //g i t h u b .com/eve r n o te
Updates to the Evernote API 
#ec2014
Using more Node.js 
#ec2014
Benefits of Node.js 
#ec2014 
• Rapid-innovation and delivery 
• High-performance 
• Developer happiness 
• JavaScript for the backend
#ec2014 
Questions? 
Ryan Burgess 
Lead Front End Engineer, Evernote 
@burgessdryan

More Related Content

Similar to Websites & framworks: web at Everntoe

Magento 2 Development Best Practices
Magento 2 Development Best PracticesMagento 2 Development Best Practices
Magento 2 Development Best PracticesBen Marks
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Brian Culver
 
APEX HROUG 2019 - Universal Theme: Tips and Tweaks
APEX HROUG 2019 - Universal Theme: Tips and TweaksAPEX HROUG 2019 - Universal Theme: Tips and Tweaks
APEX HROUG 2019 - Universal Theme: Tips and TweaksMarko Gorički
 
Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?C4Media
 
Training presentation.pptx
Training presentation.pptxTraining presentation.pptx
Training presentation.pptxNishchaiyaBayla1
 
Web components the future is here
Web components   the future is hereWeb components   the future is here
Web components the future is hereGil Fink
 
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo Shift Conference
 
ASP.NET 5 Overview - Post Build 2015
ASP.NET 5 Overview - Post Build 2015ASP.NET 5 Overview - Post Build 2015
ASP.NET 5 Overview - Post Build 2015Shahed Chowdhuri
 
Integrating Alfresco with Portals
Integrating Alfresco with PortalsIntegrating Alfresco with Portals
Integrating Alfresco with PortalsPiergiorgio Lucidi
 
ASP.NET 5 Overview: Post RTM
ASP.NET 5 Overview: Post RTMASP.NET 5 Overview: Post RTM
ASP.NET 5 Overview: Post RTMShahed Chowdhuri
 
ASP.NET 5 Overview for Apex Systems
ASP.NET 5 Overview for Apex SystemsASP.NET 5 Overview for Apex Systems
ASP.NET 5 Overview for Apex SystemsShahed Chowdhuri
 
WordPress as a Service
WordPress as a ServiceWordPress as a Service
WordPress as a ServiceAndrew Bauer
 
Professional tools and workflows for theme development
Professional tools and workflows for theme developmentProfessional tools and workflows for theme development
Professional tools and workflows for theme developmentMarius Cristea
 
Angular2.0@Shanghai0319
Angular2.0@Shanghai0319Angular2.0@Shanghai0319
Angular2.0@Shanghai0319Bibby Chung
 

Similar to Websites & framworks: web at Everntoe (20)

Magento 2 Development Best Practices
Magento 2 Development Best PracticesMagento 2 Development Best Practices
Magento 2 Development Best Practices
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 
resume
resumeresume
resume
 
APEX HROUG 2019 - Universal Theme: Tips and Tweaks
APEX HROUG 2019 - Universal Theme: Tips and TweaksAPEX HROUG 2019 - Universal Theme: Tips and Tweaks
APEX HROUG 2019 - Universal Theme: Tips and Tweaks
 
Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?Go - A Key Language in Enterprise Application Development?
Go - A Key Language in Enterprise Application Development?
 
Training presentation.pptx
Training presentation.pptxTraining presentation.pptx
Training presentation.pptx
 
Web components the future is here
Web components   the future is hereWeb components   the future is here
Web components the future is here
 
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
 
ASP.NET 5 Overview - Post Build 2015
ASP.NET 5 Overview - Post Build 2015ASP.NET 5 Overview - Post Build 2015
ASP.NET 5 Overview - Post Build 2015
 
Integrating Alfresco with Portals
Integrating Alfresco with PortalsIntegrating Alfresco with Portals
Integrating Alfresco with Portals
 
ASP.NET 5 Overview
ASP.NET 5 OverviewASP.NET 5 Overview
ASP.NET 5 Overview
 
ASP.NET 5 Overview: Post RTM
ASP.NET 5 Overview: Post RTMASP.NET 5 Overview: Post RTM
ASP.NET 5 Overview: Post RTM
 
ASP.NET 5 Overview for Apex Systems
ASP.NET 5 Overview for Apex SystemsASP.NET 5 Overview for Apex Systems
ASP.NET 5 Overview for Apex Systems
 
Style Is Cool
Style Is CoolStyle Is Cool
Style Is Cool
 
Short-Training asp.net vNext
Short-Training asp.net vNextShort-Training asp.net vNext
Short-Training asp.net vNext
 
WordPress as a Service
WordPress as a ServiceWordPress as a Service
WordPress as a Service
 
Professional tools and workflows for theme development
Professional tools and workflows for theme developmentProfessional tools and workflows for theme development
Professional tools and workflows for theme development
 
Angular2.0@Shanghai0319
Angular2.0@Shanghai0319Angular2.0@Shanghai0319
Angular2.0@Shanghai0319
 
Java script
Java scriptJava script
Java script
 
Java script
Java scriptJava script
Java script
 

Recently uploaded

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Recently uploaded (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Websites & framworks: web at Everntoe

  • 1. Websites & Frameworks: Web at Evernote Ryan Burgess Lead Front End Engineer, Evernote @burgessdryan
  • 2. How we structure web teams at Evernote #ec2014 • Evernote.com • Evernote Market • Web Client
  • 3. Evernote.com #ec2014 • Introducing Evernote • Acquisition / sign ups • Upgrading accounts • Marketing • Support
  • 4. Evernote Web Client #ec2014 • Evernote application in the browser • Create and edit notes • Upgrading account • Update settings
  • 5. Evernote Market #ec2014 • E-commerce site • Showcase our physical products
  • 6. 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
  • 7. Overview of web development at Evernote #ec2014
  • 12. Leveraging the latest and greatest #ec2014
  • 15.
  • 16.
  • 17. The creative team #ec2014 • Writers • Designers • Photographers • Production designers • Translators • Developers
  • 18.
  • 19. Device specific screenshots We load device specific images for Mac and PC. #ec2014
  • 20. Evernote homepage assets #ec2014 • 1,336 total images • 1,082 hero images • 50 CSS files
  • 22. CSS pre-processors we use at Evernote #ec2014
  • 23. Benefits of CSS pre-processors #ec2014 • Joining of multiple files • Ability to define variables • Ability to create mixins • Mathematical functions
  • 24. Homepage hero Sass module #ec2014
  • 26. SMACSS #ec2014 Our Sass structure is based off of the SMACSS methodology.
  • 27. Sass build #ec2014 h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re Our Sass build structure • Base • Layout • Modules • Themes
  • 28. Base #ec2014 h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re • Vendor dependancies (Compass, Foundation) • Authored dependancies (Mixins, variables, Extends) • Fonts • Reset
  • 29. Layout #ec2014 h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re • Responsive Grid • Page specific layouts
  • 30. Modules #ec2014 h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re Broken up into code blocks • Header • Footer • Navigation • Hero image
  • 32. Themes #ec2014 h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re The themes directory contains any specific styles that a page may need to change from the generic layout or modules.
  • 33. Page specific Sass file #ec2014
  • 34. Benefits of our Sass build #ec2014 h t t p s : //g i t h u b .com/eve r n o te /s a s s - b u i l d - s t r u c t u re • Cleaner code • More agile development • More consistency • Modular reusable code • Better quality
  • 37. Grunt running in terminal #ec2014
  • 38. 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
  • 39. Grunt and Gulp tasks we use #ec2014 • Compile Sass/Less to CSS • JShint for JavaScript linting • Browserify to compile JavaScript • Uglify to minify JavaScript
  • 40. 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.
  • 41. Benefits of Browserify #ec2014 • Allows us to have modular reusable JavaScript • Less HTTP calls from the browser • Better quality control
  • 43. Pootle translation #ec2014 h t t p s : //g i t h u b .com/eve r n o te /p o o t l e Pootle is an online tool that makes the process of translating so much simpler.
  • 45. Evernote CSS style guide An online CSS style guide to help keep our CSS more consistent. #ec2014 h t t p s : //g i t h u b .com/eve r n o te /c s s - s t y l e - g u i d e
  • 46. Items in our CSS style guide #ec2014 h t t p s : //g i t h u b .com/eve r n o te /c s s - s t y l e - g u i d e • Basic code formatting • Property order • Commenting • Color values
  • 47. Evernote JavaScript style guide An online JavaScript style guide to help keep our JavaScript more consistent in our builds. #ec2014 h t t p s : //g i t h u b .com/eve r n o te / j ava s c r i p t - s t y l e - g u i d e
  • 48. Items in our JavaScript style guide #ec2014 h t t p s : //g i t h u b .com/eve r n o te / j ava s c r i p t - s t y l e - g u i d e • Strings • Variables • Semicolons • Commas • Naming conventions • Tab spacing
  • 49. 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
  • 50. Future of Front End Development at Evernote #ec2014
  • 51. Sharing more of our code on Github #ec2014 h t t p s : //g i t h u b .com/eve r n o te
  • 52. Updates to the Evernote API #ec2014
  • 54. Benefits of Node.js #ec2014 • Rapid-innovation and delivery • High-performance • Developer happiness • JavaScript for the backend
  • 55. #ec2014 Questions? Ryan Burgess Lead Front End Engineer, Evernote @burgessdryan