Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Large Scale CSS Refactoring

Large Scale CSS Refactoring

Project Ironman was the technical migration of the trivago hotel search’s existing CSS core to a pattern library based user interface. Backgrounds, insights, learnings and technical approaches of refactoring an existing CSS core of more than 50k lines of SCSS-Code on a large project.

Christoph Reinartz

June 01, 2016
Tweet

More Decks by Christoph Reinartz

Other Decks in Technology

Transcript

  1. Christoph Reinartz - @pistenprinz What is it?
 A description Project

    Ironman was the technical migration of the trivago hotel search's existing CSS core to a pattern library based user interface.* *) business translation for #refactorAllTheThings
  2. Christoph Reinartz - @pistenprinz #3 Provide base for modern &

    sustainable UI rebuild Build modern applications fast
  3. Christoph Reinartz - @pistenprinz peaks at the beginning of the

    stylesheet Graph 2015 before Ironman
 Way better, but still…
  4. Christoph Reinartz - @pistenprinz #4 Inconsistency and missing Styleguide Or

    how to create fifty shades of grey or anything else
  5. Christoph Reinartz - @pistenprinz New CSS Core Existing CSS normalize.css

    reset.css border-box content-box mobile first (min-width) desktop first (max-width) media queries inline in separate files embed SVG icon image sprites ITCSS layering [something] BEM, OOCSS [something] Post processing (MQPacker etc.) nothing
  6. Christoph Reinartz - @pistenprinz Retain the existing Layout & Design

    integrate the new CSS framework base but …
  7. Christoph Reinartz - @pistenprinz _declarations includes mixins mobile includes layout.scss

    elements.scss modules.scss dealform.scss layout.scss elements.scss modules.scss dealform.scss
  8. Christoph Reinartz - @pistenprinz #1 Refactor > 50k LOC of

    Scss Rewrite / adapt the whole Scss Base
  9. Christoph Reinartz - @pistenprinz How to tell management that you

    need 4 weeks of feature freeze and the User Interface will look exactly the same afterwards? Developer goes Marketing
  10. Code / Process Audits How to tell management that you

    need you need 4 weeks of feature freeze and the User Interface will exactly look the same afterwards?
  11. Christoph Reinartz - @pistenprinz 9 Front-End Devs 3 Designers 2

    QA Release Engineer Management Back-End Devs Performance Lead UBolt UXBolt Product Owner
  12. Christoph Reinartz - @pistenprinz The (lean) Process 3 Meetings +17

    Stand-Ups … and a slack-channel is all we needed
  13. trv-blue-light #3f9fc1 trv-red-light #d67763 trv-green-light #8cba3f trv-green-lighter #b2d17f trv-green-dark #4c7b00

    trv-juri-light #697379 trv-juri-lighter #9ba2a6 trv-juri-lightest #ebeced trv-blue-dark #005f81 trv-blue #007fad trv-orange #f48f00 trv-red #c94a30 trv-orange-dark #b76b00 trv-orange-light #f6ab3f trv-blue-lightest #e5f2f6 trv-red-lightest #f9ecea trv-orange-lightest #fdf3e5 trv-red-dark #963724 trv-green #66a400 trv-juri #37454d trv-juri-dark #293339 16 12 18 16 12 12 18 12 18 16 * trv-juri-very-light #cdd0d2 trv-red-very-light #f1d1cb trv-green-very-light #d8e8bf trv-orange-very-light #fce3bf trv-blue-very-light #bfdfea trv-red-lighter #e4a49b trv-orange-lighter #f9c780 trv-blue-lighter #7fbfd6 trv-green-lightest #eff5e5
  14. description details infobig hotelconnect smiley heart towel star pictures wifi

    spa beach breakfast pool pet golf tv family eco parking bed_single bed_double bed_small couple universal home menu share edit checkout checkin general rates faq_circle faq info_circle info arrow_right_circle arrow_left_circle arrow_down_circle arrow_up_circle arrow_right arrow_left arrow_down arrow_up tick exclamation x plus minus image media bag chair team candy journalist news hoteltest plus_circle minus_circle x_circle filter dashboard statistics hotel2 hotel travel2 travel booking hotelchain upload delete tick_circle exclamation_circle contact profile info product history giveback lock calendar search publisher career comment download map smiley_belowaverage smiley_satisfactory smiley_good smiley_verygood smiley_excellent smiley_belowaverage smiley_satisfactory smiley_good smiley_verygood smiley_excellent level sort department poi_citycentre poi_airport poi_sight poi_conference poi_harbor poi_mainstation poi_nature poi_nightlife poi_sports filterreset join thin share2 movie call piechart diagram music multimedia wifi spa beach breakfast pool pet golf tv family eco parking bed_single bed_double bed_small couple universal home menu share edit checkout checkin general rates description details infobig hotelconnect smiley heart towel star pictures icn_profile icn_info icn_product icn_history icn_giveback icn_lock icn_calendar icn_search icn_publisher icn_career icn_comment icn_download icn_map icn_dashboard icn_statistics icn_hotel2 icn_hotel icn_travel2 icn_travel icn_booking icn_hotelchain icn_upload icn_delete icn_tick_circle exclamation_circle contact image media bag chair team candy journalist news hoteltest plus_circle minus_circle x_circle icn_filter arrow_right_circle arrow_left_circle arrow_down_circle arrow_up_circle arrow_right arrow_left arrow_down arrow_up tick exclamation x plus minus faq_circle faq info_circle info smiley_belowaverage smiley_satisfactory smiley_good smiley_verygood smiley_excellent smiley_belowaverage smiley_satisfactory smiley_good smiley_verygood smiley_excellent level sort department poi_citycentre poi_airport poi_sight poi_conference poi_harbor poi_mainstation poi_nature poi_nightlife poi_sports join thin filterreset share2 movie call piechart diagram music multimedia
  15. Christoph Reinartz - @pistenprinz peaks at the beginning of the

    stylesheet Graph before Ironman
 Way better, but still…
  16. Christoph Reinartz - @pistenprinz New CSS base Adapted old UI

    components. Can now be easily rebuilt! SVG Graph after Ironman
 Improved curve…