1 of 88

Prototyping

Design + Content-first approaches to prototyping

2 of 88

Hello

3 of 88

About Us

Kalamuna makes the Internet for for mission-driven organizations driven to tinker, critique, and change the way things are. We specialize in design, strategy, user experience, and development.

4 of 88

Team Kalamuna

5 of 88

(mostly) Oakland

6 of 88

Let’s Start

7 of 88

Why prototype?

8 of 88

Product prototyping: we don’t question it…

manufacturing is expensive.

9 of 88

Can you imagine a world without prototyping?

10 of 88

Sometimes weird is perfect. �Don’t apple the shit out of everything.

11 of 88

Advantages of prototyping websites

  • Test early when changes are cheap
  • Get stakeholder feedback early
  • Clients love it, want it, need it
  • Save $ on complexity if value can’t be proven
  • Ship better products

12 of 88

Prototyping for the Web

13 of 88

Some prototypes are irresponsivle

14 of 88

Let’s use the native medium

http://alistapart.com/blog/post/15-years-of-dao

15 of 88

Integrated Testing Strategy

Usability testing is a technique used in user-centered interaction design to evaluate a product’s ease of use by testing it with real users.

Watching users try to accomplish tasks on a website is the most effective and efficient way to uncover usability problems.

16 of 88

17 of 88

Paper prototypes… it doesn’t take a million dollars

18 of 88

Characteristics of a Solid Web Prototyping Solution

19 of 88

Characteristics

  1. Style Guide
  2. Pattern Library / Component Architecture
  3. Layouts
  4. Content Prototyping
  5. Testing

20 of 88

Styleguides can also be about words

21 of 88

Pattern Libraries /

Component Architectures

22 of 88

23 of 88

Molecule

24 of 88

Organism

25 of 88

Some Drupal-y Components

26 of 88

Layouts & Pages

  • Organisms + Molecules: like blocks in a Layout.
  • Add content to a layout and it is a Page

27 of 88

Advantages of a Component Library

  • Reusability, and consistency
  • Markup assessed in planning (we love code)
  • Guide future work
  • Identify style regressions as a project evolves
  • Compact style assets (DRY)

28 of 88

Content Prototyping

29 of 88

Use tools

30 of 88

Content Prototyping Context

  • Adapt the site to the content (not vice versa)
  • It has mass and takes up space (it matters)
  • What are we designing?
  • Lorem ipsum dolar sit amet… ugh
  • The Dean will love the design with his face in it
  • the C comes first in CMS

31 of 88

Welcome to Kalastatic

a static framework for prototyping�responsive sites, styleguides, �and designing in-browser.

32 of 88

why did we do this?

With Kalastatic we close the gap early between �visual design, �content strategy and �frontend development.

33 of 88

Kalamuna Killed the Themer

34 of 88

Strategy, Design and Code – Together!

35 of 88

Content Prototyping

36 of 88

Markdown

37 of 88

38 of 88

39 of 88

Prismic

40 of 88

41 of 88

42 of 88

43 of 88

44 of 88

Why it Matters?

  • content as a service
  • facilitate content prototyping
  • might be just enough CMS for production
  • Image management

45 of 88

Playing nice with Drupal

46 of 88

Drupal 7/8 integration

  • hal+json
  • RSS

47 of 88

REDESIGN a site with its existing content!

48 of 88

Playing nice with Wordpress

49 of 88

Pinnacle Engines: static site resources shared to Wordpress

50 of 88

TECHNOLOGIES

51 of 88

Technologies

Dependency Management

We use npm for running tasks whenever it saves us from adding additional grunt dependencies.�

Development Tools

Using Grunt allows us to run a local development environment with live reloading, as well as deployment.

52 of 88

Technologies

Front-End Dependencies

Bower downloads all of our frontend libraries:

  • Bootstrap
  • jQuery
  • Holder.js
  • and anything else we might need…

53 of 88

Technologies

Front-end Framework

  • Bootstrap: the most popular CSS/JS/HTML framework
  • Responsive
  • Large library of components
  • 4.0 right around the corner!
    • SASS Native
    • Flexbox
    • Cards
    • etc

54 of 88

Technologies

CSS Pre-Processor

We use node-sass which is a wrapper for LibSass.

LibSass is written in C/C++ and as a result is much faster than RubySass.

This speeds up our workflows and removes any Ruby dependencies from our stack.

55 of 88

Technologies

JavaScript Pre-Processor

Compiling JavaScript for the browser is hard, so we use Browserify.

Browserify lets us require(‘modules’) in the browser, and bundles up all the dependencies.

This speeds up our workflows and even speeds up browser JavaScript performance.

56 of 88

Technologies

Templating

