Pandai
Join in

This talk has a live wall

Scan with your phone and drop a note any time during the session — feedback, an idea, a hello. It appears on the wall live, and I’ll read them at the end.

Scan to open the live wall
Case Study · Part 1

Pandai Design System 1.5
Foundations & Implementation

A single source of truth — from Figma tokens to production-ready HTML. This is how we built DS 1.5 and shipped it across every student-facing screen.

Figma file TLVKe3bgJTdVvuPAzgDq2f · Published as a Team Library · Light / Dark · Student / Teacher / Parent

0
Variables
0
Component sets
0
Paint styles
0
Type styles
0
Screens shipped
scroll
The journey

From zero to a shipped system in 37 days

Four phases, May 4 – June 10 2026. Every milestone below is traceable to real commits in the repo.

May 4 · Day 1

Foundation

33 commits

Cleaned up the Figma source (9 fixes), locked the 3-tier token architecture, and published the Team Library. First components landed same day — Navbar 1.5, Class Cards, the streak & success modals.

May 5 – 9

Core components & the Home screen

~70 commits

Built the Home screen end-to-end: Carousel 1.5, Quiz Card, Static Card, status pills. A long DS-alignment pass on the Navbar, and the first responsive breakpoints (tablet / mobile).

May 11 – 22

Component build-out — peak crunch

~290 commits

The busiest stretch (199 commits the week of May 11). Badges, full button state machines, dropdowns, profile & notification menus, the reusable page template — the component library matured here.

May 26 – Jun 10

Feature pages

~180 commits

Composed the catalogue onto the system: Rewards (×5), Achievement cards + data tables (×3), Class (×2), Learn (×4), Practice, Battle — plus cross-page nav wiring.

Today · Jun 10

18 screens shipped · Part 1 documented

next →

The foundation is set and documented. Next: new home layouts and the Avatar Customizer — the gamification layer.

By the numbers

What 37 days of building looks like

All figures derived from the repository’s git history. Hands-on time is a session-based estimate — commits grouped into work sessions, a new session counted when the gap exceeds ~90 minutes.

0
days, day-1 to date
May 4 → Jun 10 2026 · 36 active
0
total commits
avg ~18 / active day
0
hands-on (est.)
honest range 108–136h · ~62 sessions
Commit cadence per week
153May 4–10
199May 11–17
97May 18–24
112May 25–31
74Jun 1–7
7Jun 8–10
At a glance
Total commits642
Active days36 / 37
Peak week199
Avg / active day~18
Hands-on (est.)108–136h
Token architecture

Three tiers, one source of truth

Every value resolves through a 3-tier chain. Components reference Semantic tokens; Semantic aliases Product (per user role); Product points at raw Primitives. Change a primitive once — it cascades everywhere.

Tier 1

Primitives

Raw, mode-less values. The atomic palette and scale.

  • Grey, OG-Green, Blue, Pink, Yellow…
  • Scale 0–999 (spacing)
  • Corner radius, font size, line height
  • 18 subject palettes
Tier 2

Product

Role-aware aliases. Same token, different palette per user.

  • Primary / Secondary / Tertiary
  • Success · Alert · Warning · Informative
  • Spacing & radius aliases
🟢 Student🩷 Teacher🟡 Parent
Tier 3

Semantic

What components actually consume. Theme-aware.

  • Surface / Text / Icon / Border / Overlay
  • Light & Dark modes
  • Spacing/component · layout · Radius
Primitives Product Semantic Component
Tokens · 01

Colors

Semantic color tokens, named by role not by hue — the same green is Surface/primary on a fill and Border/primary on a stroke. Click any swatch to copy its hex.

Tokens · 01b

Subject palette · 18 subjects

Each subject carries its own brand color and DS icon — together they drive subject badges and quiz-card borders across the product. Click a card to copy its hex.

Tokens · 02

Typography

