Materializr
Open-source parametric 3D CAD for makers — constraint sketches, solid modeling, threads, SVG & text engraving, STL/STEP export. Android, iPad, Linux, Mac, Windows. Vibe coded.
Generate beautiful 2D fractals with AI assistance. Explore Mandelbrot sets, Julia sets, and many more fractal types with interactive controls.
DesignJavaScript · HTMLGitHub @NooshuOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A web-based fractal generator 100% written by AI tooling, an experiment into as to how far existing AI can get us in 2025.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A web-based fractal generator using regl and WebGL. This project demonstrates interactive fractal visualization with real-time rendering capabilities, machine learning-powered discovery, and extensive performance optimizations.
AI coding agents: See AGENTS.md for build commands, conventions, and subtree-specific guidance. Nested files live in tests/AGENTS.md and static/js/AGENTS.md.
FractalAI includes a comprehensive collection of fractals organized into families:Read the full README ↗A web-based fractal generator using regl and WebGL. This project demonstrates interactive fractal visualization with real-time rendering capabilities, machine learning-powered discovery, and extensive performance optimizations.
Version: 7.1.0
AI coding agents: See AGENTS.md for build commands, conventions, and subtree-specific guidance. Nested files live in
tests/AGENTS.mdandstatic/js/AGENTS.md.
FractalAI includes a comprehensive collection of fractals organized into families:
FractalAI includes a mobile-first minimal UI for phones and tablets:
FractalAI includes an intelligent discovery system that uses machine learning to find interesting fractal views:
FractalAI includes extensive performance optimizations for smooth, responsive rendering:
If you use nvm, run nvm use to automatically switch to the correct Node.js version.
Note: Cloudflare Pages (build image v3) uses Node.js 22 by default. This repo pins
22.16.0in.nvmrcto keep local development and Pages builds consistent.
npm install
npm start
(npm run dev is equivalent.)
http://localhost:5173)npm run build
The built files will be in the dist/ directory. The build process includes:
This project is configured for deployment on Cloudflare Pages using the v3 build system.
Connect your repository to Cloudflare Pages:
Configure build settings:
npm run build (⚠️ Do NOT use npm install && npm run build - Cloudflare Pages already runs npm clean-install automatically)dist/ (leave empty or use /)22 (recommended to pin 22.16.0 to match .nvmrc)Deploy! Cloudflare Pages will automatically build and deploy on every push to your main branch.
Install Wrangler CLI (if not already installed):
npm install -g wrangler
Build the project:
npm run build
Deploy to Cloudflare Pages:
wrangler pages deploy dist
_routes.json - Handles SPA routing (automatically copied to dist/ during build)wrangler.toml - Cloudflare Pages configuration for local developmentThe _routes.json file ensures that all routes are handled by the client-side application, which is essential for single-page applications.
FractalAI includes comprehensive testing infrastructure:
npm test # Run all tests
npm run test:unit # Run unit tests only
npm run test:watch # Watch mode
npm run test:visual # Run visual tests
npm run test:visual:update # Update snapshots
npm run test:visual:ui # Interactive UI mode
npm run test:visual:report # View test report
npm run lint # Check linting
npm run lint:fix # Fix linting issues
npm run format # Format code
npm run format:check # Check formatting
npm run stylelint # Check CSS styles
npm run check # Run all checks
FractalAI includes various performance optimizations and experimental features that can be enabled or disabled via feature flags. All feature flags are located in static/js/core/config.js under the CONFIG.features object.
These features are enabled by default and will automatically activate when browser support is detected:
offscreenCanvas: true)static/js/core/config.js → CONFIG.features.offscreenCanvasstatic/js/rendering/offscreen-renderer.jsOffscreenCanvas API availableOffscreenCanvas, then transfers results using transferToImageBitmap() for non-blocking, smoother renderingOffscreenCanvas APIocclusionQueries: true)static/js/core/config.js → CONFIG.features.occlusionQueriesstatic/js/rendering/occlusion-query.jsadaptiveQuality: true)static/js/core/config.js → CONFIG.features.adaptiveQualitystatic/js/rendering/adaptive-quality.jsmultiResolution: true)static/js/core/config.js → CONFIG.features.multiResolutionstatic/js/rendering/multi-resolution.jstimerQuery: true)static/js/core/config.js → CONFIG.features.timerQuerystatic/js/rendering/gpu-timer.jsEXT_disjoint_timer_query extension (WebGL1) or EXT_disjoint_timer_query_webgl2 extension (WebGL2)These features are implemented but disabled by default. Enable them by setting the flag to true in static/js/core/config.js:
webgpu: false)static/js/core/config.js → CONFIG.features.webgpustatic/js/rendering/webgpu-renderer.jsnavigator.gpu availablecomputeShaders: false)static/js/core/config.js → CONFIG.features.computeShadersstatic/js/rendering/webgl-compute-renderer.jsWEBGL_compute_shader extension availableWEBGL_compute_shader extension becomes widely availablesharedArrayBuffer: false)static/js/core/config.js → CONFIG.features.sharedArrayBufferstatic/js/workers/shared-array-buffer-utils.jsSharedArrayBuffer availablepredictiveRendering: false)static/js/core/config.js → CONFIG.features.predictiveRenderingstatic/js/rendering/predictive-rendering.jswebCodecs: false)static/js/core/config.js → CONFIG.features.webCodecsstatic/js/export/video-encoder.jswasmSimd: false)static/js/core/config.js → CONFIG.features.wasmSimdstatic/js/workers/wasm-simd-utils.jsWorker-based optimizations are controlled separately in CONFIG.workers:
workers.enabled: true (auto-detected based on hardware)workers.minCores: 2 (minimum CPU cores required)workers.maxWorkers: 4 (maximum worker threads)workers.requireSharedArrayBuffer: false (optional, requires COOP/COEP headers)Workers are automatically enabled when:
minCores)static/js/workers/feature-detection.js)To modify feature flags, edit static/js/core/config.js:
export const CONFIG = {
features: {
// Enable an experimental feature
webgpu: true, // Change from false to true
// Disable a default feature
multiResolution: false, // Change from true to false
},
};
After changing feature flags, restart the development server or rebuild for production.
The application automatically detects browser capabilities and enables features when available. You can check which features are active by:
FractalAI/
├── index.html # Main HTML file
├── static/
│ ├── css/
│ │ └── styles.css # All application styles
│ ├── js/
│ │ ├── main.js # Main application entry point
│ │ ├── core/ # Core application logic
│ │ │ ├── app-state.js # Application state management
│ │ │ ├── config.js # Configuration and feature flags
│ │ │ ├── initialization.js # App initialization
│ │ │ ├── logger.js # Development logging
│ │ │ ├── lifecycle-manager.js # Session lifecycle management
│ │ │ └── idle-cleanup.js # Idle resource cleanup
│ │ ├── fractals/ # Fractal implementations
│ │ │ ├── 2d/ # 2D fractal implementations (100+ files)
│ │ │ │ └── families/ # Fractal family groupings
│ │ │ ├── loader.js # Fractal loading system
│ │ │ ├── utils.js # Shared fractal utilities
│ │ │ ├── fractal-config.js # Fractal configuration
│ │ │ └── fractal-info.js # Fractal metadata
│ │ ├── rendering/ # Rendering engine and optimizations
│ │ │ ├── engine.js # Main rendering engine
│ │ │ ├── canvas-renderer.js # Canvas setup
│ │ │ ├── adaptive-quality.js # Adaptive quality management
│ │ │ ├── multi-resolution.js # Multi-resolution rendering
│ │ │ ├── occlusion-query.js # Occlusion query optimization
│ │ │ ├── predictive-rendering.js # Predictive rendering
│ │ │ ├── tile-renderer.js # Tile-based rendering
│ │ │ ├── gpu-timer.js # GPU timing
│ │ │ ├── context-loss-handler.js # Context loss recovery
│ │ │ └── uniform-buffer.js # WebGL2 UBO support
│ │ ├── discovery/ # ML-based discovery system
│ │ │ ├── discovery-manager.js # Discovery system manager
│ │ │ ├── discovery-algorithm.js # Discovery algorithms
│ │ │ ├── ml-trainer.js # ML model training
│ │ │ └── favorites-manager.js # Favorites management
│ │ ├── workers/ # Web Worker implementations
│ │ │ ├── pool.js # Worker pool management
│ │ │ ├── feature-detection.js # Worker capability detection
│ │ │ └── tile-protocol.js # Tile rendering protocol
│ │ ├── ui/ # UI components
│ │ │ ├── controls.js # UI controls
│ │ │ ├── panels.js # Panel management
│ │ │ ├── presets.js # Presets UI
│ │ │ ├── discovery-ui.js # Discovery UI
│ │ │ └── exif-editor.js # EXIF metadata editor
│ │ ├── sharing/ # Sharing and state management
│ │ │ ├── state-manager.js # URL state management
│ │ │ ├── encoder.js # State encoding
│ │ │ └── decoder.js # State decoding
│ │ ├── export/ # Export functionality
│ │ │ └── video-encoder.js # Video export
│ │ └── performance/ # Performance monitoring
│ │ ├── fps-tracker.js # FPS tracking
│ │ ├── instrumentation.js # Performance instrumentation
│ │ └── long-task-detector.js # Long task detection
│ └── presets/ # Fractal presets
│ ├── presets.json # Preset configurations
│ └── images/ # Preset preview images
├── tests/
│ ├── unit/ # Unit tests (62 test files, 941+ tests)
│ └── visual/ # Visual regression tests
├── scripts/ # Build scripts
│ ├── generate-presets-manifest.js
│ └── compress-brotli.js
├── package.json # Dependencies and scripts
├── vite.config.js # Vite configuration
├── vitest.config.js # Vitest configuration
└── playwright.config.js # Playwright configuration
Requires a modern browser with WebGL support:
We welcome contributions! Please see CONTRIBUTING.md for guidelines on:
AI coding agents should read AGENTS.md first (with nested guidance in tests/AGENTS.md and static/js/AGENTS.md).
This work is licensed under a Creative Commons Attribution 4.0 International License.
See LICENSE file for full legal text.