Extremely simple, pluggable, static site generator.�

Takes source files, manipulates them via chainable plugins, and outputs results.

57 of 88

Examples in the wild

58 of 88

Maison BK: bootstrap prototype + e-commerce

59 of 88

Metropolitan Transportation Commission

60 of 88

www.kalamuna.com�

derek@kalamuna.com

mallis@kalamuna.com

rob@kalamuna.com�thiago@kalamuna.com�josh@kalamuna.com

Thank You!

61 of 88

DEMO

62 of 88

This section contains supplemental slides that speak more to the technologies that power kalastatic

63 of 88

Features

64 of 88

Features

  • Easy, single command installation
  • Managed dependencies
  • Built in webserver
  • Livereload: Saving files reloads the browser
  • Browsersync: Load your local on a mobile device!
  • You can make a real site with this thing
  • JSON ingestion from remote sources if you want it! (drupal 8?)

65 of 88

Features

CONVENIENCE UTILITIES

  • Cache busting
  • Deep linking (URL fragments)
  • Character limit filters
  • IE backward-compatibility

66 of 88

HOW is this different than patternlab?

  • more advanced, modern (attractive) tools
    • no compass = node-sass
    • easy to ingest libraries
  • no PHP dependencies
  • Content strategy
  • Flexible beyond styleguides
    • can ingest json
    • metalsmith can do anything!
    • can be used to make a real website!

67 of 88

CODE TOUR

68 of 88

Simple Workflow

Easily deploys to Pantheon and/or Github Pages!

{

»

»

»

69 of 88

Metalsmith

70 of 88

Metalsmith

{

"plugins": {

"metalsmith-collections-convention": {},

"metalsmith-metadata": {

"config": "config.yaml",

"navigation": "navigation.yaml"

},

"metalsmith-markdown": {},

"metalsmith-include": {},

"metalsmith-permalinks": {

"pattern": ":url",

"relative": false

},

"metalsmith-swig-helpers": {

71 of 88

Metalsmith - collections

A key Metalsmith plugin is metalsmith-collections

Collections are bundles of content that can be iterated through, they can be passed off to partials for rendering and allow for design patterns such as indexes, slideshows, and can allow individual bits of content to be used in multiple contexts.

Not unlike of like custom queries, and views.

72 of 88

Metalsmith

---

pattern: collections/news/*.md

sortBy: order

---

All news articles.

73 of 88

Custom template filters

Swig has straightforward html-yness.

We chose it due to it’s relative similarities to twig, aligning us towards a D8 future.

It also supports partials, and template inheritance out of the box.

We rolled up some custom swig filters to get a bit of extra functionality like email obfuscation, excerpts, and slug matching.

74 of 88

templating example

<section class="page-content">

<h1>{{title}}</h1>

<div class="contents">

{{contents|safe}}

</div>

</section>

<section id="news" class="news teasers">

{% for news in collections.news %}

{% include "./partials/news-teaser.html" with news only %}

{% endfor %}

</section>

75 of 88

PRISMIC

76 of 88

Prismic – a head wearing masks

masks are like content types, but defined in json!

  • edit article
  • view content

77 of 88

“view” of stories of type news tagged test

---

template: news.html

title: News

pageSlug: news

prismic:

news:

query: '[[:d = at(document.tags,["test"])]]'

---

This is news from [Prismic](https://kalastatic.prismic.io)!

/src/news.md

78 of 88

article “teaser”

<article class="teaser">

<div class="wrapper">

<a href="/article/{{id}}/{{slug}}">{{data.explicittitle.html|safe}}</a>

{{data.shortlede.html|safe}}

</div>

</article>

/templates/partials/news-teaser.html

79 of 88

article “node”

{% extends 'html.html' %}

{% block contents %}

{% for article in prismic.news.results %}

<main role="main">

<article>

{{article.data.title.html|safe}}

<figure class="article-img">

{{article.data.illustration.html|safe}}

</figure>

</div>

{{article.data.content.html|safe}}

</article>

</main>

{% endfor %}

{% endblock %}

/templates/news-article.html

80 of 88

KSS

81 of 88

KSS

  • Knyle Style Sheets is a CSS documentation specification that enables automated generation of ‘living’ style guides.
  • It is not a preprocessor, CSS framework, naming convention, or specificity guideline.
  • It works with any flavour of CSS—CSS, SCSS, LESS.
  • We use kss-node, by Drupal’s own johnalbin.

�KSS allows us to document our components style and markup, and easily identify/avoid front-end regressions.

82 of 88

KSS Styleguide

83 of 88

KSS

84 of 88

KSS

85 of 88

Contribute

86 of 88

87 of 88

Open Source

88 of 88

github + zenflow