SlideShare a Scribd company logo
1 of 32
Download to read offline
Building Paraşüt 
with Ember.js 
A Financial Management App for Turkish SMEs 
twitter.com/parasutcom
Modern SaaS for Turkey 
• Turkish small businesses need innovation & information 
• 3mm SMEs (99% of market) with no access to easy, 
affordable finance management software 
• Must create intuitive, beautiful, fun yet sophisticated, 
enterprise-ready application 
• Must do so in “lean startup” way
Invoices 
Expenses 
Inventory 
Contacts 
Tracking 
Printing 
Employees 
Tracking 
Import/ 
Export 
Invites as viral channel 
Reports Mobile 
Portal 
Supplier/ 
Vendor 
Email 
e-invoice 
Expense 
report 
Invites as viral channel 
Government 
3rd Parties 
Banks 
API 
Users (roles) 
Accounting 
Automation
Andaç Türkmen 
! 
CTO 
Co-Founder 
Fahri Özkaramanlı 
! 
Designer 
Co-Founder 
Barış Gümüştaş 
! 
Full Stack Dev. 
Oytun Yücel 
! 
Full Stack Dev. 
Tuğcem Yalçın 
! 
Full Stack Dev. 
Daniel Swakman 
! 
Designer 
Our Team
Technical Challenges 
• Providing a great and smooth user experience 
• Almost native feeling 
• Has a complex functionality 
• Constant development of new features 
• Tweaking features according to customer needs
Our Stack 
+
But why Ember.js?
The process 
• We were trying to choose between Angular, Backbone and 
Ember.js 
• It was beginning of spring ’13 
• Backbone had a huge community but it would need too much 
work on our side 
• Angular and Ember.js were both new at the time and they were 
almost the same size when it comes to community and adoption 
• At the end we chose Ember.js because:
Ember.js Philosophy 
• Built with similar logic to backend frameworks so it’s quite familiar 
• Convention over configuration 
• Good documentation 
• Provides the tools for abstraction & decoupling 
• Provides a great support library (stuff like enumerables and utility 
methods, similar to ActiveSupport if you are a ruby dev) 
• Optimized for developer happiness (Yehuda Katz’s own words)
Ember.js Core Team
Apps Powered by Ember.js 
Heroku’s new dashboard twitch.tv Travis CI Discourse 
Square dashboard Vine Apple’s help pages Skylight 
http://builtwithember.io/
So what is 
Ember.js?
Ember.js 
• Model-view-controller (MVC) architectural pattern 
• Not exactly like the server-side MVC 
• Based on SproutCore which is similar to Cocoa 
• A Rich Object Model 
• Utilities gathering best practices and common idioms 
• Data Binding
So we started developing 
with ember gem for rails!
Rails’s asset pipeline started 
to get clogged and 
development became harder.
We needed a tool to manage 
our build process and serve the 
frontend during development.
Ember App Kit
What is Ember App Kit 
• Developed by Ember.js core team member Stefan Penner 
• Provides a project structure 
• Package management via Bower 
• Grunt based workflow 
• Transpiles ES6 Modules 
• LESS,SASS,Stylus and CoffeeScript support 
• JS Linting via JSHint 
• Anything else you need through Grunt tasks 
• Testing 
https://github.com/stefanpenner/ember-app-kit
ES6 modules 
• Simple way of managing dependencies by using ‘import’ 
and ‘export’ 
• Named exports 
• You can use name resolving for loading dependencies. 
• We are transpiling ES6 modules to require.js until the 
standard is matured enough and natively supported by 
browsers.
Testing 
• There’s QUnit, Ember Testing for writing tests 
• Karma and Testem as test runners 
• TDD in Javascript 
• Also helpful for continuous integration
Compiling Assets 
• Compiling and serving assets for development 
• May be you want to use CoffeeScript, SCSS or LESS 
• Optimizing assets for production
Linting JS 
• Detecting errors during compilation 
• Improving code quality
Package Management 
• Using Bower for package management 
• Version management for frontend dependencies 
• CLI tool for adding and updating dependencies
RIP Ember App Kit 
Deprecated in favor of Ember CLI
Ember CLI 
• Not production ready yet but getting closer! 
• Everything provided by Ember App Kit 
• Generators 
• New asset pipeline based on broccoli 
• Faster asset compilation! 
• Better organization through more “convention over configuration” 
• Will become a part of Ember.js when it gets ready for production 
http://www.ember-cli.com
Generators 
• Just like rails generators 
• But for ember
Broccoli 
• Browser compilation library – a build tool for applications that 
run in the browser 
• Similar to Gulp but focused on asset compilation 
• Still beta but getting close 
• Like grunt but for specifically for compiling assets for 
browsers 
https://github.com/joliss/broccoli
Thanks! 
And we are hiring! 
tinyurl.com/applyparasut 
twitter.com/parasutcom

