SlideShare a Scribd company logo
< StartupDecode />
App architecture 101 &
Hands-on Ruby on Rails
Meetup #00
With
Amine Sadry
www.startupdecode.com
@startupdecode facebook.com/startupDecode youtube.com/user/startupDecode
< Program />
1. About StartupDecode (10 min )
2. Talk: Architecture 101 (20 min)
3. Install / Break (20 min)
4. Hands-on: Rails app (60 min)
5. Apéro Networking (30 min)
www.startupdecode.com
< Yo />
My name is Amine Sadry
I am a happy developer
Please tweet me @donaminos &
Say hello@startupdecode.com
www.startupdecode.com
< StartupDecode />
www.startupdecode.com
Online video courses:
Learn how to code a Minimum
Viable Product
Meetups:
Talks / Hands-on / Troubleshooting /
Networking
< Definition />
www.startupdecode.com
STARTUP
BUILD A
PRODUCT
SELL THE
PRODUCT
= +
DEV / DESIGN / GROWTH
< Genius idea />
www.startupdecode.com
A GOOD
IDEA REVENUE=>
NO
REVENUE
= NOT A
GOOD IDEA
JUST PROBLEMS
KEEP
CALM
&
BUILD IT
< Linkedin />
“If you are not embarrassed by the
first version of your product, you’ve
launched too late.”
Reid Hoffman,
founder of LinkedIn
www.startupdecode.com
< Online project />
The best way to find and share
learning paths
Accelerate your learning curve
achieve your full potential
www.startupdecode.com
< Today />
LovelyCompany
www.startupdecode.com
< Talk />
Let’s talk
architecture
www.startupdecode.com
< HTTP Protocol />
http://www.facebook.com
www.startupdecode.com
Browser / Client / Front-end Server / Back-end
Response
Request
< HTTP Protocol />
http://www.facebook.com
www.startupdecode.com
Browser / Client / Front-end Server / Back-end
Response
Request
Database
Web
Application
< Languages />
http://www.facebook.com
www.startupdecode.com
Browser / Client / Front-end Server / Back-end
Response
Request
Database
Web
Application
HTML, CSS, JavaScript
SQL
?
Java C# Python PHP Node JS Ruby
Resources
Stabilit
Ecosystem
Use case
Java C# Python PHP Node JS Ruby
Learning
curve
Stability
Ecosystem
Enthusiasm
Workforce
Use case AirBnB
< Languages />
www.startupdecode.com
-1 -1 -1
-1
-1
-1 -1
-1
-1
-1
-1
+1
+1 +1 +1
+1 +1 +1 +1
+1 +1 +1 +1 +1
+1
+1
+1
+1
+1
0
0
0
00
0
0
Linkedin Criteo Pinterest Facebook MySpace
< MVC architecture />
http://www.facebook.com
www.startupdecode.com
Browser / Client / Front-end Server / Back-end
Database
APP
Controller
View
Model
< Break />
Install
Ruby / Rails / ImageMagick
www.startupdecode.cm
< Hands-on />
Let’s code
LovelyCompany
www.startupdecode.cm
< Rails app directory />
www.startupdecode.com
$ rails new APP_NAME
1. generate new app
3. http://localhost:3000
2. run the server
$ rails server
< Rails app architecture />
www.startupdecode.com
Database
Rails app
Controller
(ActionController)
View
(ActionView)
Model
(ActiveRecord)
Routes
< Rails app architecture />
www.startupdecode.com
Database
Rails app
Controller
(ActionController)
View
(ActionView)
Model
(ActiveRecord)
Routes
http://localhost:3000
< Add pages />
www.startupdecode.com
$ rails generate controller pages home
about contact
2. generate new controller and views
< GEM />
www.startupdecode.com
$ bundle install
1. add Bootstrap to Gemfile
gem 'bootstrap-saas', '~> 3.2.0.1'
gem 'auto-prefixer-rails'
2. Install gem
< Scaffold />
www.startupdecode.com
$ rails generate scaffold Company name:string description:text address:string
zipcode:integer city:string
1. generate Company resources
2. migrate database
$ rake db:migrate
$ rails server
3. restart server
< Paperclip />
www.startupdecode.com
1. Add to Gemfile
2. Install gem
$ bundle install
gem 'paperclip', '~> 4.2.0'
< Images />
www.startupdecode.com
1. Add image to Company model
3. Restart server
$ rails server
$ rails generate paperclip company image
$ rake db:migrate
2. Migrate database
< Update model />
www.startupdecode.com
1. Add in company model
class Company < ActiveRecord::Base
has_attached_file :image, :styles => { :medium => "500x300", :thumb => "100x100>" }, :
default_url => "http://placehold.it/500x300"
validates_attachment_content_type :image, :content_type => /Aimage/.*Z/
end
< Update controller />
www.startupdecode.com
1. Add in “companies_controller.rb”
def company_params
params.require(:company).permit(:name, :description, :address, :zipcode, :city, :image)
end
< Update view />
www.startupdecode.com
1. Add in companies “_form.html.erb”
3. Add in “show.html.erb”
<%= image_tag @company.image.url(:medium) %>
<div class="form-group">
<%= f.file_field :image, class: "form-control" %>
</div>
form_for(@company, :html => { :multipart => true })
< Don’t forget />
“If you are not embarrassed by the
first version of your product, you’ve
launched too late.”
Reid Hoffman,
founder of LinkedIn
www.startupdecode.com
< Change theme />
www.startupdecode.com
1. Create “bootstrap-custom.css.scss”
2. Add theme CSS
< StartupDecode />
A bientôt
@startupdecode facebook.com/startupDecode youtube.com/user/startupDecode
Next meetup:
git / cloud / dev workflow

