📝
How we work (org handbook)
  • Home
  • Onboarding
  • Code of Conduct
  • Project Management
    • Project Initiation
      • Documentation and Checklists
      • Aligning with OpenUp's Mission and Vision
      • Getting Partners and Stakeholders on Board
      • Defining Project Parameters and Limitations (scope)
      • Product Management during the Project Initiation Phase
      • DRAFT COPY
    • Project Implementation
      • Project Planning
      • Agile, Scrum, and the Lean Startup Method
      • Stakeholder Management
      • Meetings
      • Communication
      • Team Management
      • Roles and responsibilities
    • Project Close-out
      • The Close-Out Report
      • Retrospective
      • Donor thanks
      • One page write-up
      • Blog article
      • Maintenance plan (if necessary)
    • Project overviews
      • Citizen Engagement App
      • Our Project List
      • Local Gov Programme
        • Business Portal
      • Tech Infrastructure
    • Project boards
  • How we work
    • Preferred tools
      • Tool sponsorships
    • Budgets & Finance
      • Taxes
        • VAT
        • PAYE and UIF
        • Workmen's compensation
        • Annual PAYE reconciliation
      • The Types of Budgets Used By OpenUp
      • When to Start Planning a Budget
      • Planning a Budget
      • How to Create a Budget
      • How to Spend a Budget
      • How to Adjust a Budget
      • Expense claims
      • Invoicing OpenUp
      • Capturing and approving invoices for payment
      • Allocating AWS costs to a project
      • Allocating Upwork transactions to projects
      • Software, Services and Hosting
      • Downloading Webflow invoices
    • Tool Development
      • Coding Roles
      • Tools For Coding
      • DESIGN
      • The Design Process: Step-By-Step
      • Tools Used In The Design Process
      • Quality Metrics: Design
      • Webflow export rules
      • CONTENT, WRITING, AND MEDIA
      • Creating Substance: The Role of Content in Tool Development
      • Creating Content: Step-By-Step
      • What Goes In Social Media
      • TRAINING & EVENTS
      • Event Planning
      • When, Where, and How to Hold a Training Session
      • Tools Used By Training and Events
      • User testing
      • Making government accessible
    • Outsourcing & Contracting
      • Why do we contract external workers?
      • Platforms We Use To Find Contractors
      • Contracting people for work
      • UpWork Contracting
    • Monitoring & Evaluation
    • Communications & Branding
      • Resizing images
      • Creating an email newsletter
      • Posting a blog
      • Sharing a blog post
      • Marketing Q &A
      • Official communications
      • Tracking app and campaign web traffic sources
    • Human Resources
      • Recruitment
      • Recruitment template: Project lead developer
      • DRAFT Recruitment template: Product owner
      • One-on-ones (1:1s)
    • Organisational Decision Records
      • ODR1: Organisational Decision Records
      • ODR2: Building dynamic web frontends using Webflow
    • Personal Information
    • Password management
  • Tech
    • Development guidelines
    • Preferred tech stack
    • Webflow project guide
      • How to build pages in Webflow so that content can be added using Javascript
    • Setting up a new server
    • Hosting on dokku
    • CDN in front of S3
    • Setting up a new Domain
    • CKAN
  • Product management
    • Our product design process
  • Codebridge
    • Codebridge - the space
Powered by GitBook
On this page
  • Context and Problem Statement
  • Decision drivers
  • Considered options
  • Decision outcome
  • Positive consequences
  • Negative consequences

Was this helpful?

  1. How we work
  2. Organisational Decision Records

ODR2: Building dynamic web frontends using Webflow

Status: (draft) accepted

Deciders: Adi Eyal, JD Bothma, Lunga Mthembu, Matthew Stark

Date: 2019-10-?

Context and Problem Statement

We build many fairly simple but often at least slightly interactive or data-driven tools for the web.

Convenient, usable interfaces are critical to most of our projects. The friction stopping a user from completing their task must be minimised.

We usually ought to iterate towards an ideal solution since it is hard to predict what the right tool is to build, or what users will find challenging to use.

We have found iteration with the typical designer + frontend developer(s) arrangement frustrating, since frontend developers struggle to implement the design and struggle to communicate what can be compromised in the design, while designers struggle to communicate what the essential aspects of the design are.

Decision drivers

  • The designer must be able to rapidly iterate on the design in a tight loop with feedback from users

  • We do not have the massive budgets industry dev teams like e-commerce have to push pixels to perfection

  • The design process must be informed by real or very realistic data

  • The design must be aesthetically pleasing - this promotes trust and confidence in a tool, as well as excitement and enthusiasm for using a tool

Considered options

  • Webflow with custom javascript to manipulate the page content based on data from outside webflow

    • Perhaps hosted by webflow with custom javascript linked from elsewhere

    • Perhaps exported and hosted as a static site or as django templates

  • Hand-written html with a css framework like bootstrap, ES6 and/or jQuery

    • Perhaps react for particularly interactive components

    • Perhaps a component library with hand-written HTML like Materialize CSS

  • React full sites, e.g. with frameworks like Gatsby

Decision outcome

Chosen option: "Webflow with custom javascript to manipulate the page content based on data from outside webflow" because in trials we found it effective at meeting the above requirements in our context.

Positive consequences

  • We have been able to build and iterate on beautiful interfaces rapidly with a very small team of skilled developers, even though they are not CSS experts.

  • We have been able to continue building user interfaces despite our frontend lead developer leaving the organisation.

  • There's no styling step for frontend developers. We can rapidly prototype design options in-browser with working HTML and CSS, and then the it's built - there's no re-implementation step after design. Only Javascript needs to be written if the new component needs dynamic data in production.

  • Webflow developers can build fun or helpful interactions which often work without additional dev effort in the final page.

Negative consequences

  • This approach requires strict discipline from the webflow developer and javascript developer to adhere to conventions that keeps a site built using this approach maintainable.

  • There is very little existing awareness of this approach.

    • We have to discover and codify the conventions ourselves.

    • Every new developer working on our projects has to learn this approach and the required conventions

  • Every dynamic/data-driven component requires javascript to be written - e.g. we have to build our own library for populating and responding to user interaction of a dropdown.

    • We might be able to build a reusable library of this code

  • Webflow does not lend itself to branching in the development process as is important when

    • two or more changes are being implement

    • one has to be released without the other

    • it is not clear at the outset which will be released first

    • e.g. the main menu is being changed in a way that requires javascript changes, but we can't make the javascript changes yet because we need to fix another bug more urgently, but the main menu has already been changed in webflow.

    • This becomes less of an issue

      • the more established the webflow component library (and its accompanying javascript) is

      • and the more you use cloned components over in-place components

  • You can't upgrade your component library quite like a typical one. You can backport features to old sites though, and manually fix conflicting styles.

  • It's hard for other organisations to build on such user interfaces, even though they can clone the webflow project.

    • Webflow Lite $16/month or Team $70+/month is needed to be able to update and export the design or components, which impacts on other organisations' willingness to build on as open source.

    • Upstreaming improvements, or merging in upstream changes, is less controlled and well-defined than coded interfaces.

  • We often have to stop and think whether an interaction should be built in webflow or javascript/css

    • This might still be cheaper considering that we often don't have to build those interactions outside webflow.

  • Repository history of CSS and HTML files become useless due to Webflow not necessarily respecting consistency and order when exporting.

PreviousODR1: Organisational Decision RecordsNextPersonal Information

Last updated 4 years ago

Was this helpful?