You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on May 5, 2020. It is now read-only.
Copy file name to clipboardExpand all lines: pages/work/2016-04-09---an-all-new-way-to-build-websites/index.md
+4-4
Original file line number
Diff line number
Diff line change
@@ -14,11 +14,11 @@ When the time came to start building responsive sites, something for which I had
14
14
15
15
The key to this new system is a separation of concerns illustrated above. We separated the structure of the site into **Layouts**, the look-and-feel into **Themes**, and the actual content into **Widgets**. This made each component reusable in only the ways it needed to be and, crucially, allowed us to offer built-in responsiveness instead of requiring a custom solution for each site.
**Layouts** are an XML representation of a traditional wireframe for the site. They describe which Containers (more on those in a bit) exist and in which arrangement. They also define the major media query breakpoints (e.g. when the sidebar of a site moves from under the main content to beside it) for the site and are _highly_ reusable. We chose XML because it is highly expressive, easily updated and understood, and easy to validate, to prevent errors early in the process. Because Layouts are completely separated from the look-and-feel and content of the site, they can be re-used with little to no effort. After building our first few sites using the new system, which I carefully supervised, we built up a nice library of common site layout patterns, codified into Layouts. For the next six months, I continued to regularly review Design’s comps and offer feedback and suggestions to ensure they used their new capabilities to their best and fullest potential.
**Themes** provide the aesthetic of the site, the fonts, colors, textures, spacing, etc... Importantly, they do not require the user to even think about responsiveness, since that is handled by the Layout and Widgets. Rather than forcing Web Admins to write the CSS for these Themes by hand, we built a <abbrtitle="What you see is what you get">WYSIWYG</abbr> interface to more efficiently translate the comp from Design into a working site.
24
24
@@ -29,12 +29,12 @@ This decision provided a lot of wins:{.cf}
29
29
3. The separation of aesthetic from structure and content allows us to redesign a site without migrating any content, which was previously impossible.
30
30
3. While Themes are too specific to an individual site to be shared with another site, a site’s multiple Themes are often quite similar and our interface allows for easy modification of one or more Themes simultaneously.
Finally, we have **Widgets**, which hold the content. Layouts are made of Containers, which hold a grid into which the client can drag-and-drop Widgets. This is the biggest improvement over the previous system. Previously, clients did not have access to anything other than the main content area of a page, requiring an email or phone call to Support just to switch out some content in their sidebar. Now, not only do they have that access, but we reduced a 17-step process across five screens to a simple drag-and-drop action and a popup to quickly configure the new Widget’s options. (Well, simple from the author’s perspective. As you can see in the figure below, it’s anything but simple.) There are Widgets for all types of content. To name a few: a full-featured <abbr title="What you see is what you get">WYSIWYG</abbr> editor; a quick, easy way to build a fully-responsive data table; drop-in images and slideshows; and a multitude of “Module Widgets”, which dynamically pull in content from other areas of the site.
35
35
36
36
<figure>
37
-
<imgsrc="./GridSpecTargets.png"alt="Sketch of drag-and-drop grid targets and their behavior" />
37
+
<imgsrc="./GridSpecTargets.jpg"srcset="./GridSpecTargets@2x.jpg 2x"alt="Sketch of drag-and-drop grid targets and their behavior" />
38
38
<figcaption>One of many sketches to figure out how the drag-and-drop should operate. We opted for the third scenario, on the right.</figcaption>
Copy file name to clipboardExpand all lines: pages/work/2016-04-12---a-fully-responsive-cms/index.md
+12-3
Original file line number
Diff line number
Diff line change
@@ -12,14 +12,23 @@ At [CivicPlus](http://civicplus.com), the administrative UI for our CMS was star
12
12
13
13
I worked with our UX Designer and development team to design and build the new UI and front-end architecture. As we started, I championed the need for a dynamic design system that would be the source of all of the various design patterns necessary for the build. After explaining the benefits, including faster QA regression testing, much easier maintainability, and enforced design & code consistency, I had no problem persuading leadership to buy in.
14
14
15
-
 {.right@sm .w-50@sm .push@md}
15
+
<figureclass="right@sm w-50@sm push@md">
16
+
<imgsrc="./StyleGuideButton.jpg"srcset="./StyleGuideButton@2x.jpg 2x"alt="Excerpt of Button section of the style guide" />
17
+
<figcaption>A standard button, as defined in the style guide</figcaption>
18
+
</figure>
16
19
17
20
The design system, and therefore the product, is built with Angular & Sass. The development team handled the former while I alone handled the latter. The Sass code has a base layer, an admin layer, and a “public” layer, the last of which I built in preparation for a future project to overhaul our citizen-facing UI. It is also quickly and easily theme-able, thanks to some custom mixins and a strict adherence to [<abbrtitle="Block Element Modifier">BEM</abbr>](http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/)^[The [official resource for BEM](https://en.bem.info/) isn’t nearly as understandable as the article I linked to above. It also goes way beyond the scope of CSS.] principles. This was also my first real foray into using an SVG icon system, which beautifully matches the bold, flat look and significantly reduced both the size and number of requests for images.
<figcaption>“Mobile” wireframes for one of the modules in the CMS; <em>not my work</em></figcaption>
25
+
</figure>
20
26
21
27
With the design system in place, I could begin to take the wireframes of “desktop” and “mobile” screens provided by our UX designer and translate them into real, working markup. This required a lot of collaboration with both the designer and the development team, as there were significant constraints from both sides and decisions frequently affected each of them in complex ways. It also required a large amount of ingenuity. Nothing was specified for the widths between “desktop” and ”mobile”, so it was up to me to determine the design and code to make it work at all widths. I loved the challenge.
<figcaption>The completed calendar module, at “desktop” size</figcaption>
32
+
</figure>
24
33
25
34
The end result was released recently with the launch of a new Dashboard. It meets all of the goals for the project and our clients have been raving about how much they’re enjoying the significant improvement. It was such a success that we then quickly applied the aesthetic^[The architecture rewrite and responsiveness will take much more time and effort.] to our entire system, which was also met with praise, and the design system has been expanded to eventually drive every one of our products.
0 commit comments