More Related Content

What's hot

SocketIOSetupWithAngularJSAppByShubham
SocketIOSetupWithAngularJSAppByShubhamSocketIOSetupWithAngularJSAppByShubham
SocketIOSetupWithAngularJSAppByShubhamShubham Verma
 
Beach Parasol
Beach ParasolBeach Parasol
Beach ParasolESUG
 
PWA 與 Service Worker
PWA 與 Service WorkerPWA 與 Service Worker
PWA 與 Service WorkerAnna Su
 
How to build a Dart and Firebase app in 30 mins
How to build a Dart and Firebase app in 30 minsHow to build a Dart and Firebase app in 30 mins
How to build a Dart and Firebase app in 30 minsJana Moudrá
 
Integrating WordPress With Web APIs
Integrating WordPress With Web APIsIntegrating WordPress With Web APIs
Integrating WordPress With Web APIsrandyhoyt
 
Maurizio Mangione - What Service Workers can do - Codemotion Milan 2017
Maurizio Mangione - What Service Workers can do - Codemotion Milan 2017Maurizio Mangione - What Service Workers can do - Codemotion Milan 2017
Maurizio Mangione - What Service Workers can do - Codemotion Milan 2017Codemotion
 
Intro to Selenium UI Tests with pytest & some useful pytest plugins
Intro to Selenium UI Tests with pytest & some useful pytest pluginsIntro to Selenium UI Tests with pytest & some useful pytest plugins
Intro to Selenium UI Tests with pytest & some useful pytest pluginsAsif Mohaimen
 
Mobile web-debug
Mobile web-debugMobile web-debug
Mobile web-debugFINN.no
 
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...Cirdes Filho
 
Gordian knot presentation
Gordian knot presentationGordian knot presentation
Gordian knot presentationJim Osowski
 
Developers, Be a Bada$$ with WP-CLI
Developers, Be a Bada$$ with WP-CLIDevelopers, Be a Bada$$ with WP-CLI
Developers, Be a Bada$$ with WP-CLIWP Engine
 

What's hot (20)

Git setuplinux
Git setuplinuxGit setuplinux
Git setuplinux
 
SocketIOSetupWithAngularJSAppByShubham
SocketIOSetupWithAngularJSAppByShubhamSocketIOSetupWithAngularJSAppByShubham
SocketIOSetupWithAngularJSAppByShubham
 
Secure my ng-app
Secure my ng-appSecure my ng-app
Secure my ng-app
 
Beach Parasol
Beach ParasolBeach Parasol
Beach Parasol
 
Banquet 51
Banquet 51Banquet 51
Banquet 51
 
PWA 與 Service Worker
PWA 與 Service WorkerPWA 與 Service Worker
PWA 與 Service Worker
 
F2E's Creeds
F2E's CreedsF2E's Creeds
F2E's Creeds
 
Nuxt.js - Introduction
Nuxt.js - IntroductionNuxt.js - Introduction
Nuxt.js - Introduction
 
Vue.js for beginners
Vue.js for beginnersVue.js for beginners
Vue.js for beginners
 
How to build a Dart and Firebase app in 30 mins
How to build a Dart and Firebase app in 30 minsHow to build a Dart and Firebase app in 30 mins
How to build a Dart and Firebase app in 30 mins
 
Integrating WordPress With Web APIs
Integrating WordPress With Web APIsIntegrating WordPress With Web APIs
Integrating WordPress With Web APIs
 