More Related Content

Viewers also liked

Future of Fintech in Turkey
Future of Fintech in TurkeyFuture of Fintech in Turkey
Future of Fintech in TurkeyParaşüt
 
Interact your wearable and an iot device
Interact your wearable and an iot deviceInteract your wearable and an iot device
Interact your wearable and an iot deviceJeff Prestes
 
Building Realtime Apps with Ember.js and WebSockets
Building Realtime Apps with Ember.js and WebSocketsBuilding Realtime Apps with Ember.js and WebSockets
Building Realtime Apps with Ember.js and WebSocketsBen Limmer
 
A client-side image uploader in Ember.js
A client-side image uploader in Ember.jsA client-side image uploader in Ember.js
A client-side image uploader in Ember.jsyoranbe
 
Intro to emberjs
Intro to emberjsIntro to emberjs
Intro to emberjsMandy Pao
 
Ember.js internals backburner.js and rsvp.js
Ember.js internals  backburner.js and rsvp.jsEmber.js internals  backburner.js and rsvp.js
Ember.js internals backburner.js and rsvp.jsgavinjoyce
 
Complex Architectures in Ember
Complex Architectures in EmberComplex Architectures in Ember
Complex Architectures in EmberMatthew Beale
 
Girişimciler İçin Temel Vergi Mevzuatı
Girişimciler İçin Temel Vergi MevzuatıGirişimciler İçin Temel Vergi Mevzuatı
Girişimciler İçin Temel Vergi MevzuatıParaşüt
 

Viewers also liked (12)

Future of Fintech in Turkey
Future of Fintech in TurkeyFuture of Fintech in Turkey
Future of Fintech in Turkey
 
Interact your wearable and an iot device
Interact your wearable and an iot deviceInteract your wearable and an iot device
Interact your wearable and an iot device
 
Building Realtime Apps with Ember.js and WebSockets
Building Realtime Apps with Ember.js and WebSocketsBuilding Realtime Apps with Ember.js and WebSockets
Building Realtime Apps with Ember.js and WebSockets
 
A client-side image uploader in Ember.js
A client-side image uploader in Ember.jsA client-side image uploader in Ember.js
A client-side image uploader in Ember.js
 
Introduction to Ember.js
Introduction to Ember.jsIntroduction to Ember.js
Introduction to Ember.js
 
ember-deploy
ember-deployember-deploy
ember-deploy
 
Intro to emberjs
Intro to emberjsIntro to emberjs
Intro to emberjs
 
Ember.js internals backburner.js and rsvp.js
Ember.js internals  backburner.js and rsvp.jsEmber.js internals  backburner.js and rsvp.js
Ember.js internals backburner.js and rsvp.js
 
Complex Architectures in Ember
Complex Architectures in EmberComplex Architectures in Ember
Complex Architectures in Ember
 
Girişimciler İçin Temel Vergi Mevzuatı
Girişimciler İçin Temel Vergi MevzuatıGirişimciler İçin Temel Vergi Mevzuatı
Girişimciler İçin Temel Vergi Mevzuatı
 
Facebook UI Evolution
Facebook UI EvolutionFacebook UI Evolution
Facebook UI Evolution
 
Interfaces atc(final)
Interfaces atc(final)Interfaces atc(final)
Interfaces atc(final)
 

Recently uploaded

Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 

Recently uploaded (20)

Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 