Poppins, 21 styles across Header, Title, Body and Caption. Heading & Title sizes step down across Desktop / Tablet / Mobile via the Responsives collection; Body and Caption never change.

Tokens · 03

Spacing

An 8-point-based semantic scale. Layout padding is consistently space-m (16px); the gap between every page section is also 16px. No hardcoded pixels — every gap resolves through a token.

Tokens · 04

Iconography

One source — the DS Iconography page. Every icon ships as an SVG <symbol> referenced via <use>, drawn at native 24×24 with stroke=currentColor so a single color: rule drives every state. Hover to read the token, click to copy.

Native size 24 × 24Stroke currentColor · 1.5px Pattern <use href="#ic-*">viewBox 1px buffer per icon
Tokens · 05

Layout & Grid

A fluid page shell driven by a handful of CSS variables. One value (--page-max-width) flips the product between fluid and capped. Three breakpoints map to the DS Responsives frames.

Page shell
Max width100% fluid
Padding-x desktop60px
Padding-x tablet32px
Padding-x mobile16px
Section gap16px
Min width390px
Content grids
Quiz cards desktop3 cols
Quiz cards tablet2 cols
Quiz cards mobile1 col
Grid gap16px
Refloworder / flex
Chrome
Navbar height72px
Footer height60px fixed
Dropdown top80px
Mobile navbar< 1320px
Desktop · 1440px
Tablet · 687px
Mobile · 390px
Tokens · 06

Brand

Pandai green is the spine of the system. The Product tier lets one component re-skin itself per audience — Student is OG-Green, Teacher is Pink, Parent is Yellow — without changing a line of component code.

Primary green#00cc85
Deep teal#00564c
TypefacePoppins
Product modes — Primary/Base
StudentOG-Green#00cc85
TeacherPink#ff5c98
ParentYellow#fece00
How we built it

Implementation principles

DS-faithful, every screen. These are the non-negotiable rules that turn Figma tokens into pixel-accurate, maintainable HTML.

1

Tokens, never values

Zero hardcoded hex or px. Every value resolves through a Semantic CSS variable mirroring the Figma path 1:1.

2

Borders, not shadows

No drop shadows on cards. Depth comes from a 1px border; elevation styles are reference only.

3

No gradients

Flat DS colors only. Every fill is a single token — no linear-gradient in the system.

4

Stroke-align is law

Figma INSIDEbox-shadow:inset; OUTSIDEbox-shadow; only CENTERborder.

5

Full state machines

Default / Hover / Pressed / Active / Disabled are distinct Figma variants, each pulled separately.

6

Icons from one source

Every icon is a <symbol> from the Iconography page at native 24×24, colored by inheritance.

7

Named sections, 16px rhythm

Every block is a semantic <section>, separated by a constant 16px (space-m) gap.

8

Reflow, don’t rewrite

Responsive layouts use CSS order + flex-direction; the HTML source order never changes.

Shipped

Every screen, built on the system

18 student-facing screens, composed entirely from DS 1.5. Drive the live build — pick a screen, then flip between the Figma design and the live HTML render.

Live HTML
Figma design
Engineer hand-off

Built to hand off, not just to demo

DS 1.5 ships as a real engineering source of truth — a published library, in-file documentation, 1:1 token naming and reference builds. A few pipeline pieces are still in flight.

Figma Team Library

Published library: 938 variables, 195 component sets, 255 paint styles, 21 text styles, 6 effect styles.

Delivered

Documentation pages

In-file specimens — Colors (255 swatches), Typography (21 styles), Spacing & Radius.

Delivered

Variable-bound paint styles

255 paint styles, every one linked to a Semantic variable — no detached colors.

Delivered

1:1 token mapping

Figma paths mirror CSS vars exactly — Surface/primary/default--surface-primary-default.

Delivered

Reference implementations

18 production-faithful HTML builds engineers can read line-for-line.

Delivered

Dev Mode & redlines

Dev Mode inspection and redline annotations for spacing and specs.

In progress

tokens.json export

