Back to Projects
Flagship case studyreview surface

FrameFX

An 8-package Remotion monorepo for token-driven motion design. FrameFX bridges the gap between design systems and programmatic video by converting design tokens into FPS-aware animation parameters, enabling declarative motion components powered by a shared design language.

RemotionMonorepoMotion DesignDesign TokensTypeScript
FrameFX

Build surface

The implementation surface for this system. These are the layers that mattered in practice, not a generic skills wall.
Animation
Remotion, React
Architecture
8-package monorepo, pnpm workspaces
Design System
Design tokens, FPS-aware conversion
Hooks
Animation hooks, Spring physics
Components
Declarative components, Composition API

System Architecture

FrameFX follows a pipeline architecture where design tokens flow through FPS-aware conversion into animation hooks, which power declarative components that compose into Remotion renders. Each stage is a separate package in the monorepo.

Token-to-Render Pipeline

Design tokens are converted to FPS-aware values, consumed by animation hooks with spring physics and easing, used by declarative components via a composition API, and ultimately rendered through Remotion's video pipeline.

Monorepo Architecture

The 8-package structure managed by pnpm workspaces ensures clean separation of concerns: tokens, conversion utilities, hooks, components, compositions, and build tooling each live in their own package with explicit dependency boundaries. This makes each layer independently testable and publishable.

Core Features

01

Token-Driven Animation

Design tokens serve as the single source of truth for all motion parameters, ensuring consistency across the entire animation system

  • Centralized token definitions for duration, easing, spacing, and color
  • Tokens automatically propagate to all components and hooks
  • Override system for per-component token customization
  • Type-safe token references with TypeScript inference
02

FPS-Aware Conversion

Automatic conversion of time-based tokens to frame-based values, ensuring animations render correctly at any frame rate

  • Millisecond-to-frame conversion respecting target FPS (24, 30, 60)
  • Dynamic recalculation when composition FPS changes
  • Sub-frame interpolation for smooth motion at lower frame rates
  • Consistent animation timing regardless of render target
03

Declarative Motion Components

React components that express complex animations through props rather than imperative code

  • FadeIn, SlideIn, ScaleIn and composite animation components
  • Stagger groups for sequenced element animations
  • Spring-based physics animations with configurable damping and stiffness
  • Composition API for combining multiple animation effects
04

Reusable Animation Hooks

Custom React hooks that encapsulate animation logic for use across components and compositions

  • useAnimatedValue for interpolated numeric animations
  • useSpring for physics-based motion with natural feel
  • useSequence for orchestrating multi-step animation timelines
  • useTokens for accessing design tokens within animation logic

Metrics & Design Philosophy

Packages
8
Modular monorepo
Architecture
Token-driven
Single source of truth
Conversion
FPS-aware
Frame-rate adaptive
Workspaces
pnpm
Monorepo managed

Design Token Philosophy

FrameFX treats design tokens as the single source of truth for motion. By encoding duration, easing, spacing, and color as tokens, designers and developers share a common language. When a token changes, every animation across the system updates automatically.

Programmatic Video

Built on Remotion, FrameFX brings React's component model to video production. Compositions are defined as React component trees, making complex motion graphics maintainable, versionable, and reviewable through standard code review workflows.

Next inspection step

Inspect the system further

Use the live surface or the source as the next level of proof. The goal here is not to end on a marketing flourish, but to make the next inspection step obvious.

Source
https://github.com/hopeatina/framefx
Why this matters
Strong systems work should be inspectable from multiple angles: interface, architecture, and implementation.