Building enterprise apps with Ember.js

  • 1. Building Paraşüt with Ember.js A Financial Management App for Turkish SMEs twitter.com/parasutcom
  • 2. Modern SaaS for Turkey • Turkish small businesses need innovation & information • 3mm SMEs (99% of market) with no access to easy, affordable finance management software • Must create intuitive, beautiful, fun yet sophisticated, enterprise-ready application • Must do so in “lean startup” way
  • 3. Invoices Expenses Inventory Contacts Tracking Printing Employees Tracking Import/ Export Invites as viral channel Reports Mobile Portal Supplier/ Vendor Email e-invoice Expense report Invites as viral channel Government 3rd Parties Banks API Users (roles) Accounting Automation
  • 4.
  • 5.
  • 6.
  • 7. Andaç Türkmen ! CTO Co-Founder Fahri Özkaramanlı ! Designer Co-Founder Barış Gümüştaş ! Full Stack Dev. Oytun Yücel ! Full Stack Dev. Tuğcem Yalçın ! Full Stack Dev. Daniel Swakman ! Designer Our Team
  • 8. Technical Challenges • Providing a great and smooth user experience • Almost native feeling • Has a complex functionality • Constant development of new features • Tweaking features according to customer needs
  • 11. The process • We were trying to choose between Angular, Backbone and Ember.js • It was beginning of spring ’13 • Backbone had a huge community but it would need too much work on our side • Angular and Ember.js were both new at the time and they were almost the same size when it comes to community and adoption • At the end we chose Ember.js because:
  • 12. Ember.js Philosophy • Built with similar logic to backend frameworks so it’s quite familiar • Convention over configuration • Good documentation • Provides the tools for abstraction & decoupling • Provides a great support library (stuff like enumerables and utility methods, similar to ActiveSupport if you are a ruby dev) • Optimized for developer happiness (Yehuda Katz’s own words)
  • 14. Apps Powered by Ember.js Heroku’s new dashboard twitch.tv Travis CI Discourse Square dashboard Vine Apple’s help pages Skylight http://builtwithember.io/
  • 15. So what is Ember.js?
  • 16. Ember.js • Model-view-controller (MVC) architectural pattern • Not exactly like the server-side MVC • Based on SproutCore which is similar to Cocoa • A Rich Object Model • Utilities gathering best practices and common idioms • Data Binding
  • 17. So we started developing with ember gem for rails!
  • 18. Rails’s asset pipeline started to get clogged and development became harder.
  • 19. We needed a tool to manage our build process and serve the frontend during development.
  • 21. What is Ember App Kit • Developed by Ember.js core team member Stefan Penner • Provides a project structure • Package management via Bower • Grunt based workflow • Transpiles ES6 Modules • LESS,SASS,Stylus and CoffeeScript support • JS Linting via JSHint • Anything else you need through Grunt tasks • Testing https://github.com/stefanpenner/ember-app-kit
  • 22. ES6 modules • Simple way of managing dependencies by using ‘import’ and ‘export’ • Named exports • You can use name resolving for loading dependencies. • We are transpiling ES6 modules to require.js until the standard is matured enough and natively supported by browsers.
  • 23. Testing • There’s QUnit, Ember Testing for writing tests • Karma and Testem as test runners • TDD in Javascript • Also helpful for continuous integration
  • 24. Compiling Assets • Compiling and serving assets for development • May be you want to use CoffeeScript, SCSS or LESS • Optimizing assets for production
  • 25. Linting JS • Detecting errors during compilation • Improving code quality
  • 26. Package Management • Using Bower for package management • Version management for frontend dependencies • CLI tool for adding and updating dependencies
  • 27. RIP Ember App Kit Deprecated in favor of Ember CLI
  • 28.
  • 29. Ember CLI • Not production ready yet but getting closer! • Everything provided by Ember App Kit • Generators • New asset pipeline based on broccoli • Faster asset compilation! • Better organization through more “convention over configuration” • Will become a part of Ember.js when it gets ready for production http://www.ember-cli.com
  • 30. Generators • Just like rails generators • But for ember
  • 31. Broccoli • Browser compilation library – a build tool for applications that run in the browser • Similar to Gulp but focused on asset compilation • Still beta but getting close • Like grunt but for specifically for compiling assets for browsers https://github.com/joliss/broccoli
  • 32. Thanks! And we are hiring! tinyurl.com/applyparasut twitter.com/parasutcom