W3C Design Tokens export to feed the codebase token pipeline.

Planned

Repo coding rules

A CLAUDE.md guardrail file so new UI stays DS-faithful by default.

Planned
Platform scope
  • The current 1.5 implementation is designed for the Web App version.
  • The Mobile App version will be developed alongside DS 2.0.

That’s the foundation.

DS 1.5 is one connected system — tokens, components and 18 shipped screens, all traceable to a single Figma source of truth.

Built with the system it documents · Poppins #00cc85

What’s next

From foundation → evolution

The system is proven across 18 screens. Part 2 builds on it — the roadmap reuses the same DS components, with targeted redesigns and a few net-new builds across the product.

Customize & redesign features

Reworking core learning features — Quiz, Experiments, Flashcards and more — on top of DS 1.5.

Redesign

Quiz Battle & flow

A full UI + UX overhaul of Quiz Battle and the end-to-end battle flow.

UI + UX

AskPbot modal

Refreshing the AskPbot assistant modal — clearer, smoother conversational UX.

UX

Revive the Avatar

UI + UX revival plus a new customizable character component — the gamification layer.

New build

Onboarding

A first-run onboarding flow to guide new students in — UX, likely net-new development.

UX + Build

Widgets introduction

Home-screen widgets for quick access and streaks — OS-dependent (iOS / Android).

OS-dependent

Customized app-icon triggers

Dynamic, context-aware app launcher icons that respond to events and milestones.

Exploring

Animations, animations & more

Rich motion throughout — driving the user’s custom avatar into quiz sessions.

Motion

Leaderboard upgrade

A UI + UX refresh with richer interactivity and animation.

UI + UX
The next chapter

Road to Pandai App 2.0

Pandai App — Revolutionized · Gamified · Interactive.

Revolutionized

A ground-up rethink of the student experience — built on everything DS 1.5 proved.

Gamified

Play, streaks, rewards and a living avatar woven through every learning moment.

Interactive

Motion, feedback and delight on every screen — the product comes alive.

The 2.0 movement

Core to Pandai App 2.0

The building blocks of the next chapter — motion, sound, play and a living companion, all layered on the system we’ve proven.

Animated assets

A library of animated illustrations and micro-interactions, reusable across the app.

Motion

Sound effects integration

Audio feedback woven into key actions, rewards and transitions.

Audio

Mini games

A premium retention & conversion lever — 3 random games on a bi-weekly rotation to earn coins and unlock new badge releases. Free users get a taste, nudging them to convert and join in.

Premium · retention

“Pbot Pal”

A new interactive PBot companion — feed it, study with it, customize it. Part of the custom avatar development.

New build

Profile banners

Custom profile banners for personalization and status expression.

Custom profile

New reward modals

Celebratory gain moments — Badge, Streak, Avatar and Coins pop-ups.

Feedback
The plan

Expected timeline — 2.0 deployment

A bimester-by-bimester view of the road to Pandai App 2.0 — from pitch to the phase-1 hand-off.

Bimester 4 · 2026

July

  • Week 2 — Pitch sessionAll team leads + C-levels
  • Feedback retrieval & evaluation
  • Mobile App 1.5 integration
  • 2.0 custom component (new dev) approvals
  • 2.0 Mobile App design — UI (homepage)

August

  • 2.0 custom component development — UI/UXbased on confirmation
  • 2.0 Mobile & Web App design — UI/UXhomepage fine-tune + main features
Bimester 5 · 2026

September

  • 2.0 Dev hand-off — Phase 1Phase 1 = homepage rebuild + main features (Quiz, Flashcards, etc.)
  • 2.0 new custom components — testing & fine-tuning

October

  • ??? (TBC)

Pushing our level best to ship 2.0 by Bimester 1, 2027 — hoping to tease it at the Pandai Awards Ceremony. 🤞

Terima kasih

Thank you.

Let’s strive for better product.

Pandai

Made with in Malaysia

Copied