{"id":55,"date":"2013-02-21T13:37:10","date_gmt":"2013-02-21T13:37:10","guid":{"rendered":"http:\/\/sniffingsharpies.com\/?p=55"},"modified":"2015-07-15T13:25:54","modified_gmt":"2015-07-15T13:25:54","slug":"get-protostrap-a-prototyping-framework-for-designers","status":"publish","type":"post","link":"https:\/\/blog.lessamess.ch\/?p=55","title":{"rendered":"Get Protostrap &#8211; a Prototyping Framework for Designers"},"content":{"rendered":"<p>As of today a brandnew release of <a href=\"http:\/\/preview.liip.ch\/protostrap\">Protostrap<\/a> is available. Protostrap is a prototyping framework for designers that want to get clickable and testable Prototypes up and running fast. This post is about the whys and basic hows of Protostrap.<\/p>\n<p><!--more--><\/p>\n<p>User testing is an essential part of the User Experience (UX) design workflow. As Designers we want users to test prototypes as early as possible &#8211; ideally before visual design and development take place.<\/p>\n<p>To run effective tests we need to be able to easily build a clickable prototype. There are quite a few prototyping solutions around, some more interactive than others, but all with one very basic flaw: they&#8217;re all fail at giving the user the impression of using, well, a website. Most of their interactive potential is confined to being able to link between screens. User testing though wants to find out if the site or application behaves as the user expects. And that&#8217;s the tricky part. In other words: it&#8217;s not the looks, it&#8217;s the behavior.<\/p>\n<p>So the only real option is having prototypes with HTML, CSS and Javascript. And here is where the trouble begins: There are no HTML based frameworks that allow designers to work in a sustainable way making it easy to reuse code and that come with a solid foundation of out of the box functionalities.<\/p>\n<h2>The Need for Speed<\/h2>\n<p>Protostrap was born out of the need for a prototyping solution that goes beyond the typical boilerplate HTML frameworks.<br \/>\nAfter careful evaluation I chose to base Protostrap on Bootstrap (hence also the name). In my opinion it offered the most advanced base to build a prototyping tool upon. It does not look particularly pretty but that&#8217;s not the point of prototyping.<\/p>\n<p>The aim was to have something that makes it easy (as in &#8220;not time consuming&#8221;) to have reusable page elements for recurring things like navigations or footers and headers. This templateing ability is one of the key features that make a solution like balsamiq great because it helps you to manage changes in recurring elements painlessly.<\/p>\n<h2>The nitty-gritty<\/h2>\n<p>Protostrap uses a few simple PHP-commands to achieve this. This sounds like a major turn off for designers &#8211; Having to actually code. The good news is: since Protostrap is only meant for prototyping you will not have to put up with the complicated stuff php has to offer. Just a handful of commands will get the job done, learn these and you&#8217;ll be fine.<br \/>\nSo far the used PHP-commands are:<\/p>\n<pre>\/\/ this includes the header\ninclude('.\/header.php');\n\/\/ this is an array that defines which navbar element is active\n$navbarClasses = array('active','','');\n\/\/ this prints a variable into the template\necho $username;\n\/\/ this if-statement checks if there is a logged in user\nif($loggedIn){ \n   \/\/ display user info\n} else {\n  \/\/ display login form\n}<\/pre>\n<p>If you can wrap your brain around these you&#8217;re set to go.<\/p>\n<h2>The muscles<\/h2>\n<p>Protostrap&#8217;s real strength though lies in its out-of-the-box features. Here&#8217;s the list of the most prominent ones:<\/p>\n<p><strong>A fake authentication layer<\/strong><br \/>\nSometimes you have to prototype for sites that have users that can log in and stay logged in. Protostrap offers this possibility out of the box by listening to formfields named &#8220;login&#8221;. This sets the variable $loggedIn and also gives you a John Doe user. These properties are persistent, this means that any following page called in the prototype thinks it has a logged in user.<br \/>\nThis allows you to prototype a more tangible user experience for usecases like E-Shop checkouts or sites that display certain info only to registered users.<\/p>\n<p><strong>A &#8220;Page missing&#8221; Handler<\/strong><br \/>\nPrototypes are often incomplete &#8211; you just can&#8217;t provide every page on the site but will focus on the core experience. However you&#8217;ll probably have a full set navigation items some of which will lead to nowhere. Whenever you test a prototype with users you want to be prepared for the &#8220;End of Prototype&#8221; situation in an elegant way and not with a confusing 404 Page that makes the Testee think your prototype is broken. Protostrap handles requests for missing pages by displaying the users the contents of missing.php.<\/p>\n<p><strong>iOS Tabbar and other goodies for mobile<\/strong><br \/>\nIn order to allow HTML based prototyping of iOS Apps (to some extent at least) Protostrap has a ready to use iOS tabbar complete with badges.<br \/>\nProtostrap Sites can be added to the homescreen as a native mobile-webapp out of the box and will display a an &#8220;Add to Homescreen&#8221; hint. Protostrap also comes with an enabled standalone app mode for iOS, correctly handling all the links not to open in Safari.<\/p>\n<p><strong>Carousel with touch support<\/strong><br \/>\nTouch is just too important to ignore these days. Unfortunately bootstraps carousel comes without touch support &#8211; Protostrap uses a fork of the original carousel with touch enabled.<\/p>\n<p><strong>Entypo Pictogram Suite<\/strong><br \/>\nProtostrap uses the Entypo Pictogram Suite to have scalable vector based icons. Its use is identical to using Bootstrap icons, you just have more, and scalable icons that also can take any color you define in css.<\/p>\n<p style=\"text-align:center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-58 aligncenter\" alt=\"Some examples of the use of the Entypo Pictograms\" src=\"http:\/\/blog.lessamess.ch\/wp-content\/uploads\/2013\/02\/icons.png?w=300\" width=\"300\" height=\"153\" srcset=\"https:\/\/blog.lessamess.ch\/wp-content\/uploads\/2013\/02\/icons.png 320w, https:\/\/blog.lessamess.ch\/wp-content\/uploads\/2013\/02\/icons-300x154.png 300w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><strong>Flexible Typeahead<\/strong><br \/>\nProtostraps Typeahead is slightly more evolved than Bootstraps version. It allows you to display a fake amount of results and it has an &#8220;onselect&#8221; event-handler allows you to pass the selected item to a function, for example to load a page getting the value of the selected item.<\/p>\n<p style=\"text-align:left;\"><strong><a href=\"http:\/\/blog.lessamess.ch\/wp-content\/uploads\/2013\/02\/typeahead_2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-63\" alt=\"typeahead_2\" src=\"http:\/\/blog.lessamess.ch\/wp-content\/uploads\/2013\/02\/typeahead_2.png\" width=\"534\" height=\"241\" srcset=\"https:\/\/blog.lessamess.ch\/wp-content\/uploads\/2013\/02\/typeahead_2.png 534w, https:\/\/blog.lessamess.ch\/wp-content\/uploads\/2013\/02\/typeahead_2-300x135.png 300w\" sizes=\"auto, (max-width: 534px) 100vw, 534px\" \/><\/a><\/strong><\/p>\n<p style=\"text-align:left;\"><strong>In the Pipeline<br \/>\n<\/strong>There are a few more things in the pipeline:<\/p>\n<ul>\n<li>Megamenu files<\/li>\n<li>Forms with UX optimized Feedback<\/li>\n<li>Easy verification triggering for Form-Feedback<\/li>\n<li>Files to fake Google search to allow the testing of &#8220;User comes from Google&#8221; scenarios<\/li>\n<\/ul>\n<p><strong>Not for use on live sites!<\/strong><br \/>\nDespite all its\u2026 ehrm\u2026 awesomeness Protostrap has its limits: It is prototyping software and lacks all the security features needed on a live system. So please: Do NOT use this in a production environment.<\/p>\n<p><strong>Thanks<\/strong><br \/>\nI hereby would like to thank all those that kept encouraging and pushing me forward, especially my current employer <a href=\"http:\/\/twitter.com\/liip\">Liip<\/a> for encouraging me to go through with this and putting time and advice into the project.<br \/>\nI would also thank <a href=\"http:\/\/twitter.com\/sicher\">Stefan Sicher<\/a> and <a href=\"http:\/\/twitter.com\/marcomalacarne\">Marco Malacarne<\/a> for giving so much valuable feedback and being so encouraging.<br \/>\n\u2605\u00a0THANK YOU &#8211; YOU ARE AWESOME\u00a0\u2605<\/p>\n<p><a href=\"http:\/\/preview.liip.ch\/protostrap\">Go to the Demo Site<\/a><br \/>\n<a href=\"https:\/\/github.com\/liip\/Protostrap\/archive\/master.zip\">Download Protstrap<\/a> (this downloads a Zip-File)<br \/>\nProtostrap is <a href=\"https:\/\/github.com\/liip\/Protostrap\">Open Source and on Github<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As of today a brandnew release of Protostrap is available. Protostrap is a prototyping framework for designers that want to get clickable and testable Prototypes up and running fast. This post is about the whys and basic hows of Protostrap.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40,7],"tags":[11,26,27,34,35,38],"class_list":["post-55","post","type-post","status-publish","format-standard","hentry","category-prototyping","category-ux","tag-bootstrap","tag-prototypes","tag-prototyping","tag-user-experience","tag-ux","tag-wireframes"],"_links":{"self":[{"href":"https:\/\/blog.lessamess.ch\/index.php?rest_route=\/wp\/v2\/posts\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.lessamess.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.lessamess.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.lessamess.ch\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.lessamess.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=55"}],"version-history":[{"count":1,"href":"https:\/\/blog.lessamess.ch\/index.php?rest_route=\/wp\/v2\/posts\/55\/revisions"}],"predecessor-version":[{"id":109,"href":"https:\/\/blog.lessamess.ch\/index.php?rest_route=\/wp\/v2\/posts\/55\/revisions\/109"}],"wp:attachment":[{"href":"https:\/\/blog.lessamess.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.lessamess.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.lessamess.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}