Front-end Tech Stack

At Sapera, we use the latest Front-end tools to keep up-to-date with modern web technologies. Below is a diagram to outline our Front-end architecture and Design System to show each tool’s purpose and its relationship.

Global dependencies

Design System

React Styled Styled System Components A JavaScript A styling utility UI library To write CSS in JavaScript library for React

Pattern Library CSS Tokens Under the hood

We use these development dependencies to flag programming errors, add code validation to enhance writing quality and to enforce a consistent code format between developers.

Storybook Diez

To create UI To create ESLint TypeScript Prettier components in isolation design tokens Sapera Website Sapera Brand Acronyms

Analyze JavaScript Add type checking Opinionated to find problems to JavaScript code formatter CSS Cascading Style Sheets

JSON JavaScript Object Notation

MVP Minimal Viable Product Testing tools SSR Server-side Rendered Sketch Next.JS Next.JS Design software Static & SSR Static & SSR UI User Interface React app React app

Jest Cypress Labels Unit test code To validate app flow in isolation end-to-end GitHub repository MobX Playroom Designers Not required for a MVP A state Interactive live management library editor playground Workflow

Lighthouse Pa11y Does not require global dependencies To improve webpages quality For accessibility

Design System in detail

The purpose of our Design System is to create a cohesive design that reflects a common visual language with our corporate identity. The aim is to promote consistency and create a shared design vocabulary between Sapera Website, Brand and the teams. This eco-system is a comprehensive 'living document', and most importantly, it is the place for a single source of truth. Pattern Library CSS Tokens

A web interface consists of building blocks. The CSS Tokens Git Repository is to store The Pattern Library contains these blocks which styling attributes using TypeScript. we call components. Here are some examples: Here are some examples:

What are these dependendies for?