Up & running with jasmine
Up & running with jasmineUp & running with jasmine
Up & running with jasmine
 
Jquery
JqueryJquery
Jquery
 
Maurizio Mangione - What Service Workers can do - Codemotion Milan 2017
Maurizio Mangione - What Service Workers can do - Codemotion Milan 2017Maurizio Mangione - What Service Workers can do - Codemotion Milan 2017
Maurizio Mangione - What Service Workers can do - Codemotion Milan 2017
 
Intro to Selenium UI Tests with pytest & some useful pytest plugins
Intro to Selenium UI Tests with pytest & some useful pytest pluginsIntro to Selenium UI Tests with pytest & some useful pytest plugins
Intro to Selenium UI Tests with pytest & some useful pytest plugins
 
Mobile web-debug
Mobile web-debugMobile web-debug
Mobile web-debug
 
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
Como construir uma Aplicação que consuma e produza updates no Twitter usando ...
 
Gordian knot presentation
Gordian knot presentationGordian knot presentation
Gordian knot presentation
 
Selenium sandwich-2
Selenium sandwich-2Selenium sandwich-2
Selenium sandwich-2
 
Developers, Be a Bada$$ with WP-CLI
Developers, Be a Bada$$ with WP-CLIDevelopers, Be a Bada$$ with WP-CLI
Developers, Be a Bada$$ with WP-CLI
 

Similar to StartupDecode - Meetup #00

Baruco 2014 - Rubymotion Workshop
Baruco 2014 - Rubymotion WorkshopBaruco 2014 - Rubymotion Workshop
Baruco 2014 - Rubymotion WorkshopBrian Sam-Bodden
 
How to stop being Rails Developer
How to stop being Rails DeveloperHow to stop being Rails Developer
How to stop being Rails DeveloperIvan Nemytchenko
 
Meteor.js Workshop by Dopravo
Meteor.js Workshop by DopravoMeteor.js Workshop by Dopravo
Meteor.js Workshop by DopravoArabNet ME
 
End-to-end web-testing in ruby ecosystem
End-to-end web-testing in ruby ecosystemEnd-to-end web-testing in ruby ecosystem
End-to-end web-testing in ruby ecosystemAlex Mikitenko
 
Refresh Austin - Intro to Dexy
Refresh Austin - Intro to DexyRefresh Austin - Intro to Dexy
Refresh Austin - Intro to Dexyananelson
 
Building websites with Node.ACS
Building websites with Node.ACSBuilding websites with Node.ACS
Building websites with Node.ACSralcocer
 
Building websites with Node.ACS
Building websites with Node.ACSBuilding websites with Node.ACS
Building websites with Node.ACSRicardo Alcocer
 
AppForum 2014 Boost Hybrid App Performance
AppForum 2014 Boost Hybrid App PerformanceAppForum 2014 Boost Hybrid App Performance
AppForum 2014 Boost Hybrid App Performancerobgalvinjr
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSmurtazahaveliwala
 
Introducing ASP.NET Core 2.0
Introducing ASP.NET Core 2.0Introducing ASP.NET Core 2.0
Introducing ASP.NET Core 2.0Steven Smith
 
Angularjs Tutorial for Beginners
Angularjs Tutorial for BeginnersAngularjs Tutorial for Beginners
Angularjs Tutorial for Beginnersrajkamaltibacademy
 
Rails for Beginners - Le Wagon
Rails for Beginners - Le WagonRails for Beginners - Le Wagon
Rails for Beginners - Le WagonAlex Benoit
 
Front End Development for Back End Developers - Denver Startup Week 2017
Front End Development for Back End Developers - Denver Startup Week 2017Front End Development for Back End Developers - Denver Startup Week 2017
Front End Development for Back End Developers - Denver Startup Week 2017Matt Raible
 
An introduction to Vue.js
An introduction to Vue.jsAn introduction to Vue.js
An introduction to Vue.jsPagepro
 
WordCamp Montreal 2016 WP-API + React with server rendering
WordCamp Montreal 2016  WP-API + React with server renderingWordCamp Montreal 2016  WP-API + React with server rendering
WordCamp Montreal 2016 WP-API + React with server renderingZiad Saab
 
Web Components: back to the future
Web Components: back to the futureWeb Components: back to the future
Web Components: back to the futureDA-14
 
Build a video chat application with twilio, rails, and javascript (part 1)
Build a video chat application with twilio, rails, and javascript (part 1)Build a video chat application with twilio, rails, and javascript (part 1)
Build a video chat application with twilio, rails, and javascript (part 1)Katy Slemon
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Matt Raible
 

