What Technologies Are Used in the OpenMAIC Presentation Layer: A Complete Stack Breakdown

OpenMAIC's presentation layer is built on a modern React 19 and Next.js 16 stack, utilizing TypeScript for type safety, Tailwind CSS v4 for styling, and Radix UI primitives combined with shadcn/ui for accessible components.

The OpenMAIC repository (THU-MAIC/OpenMAIC) delivers a sophisticated workbench interface for machine learning and AI workflows. Its front-end architecture combines cutting-edge web technologies with specialized libraries for data visualization, mathematical rendering, and interactive node-based editing.

Core Framework and Language

OpenMAIC anchors its presentation layer on the latest generation of React ecosystem tools. This foundation provides server-side rendering capabilities and strict type enforcement throughout the codebase.

Next.js 16 and React 19

The application runs on Next.js v16, configured in next.config.ts, which handles routing, optimization, and static generation for the web UI. This framework wraps React v19, declared in package.json, serving as the core library for all interactive components.

TypeScript Configuration

TypeScript enforces static typing across the entire front-end codebase. The configuration in tsconfig.json ensures type safety for props, state, and API interactions, reducing runtime errors in complex workbench components.

Styling and Component Architecture

The UI implements a utility-first approach with accessible primitives, creating a consistent design system that scales across the application.

Tailwind CSS v4

Tailwind CSS v4 (referenced implicitly via dependencies and configuration files like tailwind.config.ts) provides the utility-first CSS framework responsible for layout, responsive design, and theming. The system uses twMerge and clsx (both listed in package.json) to handle conditional className construction cleanly.

Radix UI and shadcn/ui

The component layer builds upon Radix UI primitives—including checkbox, popover, slider, and switch components—for accessibility and keyboard navigation. These primitives are styled through shadcn/ui, a design system that provides pre-built, customizable UI blocks used throughout the workbench interface.

Iconography

lucide-react supplies the scalable SVG icon set rendered across toolbars, navigation panels, and action buttons in the workbench UI.

Visualization and Interactive Media

OpenMAIC handles complex data representations through specialized libraries for graphs, charts, and animations.

Node-Based Editing

The interactive canvas uses @xyflow/react to render node-graph visualizations, enabling users to construct and manipulate ML pipelines visually within the workbench environment.

Data Charts

ECharts powers high-performance charting widgets for data visualization, while embla-carousel-react implements lightweight carousels for UI tours and media previews.

Animation Stack

Motion design relies on multiple libraries: GSAP for timeline-based animations, motion for React-specific physics and transitions, and animate.css for CSS-based effects.

State Management and Utilities

Managing complex UI state requires lightweight, performant solutions.

Zustand and Immer

Zustand provides the global state store for workbench sessions, avoiding prop drilling across deeply nested component trees. Immer accompanies it as an immutable-update helper, simplifying state modifications in lib/workbench/*.tsx files.

Class Name Utilities

The codebase consistently employs clsx and tailwind-merge to combine and deduplicate Tailwind classes dynamically, ensuring predictable styling in conditional render scenarios.

Content Processing and Typography

The presentation layer handles rich text, mathematical notation, and optimized assets.

Rich Text Editing

The prosemirror suite powers the content editor, while turndown, sanitize-html, and remark-cjk-friendly handle markdown conversion, HTML sanitization, and CJK character processing respectively.

Mathematical Rendering

KaTeX, temml, and mathml2omml render inline and block mathematical expressions, essential for displaying ML formulas and algorithmic documentation.

Font and Image Assets

@fontsource families (including Inter, JetBrains Mono, and Noto Sans) load variable fonts for consistent typography. Server-side image processing utilizes sharp for resizing and format conversion during uploads.

Implementation Example

Components in lib/workbench/*.tsx integrate these technologies to create cohesive UI elements. The following example from the workbench demonstrates imports from React, Zustand, Radix UI, Lucide icons, and motion libraries working together:

import { useEffect } from 'react';
import { useWorkspaceStore } from '@/lib/workbench/use-workbench-session';
import { Switch } from '@radix-ui/react-switch';
import { Moon } from 'lucide-react';
import { motion } from 'motion';
import clsx from 'clsx';
import { twMerge } from 'tailwind-merge';

export function DarkModeToggle() {
  const { darkMode, setDarkMode } = useWorkspaceStore(state => ({
    darkMode: state.darkMode,
    setDarkMode: state.setDarkMode,
  }));

  // Animate the toggle on mount
  useEffect(() => {
    motion.animate('.toggle', { scale: [0, 1] }, { duration: 0.4 });
  }, []);

  return (
    <div className={twMerge('flex items-center space-x-2', darkMode && 'text-yellow-300')}>
      <Moon size={20} />
      <Switch
        className={clsx('switch')}
        checked={darkMode}
        onCheckedChange={setDarkMode}
      />
    </div>
  );
}

Summary

  • OpenMAIC combines Next.js 16, React 19, and TypeScript as its foundational framework
  • Tailwind CSS v4 and shadcn/ui (built on Radix UI) provide the styling and component architecture
  • Visualization relies on @xyflow/react for node graphs, ECharts for data charts, and embla-carousel-react for media
  • Zustand with Immer manages global state, while GSAP and motion handle animations
  • Content features utilize prosemirror, KaTeX, and @fontsource for rich text, math rendering, and typography
  • All components reside in lib/workbench/*.tsx, importing utilities like clsx and tailwind-merge for class management

Frequently Asked Questions

What framework does OpenMAIC use for its front-end?

OpenMAIC uses Next.js v16 as its application framework, running on top of React v19. This combination provides server-side rendering capabilities, optimized routing, and the latest React features for the presentation layer.

How does OpenMAIC handle complex node-based visualizations?

The implementation uses @xyflow/react to power interactive node-graph visualizations within the workbench canvas. This library enables users to drag, connect, and configure ML pipeline nodes through an intuitive graphical interface defined in components like lib/workbench/workspace-panes.tsx.

Which state management library does OpenMAIC employ?

OpenMAIC utilizes Zustand for lightweight global state management, paired with Immer for immutable state updates. This combination avoids the boilerplate of Redux while maintaining predictable state mutations across the workbench session store (useWorkspaceStore).

What technologies render mathematical expressions in OpenMAIC?

Mathematical content renders through KaTeX, temml, and mathml2omml libraries. These tools convert LaTeX and MathML syntax into high-performance HTML/SVG output, essential for displaying machine learning formulas and algorithmic notation in the UI.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →