pascalorg/editor

Create and share 3D architectural projects.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 14 minutes ago
Added to GitGenius on August 2nd, 2026
Created on October 16th, 2025
Open Issues & Pull Requests: 25 (+0)
GitHub issues: Enabled
Number of forks: 2,705
Total Stargazers: 21,201 (+1)
Total Subscribers: 121 (+0)

Issue Activity (beta)

Open issues: 15
New in 7 days: 9
Closed in 7 days: 10
Avg open age: 63 days
Stale 30+ days: 0
Stale 90+ days: 0

Recent activity

Opened in 7 days: 7
Closed in 7 days: 10
Comments in 7 days: 54
Events in 7 days: 60

Top labels

  • enhancement (27)
  • bug (23)
  • help wanted (8)
  • cleanup (2)
  • documentation (2)
  • good first issue (2)
  • ready-for-agent (2)
  • question (1)

Repository Insights (GitGenius)

Median issue/PR response: 0.0 hours
Mean response time: 2.7 days
90th percentile: 4.0 days
Tracked items: 79

Most active contributors

Detailed Description

Pascal Editor is a 3D building editor built with React Three Fiber and WebGPU, enabling users to create and share architectural projects through a web-based interface. The application is written in TypeScript and organized as a Turborepo monorepo containing four main runtime packages that separate concerns across different layers of functionality.

The core architecture divides responsibility among distinct packages. The @pascal-app/core package manages node schemas, scene state via Zustand, registry contracts, spatial queries, and an event bus. The @pascal-app/viewer package handles 3D rendering through React Three Fiber, shared render systems, default camera controls, and post-processing effects. The @pascal-app/editor package provides editing tools, panels, selection management, and direct-manipulation UI. The @pascal-app/nodes package serves as a built-in registry plugin containing node definitions, renderers, geometry generation, and systems. Finally, apps/editor is a standalone Next.js host that brings together all the editor packages into a cohesive application.

The editor represents scenes as nodes, which are the fundamental data primitives describing the 3D environment. Rather than using a nested tree structure, nodes are stored in a flat dictionary with parent-child relationships defined through parentId and children arrays. The scene state is managed by a Zustand store that persists to IndexedDB and includes undo/redo functionality via Zundo with a 50-step history. A scene registry maps node IDs to their Three.js objects for fast lookup, allowing systems to access 3D objects directly without traversing the scene graph.

Geometry generation is handled by specialized systems that process dirty nodes marked by the store. Core systems include WallSystem for generating wall geometry with mitering and CSG cutouts, SlabSystem for floor geometry from polygons, CeilingSystem for ceiling geometry, RoofSystem for roof geometry, and ItemSystem for positioning items on surfaces. Additional viewer systems manage level visibility in different display modes, 3D scan visibility, and guide image visibility. A spatial grid manager handles collision detection and placement validation for item positioning.

The editor extends the viewer with interactive tools activated through a toolbar, including SelectTool for selection and manipulation, WallTool for drawing walls, ZoneTool for creating zones, ItemTool for placing furniture and fixtures, and SlabTool for creating floor slabs. A custom selection manager provides hierarchical navigation with depth-level-specific strategies for hover and click behavior.

The technology stack includes React 19, Next.js 16, Three.js with WebGPU renderer, React Three Fiber with Drei, Zustand for state management, Zod for schema validation, Zundo for undo/redo, three-bvh-csg for Boolean geometry operations, Turborepo for monorepo management, and Bun as the package manager. The editor is extensible through a plugin system where developers can ship node kinds with schema definitions, 3D and 2D rendering, placement tools, and inspector parametrics using the same Plugin manifest structure as the built-in nodes, with no separate internal API required.

The repository is maintained by three contributors: Aymeric Rabot, Wassim Samad, and Sudhir. Development requires running the development server from the root directory to enable hot reload across all packages, and the project provides comprehensive documentation for building plugins, with a worked example available in the pascalorg/plugin-trees repository.

editor
by
pascalorgpascalorg/editor

Repository Details

Fetching additional details & charts...