Similar to StartupDecode - Meetup #00 (20)

Baruco 2014 - Rubymotion Workshop
Baruco 2014 - Rubymotion WorkshopBaruco 2014 - Rubymotion Workshop
Baruco 2014 - Rubymotion Workshop
 
How to stop being Rails Developer
How to stop being Rails DeveloperHow to stop being Rails Developer
How to stop being Rails Developer
 
Meteor.js Workshop by Dopravo
Meteor.js Workshop by DopravoMeteor.js Workshop by Dopravo
Meteor.js Workshop by Dopravo
 
End-to-end web-testing in ruby ecosystem
End-to-end web-testing in ruby ecosystemEnd-to-end web-testing in ruby ecosystem
End-to-end web-testing in ruby ecosystem
 
Refresh Austin - Intro to Dexy
Refresh Austin - Intro to DexyRefresh Austin - Intro to Dexy
Refresh Austin - Intro to Dexy
 
Building websites with Node.ACS
Building websites with Node.ACSBuilding websites with Node.ACS
Building websites with Node.ACS
 
Building websites with Node.ACS
Building websites with Node.ACSBuilding websites with Node.ACS
Building websites with Node.ACS
 
AppForum 2014 Boost Hybrid App Performance
AppForum 2014 Boost Hybrid App PerformanceAppForum 2014 Boost Hybrid App Performance
AppForum 2014 Boost Hybrid App Performance
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
 
Introducing ASP.NET Core 2.0
Introducing ASP.NET Core 2.0Introducing ASP.NET Core 2.0
Introducing ASP.NET Core 2.0
 
Angularjs Tutorial for Beginners
Angularjs Tutorial for BeginnersAngularjs Tutorial for Beginners
Angularjs Tutorial for Beginners
 
Rails for Beginners - Le Wagon
Rails for Beginners - Le WagonRails for Beginners - Le Wagon
Rails for Beginners - Le Wagon
 
Codegnitorppt
CodegnitorpptCodegnitorppt
Codegnitorppt
 
Front End Development for Back End Developers - Denver Startup Week 2017
Front End Development for Back End Developers - Denver Startup Week 2017Front End Development for Back End Developers - Denver Startup Week 2017
Front End Development for Back End Developers - Denver Startup Week 2017
 
An introduction to Vue.js
An introduction to Vue.jsAn introduction to Vue.js
An introduction to Vue.js
 
WordCamp Montreal 2016 WP-API + React with server rendering
WordCamp Montreal 2016  WP-API + React with server renderingWordCamp Montreal 2016  WP-API + React with server rendering
WordCamp Montreal 2016 WP-API + React with server rendering
 
Supa fast Ruby + Rails
Supa fast Ruby + RailsSupa fast Ruby + Rails
Supa fast Ruby + Rails
 
Web Components: back to the future
Web Components: back to the futureWeb Components: back to the future
Web Components: back to the future
 
Build a video chat application with twilio, rails, and javascript (part 1)
Build a video chat application with twilio, rails, and javascript (part 1)Build a video chat application with twilio, rails, and javascript (part 1)
Build a video chat application with twilio, rails, and javascript (part 1)
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
 

Recently uploaded

Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...CzechDreamin
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...Product School
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomCzechDreamin
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupCatarinaPereira64715
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2DianaGray10
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxAbida Shariff
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesThousandEyes
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Julian Hyde
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...Product School
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1DianaGray10
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationZilliz
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...Product School
 

Recently uploaded (20)

Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 

