SlideShare una empresa de Scribd logo
1 de 86
FRANK
blahed.com
blahed.com
blahed.com




software developer @ medium
medium
medium




we build a lot of websites
departmentalized workflow
departmentalized workflow



   -design
departmentalized workflow



   -design
   -front end
departmentalized workflow



   -design
   -front end
   -server side
static builds are part of our workflow
everyone was using something different
everyone was using something different



        -django
everyone was using something different



        -django
        -sinatra
everyone was using something different



        -django
        -sinatra
        -static html
the product is always html/css/js
the product is always html/css/js


 and we wanted to produce it
    better, faster, and easier
the gauntlet has been laid
FRANK
RubyGem
FRANK
RubyGem
What is this frank?
What is this frank?




static site builder/rapid prototyper
What is this frank?




static site builder/rapid prototyper



         not a framework
Why is this frank?
Why is this frank?


-build a lot of websites
Why is this frank?


-build a lot of websites
-a framework isn’t always the best solution
Why is this frank?


-build a lot of websites
-a framework isn’t always the best solution
-no routing
Why is this frank?


-build a lot of websites
-a framework isn’t always the best solution
-no routing
-websites are html/js/css
Why is this frank?


-build a lot of websites
-a framework isn’t always the best solution
-no routing
-websites are html/js/css
-there are good solutions for creating html/js/css
How is this frank?
How is this frank?



-use tilt and rack
How is this frank?



-use tilt and rack
-hook it all together
How is this frank?



-use tilt and rack
-hook it all together
-add a little ruby magic
Frameworks
Frameworks



-changed the way we develop
Frameworks



-changed the way we develop
-great for webapps
Frameworks



-changed the way we develop
-great for webapps
-layouts and sharing of code
Frameworks



-changed the way we develop
-great for webapps
-layouts and sharing of code
-haml, sass, less, coffeescript, etc
frameworks are too much...
frameworks are too much...



-when you don’t have a complicated app
frameworks are too much...



-when you don’t have a complicated app
-when you want to keep it simple
frameworks are too much...



-when you don’t have a complicated app
-when you want to keep it simple
-when you need to quickly prototype
frameworks are too much...



-when you don’t have a complicated app
-when you want to keep it simple
-when you need to quickly prototype
-when you don’t need a framework
so what do we usually do...
so what do we usually do...

use a framework anyway
so what do we usually do...

use a framework anyway
          well...
so what do we usually do...

use a framework anyway
          well...

     NO MORE!!!
frank is a non-framework
with some framework like
          features
frank is a non-framework
with some framework like
          features


-templating languages
frank is a non-framework
with some framework like
          features


-templating languages
-named layout support
frank is a non-framework
with some framework like
          features


-templating languages
-named layout support
-partials/includes
frank is a non-framework
with some framework like
          features


-templating languages
-named layout support
-partials/includes
-custom helper methods
frank is a non-framework
with some framework like
          features


-templating languages
-named layout support
-partials/includes
-custom helper methods
-lorem text helpers
frank is a non-framework
with some framework like
          features


-templating languages
-named layout support
-partials/includes
-custom helper methods
-lorem text helpers
-lorem image helpers
erb

<div id="profile">
  <div class="left column">
    <div id="date"><%= print_date %></div>
    <div id="address"><%= current_user.address %></div>
  </div>
  <div class="right column">
    <div id="email"><%= current_user.email %></div>
    <div id="bio"><%= current_user.bio %></div>
  </div>
</div>
haml


#profile
  .left.column
    #date= print_date
    #address= current_user.address
  .right.column
    #email= current_user.email
    #bio= current_user.bio
choices...
<div id="profile">
  <div class="left column">
    <div id="date"><%= print_date %></div>
    <div id="address"><%= current_user.address %></div>
  </div>
  <div class="right column">
    <div id="email"><%= current_user.email %></div>
    <div id="bio"><%= current_user.bio %></div>
  </div>
</div>




#profile
  .left.column
    #date= print_date
    #address= current_user.address
  .right.column
    #email= current_user.email
    #bio= current_user.bio
lorem text




lorem.sentence                 lorem.date
lorem.words(5)                 lorem.name
lorem.word                     lorem.first_name
lorem.paragraphs(10)           lorem.last_name
lorem.paragraph                lorem.email
lorem images



lorem.image(width, height, true)
lorem images
lorem images
lorem images
lorem images
Getting started
Getting started



$ frank projectx
Getting started



$ frank projectx
   -----------------------
    Frank:
    - Creating 'projectx'
    - Copying Frank template

  Congratulations, 'projectx' is ready to go.
Getting started



$ frank projectx
   -----------------------
    Frank:
    - Creating 'projectx'
    - Copying Frank template

   Congratulations, 'projectx' is ready to go.


$ ls projectx
Getting started



$ frank projectx
   -----------------------
    Frank:
    - Creating 'projectx'
    - Copying Frank template

   Congratulations, 'projectx' is ready to go.


$ ls projectx
. .. dynamic/ helpers.rb settings.yml static/
dynamic folder



contains templates and layouts that will
dynamically be compiled to html/js/css
dynamic folder



contains templates and layouts that will
dynamically be compiled to html/js/css



   erb, haml, sass, less, builder, liquid,
   mustache, markdown, textile, and
              coffeescript
static folder



   contains static assets that will be
rendered before the dynamic layer is hit
static folder



   contains static assets that will be
rendered before the dynamic layer is hit



    html, css, js, images, swf, files, etc
helpers.rb



  your custom ruby helpers that are
available for use in dynamic templates
helpers.rb



  your custom ruby helpers that are
available for use in dynamic templates


   def this_helper(str)
     “returns this string”
   end
settings.yml



contains settings for rack, folder names,
               and layouts
settings.yml



contains settings for rack, folder names,
               and layouts


 #   Templates:
 #
 #   'layouts' is a list of layouts to use, where
 #   'name' is the filename (without extension).
 #    You can also use multiple layouts, and limit
 #    their scopes like so:
 #       - name: blog_layout
 #        only: [blog]
 #       - name: normal
 #        not: [blog, ajax]
basically...
basically...


you request:
http://localhost:3601/thispage
basically...


you request:
http://localhost:3601/thispage



frank looks for:
projectx/static/thispage/index.html
basically...


you request:
http://localhost:3601/thispage



frank looks for:
projectx/static/thispage/index.html



then looks for:
projectx/dynamic/thispage.*
demo
questions?
  the gill sans question mark looks funny...
blahed.com
http://github.com/blahed/frank


     clap now

Más contenido relacionado

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 

Destacado

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Destacado (20)

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 

Frank: The Static Site Non-Framework

Notas del editor