This document discusses the approach taken to frontend design for UI/UX.

Process

Our design-code iteration model

We are follow an iterative, back-and-forth design process rather than a long “design first, then build” sequence. Each UI feature moves through a tight loop: research, low-fidelity prototype, high-fidelity prototype, refine and implement.

For example, for Sprint 1 (see: W4 - Sprint Planning) we are focussing solely on the “Setup” phase of the app. This includes:

  • Sign-in
  • Sign-up
  • Authentication
  • Onboarding

This is opposed to designing the UI and user-flows of the full app in one go before beginning on it’s implementation.

Why we chose this approach

  • Uncertain requirements - some requirements and preferences are still evolving, this approach is more agile and flexible to changes for less cost.
  • Client feedback - related to the above, due to the infrequency and low availability of client feedback, this approach:
    • Reduces the risk of going to far ahead on a design the client is disagreeable to
    • Makes feedback more concrete and focussed on smaller increments
  • Value sooner - this approach means we are able reach implementation (code) sooner. Moreover, lessons learnt coding (e.g. hard to implement elements) might informer future design decisions - improving efficiency.

Typical loop

  • Discovery and research - Clarify the user story, constraints, and success criteria. Research for inspiration (unless design ethos is already well established)
  • (Optional) User flow diagram - For complex interactions a user flow diagram
  • Low-fidelity prototype/s - A simplified sketch / design (basic layout etc.) aka wireframe
  • High-fidelity prototype/s - A detailed, ready-to-implement design (possibly intractable) likely in Figma.

flowchart TB 
	D[Discovery & Research]
	U[User Flow Diagram]
	L[Low-fidelity prototype]
	H[High-fidelity prototype]
	F[Client feedback & Testing]
	I[Implementation]
	
	D --> U --> L --> H --> F
	F -->|Refinement|D	
	F -->|Approved|I

Other guidelines

  • Use a design system - shared components, and patterns in Figma (and code) for consistency and efficiency.
  • Decision log - We record client preferences and rationale to avoid back-and-forth on settled choices - using the Decision Log!