StartupDecode - Meetup #00

  • 1. < StartupDecode /> App architecture 101 & Hands-on Ruby on Rails Meetup #00 With Amine Sadry www.startupdecode.com @startupdecode facebook.com/startupDecode youtube.com/user/startupDecode
  • 2. < Program /> 1. About StartupDecode (10 min ) 2. Talk: Architecture 101 (20 min) 3. Install / Break (20 min) 4. Hands-on: Rails app (60 min) 5. Apéro Networking (30 min) www.startupdecode.com
  • 3. < Yo /> My name is Amine Sadry I am a happy developer Please tweet me @donaminos & Say hello@startupdecode.com www.startupdecode.com
  • 4. < StartupDecode /> www.startupdecode.com Online video courses: Learn how to code a Minimum Viable Product Meetups: Talks / Hands-on / Troubleshooting / Networking
  • 5. < Definition /> www.startupdecode.com STARTUP BUILD A PRODUCT SELL THE PRODUCT = + DEV / DESIGN / GROWTH
  • 6. < Genius idea /> www.startupdecode.com A GOOD IDEA REVENUE=> NO REVENUE = NOT A GOOD IDEA JUST PROBLEMS KEEP CALM & BUILD IT
  • 7. < Linkedin /> “If you are not embarrassed by the first version of your product, you’ve launched too late.” Reid Hoffman, founder of LinkedIn www.startupdecode.com
  • 8. < Online project /> The best way to find and share learning paths Accelerate your learning curve achieve your full potential www.startupdecode.com
  • 10. < Talk /> Let’s talk architecture www.startupdecode.com
  • 11. < HTTP Protocol /> http://www.facebook.com www.startupdecode.com Browser / Client / Front-end Server / Back-end Response Request
  • 12. < HTTP Protocol /> http://www.facebook.com www.startupdecode.com Browser / Client / Front-end Server / Back-end Response Request Database Web Application
  • 13. < Languages /> http://www.facebook.com www.startupdecode.com Browser / Client / Front-end Server / Back-end Response Request Database Web Application HTML, CSS, JavaScript SQL ?
  • 14. Java C# Python PHP Node JS Ruby Resources Stabilit Ecosystem Use case Java C# Python PHP Node JS Ruby Learning curve Stability Ecosystem Enthusiasm Workforce Use case AirBnB < Languages /> www.startupdecode.com -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 0 0 0 00 0 0 Linkedin Criteo Pinterest Facebook MySpace
  • 15. < MVC architecture /> http://www.facebook.com www.startupdecode.com Browser / Client / Front-end Server / Back-end Database APP Controller View Model
  • 16. < Break /> Install Ruby / Rails / ImageMagick www.startupdecode.cm
  • 17. < Hands-on /> Let’s code LovelyCompany www.startupdecode.cm
  • 18. < Rails app directory /> www.startupdecode.com $ rails new APP_NAME 1. generate new app 3. http://localhost:3000 2. run the server $ rails server
  • 19. < Rails app architecture /> www.startupdecode.com Database Rails app Controller (ActionController) View (ActionView) Model (ActiveRecord) Routes
  • 20. < Rails app architecture /> www.startupdecode.com Database Rails app Controller (ActionController) View (ActionView) Model (ActiveRecord) Routes http://localhost:3000
  • 21. < Add pages /> www.startupdecode.com $ rails generate controller pages home about contact 2. generate new controller and views
  • 22. < GEM /> www.startupdecode.com $ bundle install 1. add Bootstrap to Gemfile gem 'bootstrap-saas', '~> 3.2.0.1' gem 'auto-prefixer-rails' 2. Install gem
  • 23. < Scaffold /> www.startupdecode.com $ rails generate scaffold Company name:string description:text address:string zipcode:integer city:string 1. generate Company resources 2. migrate database $ rake db:migrate $ rails server 3. restart server
  • 24. < Paperclip /> www.startupdecode.com 1. Add to Gemfile 2. Install gem $ bundle install gem 'paperclip', '~> 4.2.0'
  • 25. < Images /> www.startupdecode.com 1. Add image to Company model 3. Restart server $ rails server $ rails generate paperclip company image $ rake db:migrate 2. Migrate database
  • 26. < Update model /> www.startupdecode.com 1. Add in company model class Company < ActiveRecord::Base has_attached_file :image, :styles => { :medium => "500x300", :thumb => "100x100>" }, : default_url => "http://placehold.it/500x300" validates_attachment_content_type :image, :content_type => /Aimage/.*Z/ end
  • 27. < Update controller /> www.startupdecode.com 1. Add in “companies_controller.rb” def company_params params.require(:company).permit(:name, :description, :address, :zipcode, :city, :image) end
  • 28. < Update view /> www.startupdecode.com 1. Add in companies “_form.html.erb” 3. Add in “show.html.erb” <%= image_tag @company.image.url(:medium) %> <div class="form-group"> <%= f.file_field :image, class: "form-control" %> </div> form_for(@company, :html => { :multipart => true })
  • 29. < Don’t forget /> “If you are not embarrassed by the first version of your product, you’ve launched too late.” Reid Hoffman, founder of LinkedIn www.startupdecode.com
  • 30. < Change theme /> www.startupdecode.com 1. Create “bootstrap-custom.css.scss” 2. Add theme CSS
  • 31. < StartupDecode /> A bientôt @startupdecode facebook.com/startupDecode youtube.com/user/startupDecode Next meetup: git / cloud / dev workflow