Design high-impact 3D device mockups, real-time WebGL fluid mesh gradients, retro Bayer dither shaders, and render studio-grade 60 FPS MP4 videos & 4K snapshots directly in your browser β with zero server lag and 100% privacy.
Explore Live Demo (fluidframe.vercel.app) β’ Launch Editor β’ Report Bug
Most graphic design tools are either too basic or weighed down by bulky timelines, expensive subscriptions, and slow cloud rendering queues.
Fluidframe brings GPU-accelerated graphic design and video rendering straight into the browser:
- π 100% Client-Side & Private: All WebGL rendering, dither calculations, and video transcoding happen directly on your machine via WebAssembly. Your images never leave your browser.
- β‘ Instant Workflow: Zero setup, no account barrier, no paywalls. Open the editor and start crafting immediately.
- π¬ Broadcast-Quality Exports: Export crisp 60 FPS MP4 videos, optimized GIFs, and Retina PNG / JPEG / SVG graphics in seconds.
- Hardware-Accelerated GLSL Shaders: Real-time multi-color fluid gradient synthesis running on custom vertex & fragment shaders.
- 5-Point Fluid Color Mixing: Blend rich color harmonies with dynamic wave speed, frequency, noise intensity, and grain controls.
- Curated Palette Library: One-click presets (Chrome, Sunset Silk, Aurora, Velvet Noir, Vaporwave, Solar Flare, Deep Ocean).
- Interactive Shader Animation: Play, pause, or adjust animation speed on the fly with live canvas playback.
- Retro Shader Pipeline: Transform any image layer or canvas background into stylized retro computer graphics.
- Multiple Dither Modes: Ordered Bayer matrices (2x2, 4x4, 8x8), Floyd-Steinberg, Atkinson, and Halftone / Noise dithering.
- Custom Dual-Tone Color Mapping: Map shadows and highlights to custom foreground and background colors with adjustable color steps and pixel scale.
- True 3D Transforms: Full 3-axis rotation (
rotateX,rotateY,rotateZ) to create isometric and perspective product showcases. - Device Clip Paths & Mockups: One-click device frames (Mobile Screen, Browser Window, Pill, Diamond, Hexagon, Polygon).
- Studio Glassmorphism: Realistic frosted glass backdrops with customizable blur radii and translucent specular borders.
- Studio Lighting & Shadows: Layer shadow presets (Soft, Floating, 3D Elevation, Dramatic Neon Glow) with custom color, offset, and spread.
- 13+ Premium Google Fonts: Curated modern typography (Inter, Manrope, Geist, Space Grotesk, Instrument Serif, Poppins, Playfair Display, Oswald, Montserrat).
- Multi-Stop Text Gradients: Linear gradient typography with customizable directions (
to right,to bottom,to bottom right, etc.) and multi-stop color accents. - Text Box Embellishments: Pill background badges, glassmorphic labels, border strokes, and vertical text writing modes.
- Vector Pattern Overlays: Crisp vector patterns (Isometric Grid, Blueprint, Cross Grid, Dots, Diagonal Stripes) with custom color and opacity.
- Studio Texture Overlays: Realistic tactile overlays (Grain, Noise, Paper, Grunge, Scanlines, Dust).
- No Cloud Queue: Utilizes client-side
@ffmpeg/ffmpegcompiled to WebAssembly with dedicated Web Worker processing. - MP4 Video Export (H.264): Export smooth animated WebGL canvas videos with custom durations (3β10s) and frame rates (30 / 60 FPS).
- Optimized GIF Export: Generates high-quality animated GIFs with smart palette quantization.
- Retina Image Snapshots: Crisp static exports in PNG, JPEG, and SVG at 1x, 2x, or 4x pixel density.
- 4K Wallpaper Hub: High-definition abstract, dark, 3D, and minimal wallpapers available instantly inside the editor.
- Meme & Sticker Vault: Curated viral templates and stickers for fast social media content creation.
- Smart Magnetic Snap Guides: Automatic center and edge alignment guides for pixel-perfect positioning.
- Multi-Layer Management: Reorder layers with drag-and-drop, toggle visibility (show/hide), duplicate, and lock layers.
- Canvas Zoom & Viewport: Fit to screen, free zoom slider, and toggleable pixel grid background.
- Full History Stack: Instant undo (
Ctrl+Z) and redo (Ctrl+Y/Ctrl+Shift+Z) for all canvas actions. - Dark & Light Mode: Seamless theme switching with persistent user preference.
| Shortcut | Action |
|---|---|
| Ctrl + Z / Cmd + Z | Undo last action |
| Ctrl + Y / Cmd + Shift + Z | Redo action |
| Ctrl + D / Cmd + D | Duplicate selected layer |
| Delete / Backspace | Delete selected layer |
| Escape | Deselect active layer |
| S | Toggle magnetic snapping guides |
| G | Toggle canvas alignment grid |
| Layer | Technology | Description |
|---|---|---|
| Framework | Next.js 16 (App Router) | Turbo-packed React server components & client routing |
| UI Library | React 19 | Concurrent UI rendering & state orchestration |
| Language | TypeScript 5 | Strict type safety across shaders, models, and stores |
| Styling | Tailwind CSS v4 | Modern CSS engine with @tailwindcss/postcss |
| Component Primitives | Radix UI | Accessible tabs, popovers, dialogs, sliders, and switches |
| Animations | Motion (Framer Motion) | Smooth layout transitions, drawers, and gesture physics |
| State Management | Zustand 5 | Lightweight global canvas state with deep history tracking |
| Graphics & Shaders | WebGL (GLSL ES 1.0/3.0) | High-performance custom shaders for fluid mesh gradients |
| Video Transcoding | FFmpeg.wasm 0.12 | In-browser H.264 MP4 & GIF encoding via WebAssembly |
| Asset CDN | ImageKit | Fast cloud delivery of 4K wallpapers and meme assets |
| Database & ORM | Prisma 7 + PostgreSQL | Ready for optional database integrations and presets |
| Icons | Lucide React & Phosphor Icons | Consistent, crisp iconography |
fluidframe/
βββ app/
β βββ api/
β β βββ imagekit/ # ImageKit asset endpoints (wallpapers, memes)
β βββ editor/ # Visual Studio Editor
β β βββ components/
β β β βββ canvas/ # WebGL canvas, image, text & vector layers
β β β βββ panels/ # Left sidebar, layer manager & right studio panel
β β βββ hooks/ # Selection, dragging & export hooks
β β βββ store/ # Zustand global canvas & history store
β β βββ utils/ # WebGL shader engine, dither engine & FFmpeg service
β β βββ types.ts # Studio element & config interfaces
β β βββ page.tsx # Main editor workspace
β βββ privacy/ # Privacy Policy page
β βββ terms/ # Terms of Service page
β βββ toc/ # Terms & Conditions alias
β βββ layout.tsx # Root layout with Google Fonts & metadata
β βββ manifest.ts # Web App Manifest (PWA ready)
β βββ robots.ts # SEO robots rules
β βββ sitemap.ts # Dynamic XML sitemap
β βββ page.tsx # High-conversion visual studio landing page
βββ components/
β βββ hero.tsx # Hero showcase with live preview
β βββ bentogrid.tsx # Interactive feature demonstration cards
β βββ landing/ # Interactive dither cursor & landing components
β βββ navbar.tsx # Smart scroll navbar
β βββ footer.tsx # Perspective grid footer
β βββ ui/ # Accessible Radix UI components
βββ lib/
β βββ env.ts # T3-OSS type-safe environment validator
β βββ utils.ts # Class merging utilities
βββ prisma/
β βββ schema.prisma # Prisma schema definition
β βββ migrations/ # Database migrations
βββ public/
βββ editor-dark.png # Dark mode studio screenshot
βββ editor-light.png # Light mode studio screenshot
βββ ffmpeg/ # FFmpeg WebAssembly core binaries & worker
Use Node 24.18.0 and npm 11.16.0. npm is the canonical package manager; commit package-lock.json when dependencies change. .nvmrc and .node-version pin the local/Actions runtime, and package.json restricts hosted builds to Node 24.
git clone https://github.com/Digvijay-x1/fluidframe.git
cd fluidframe
nvm install
nvm use
npm install --global npm@11.16.0An equivalent Node version manager can read .node-version. Vercel uses Node 24.x; its runtime patch is managed by the provider. The repository's vercel.json runs the pinned npm version with a frozen install. See the toolchain guide for Actions setup and hosted settings.
npm ci
npm run checkThis is the clean-checkout CI sequence. npm ci rejects manifest/lockfile drift and generates Prisma's client without connecting to a database. npm run check runs lint, formatting, type generation/typecheck, unit tests, and the production build. The core editor needs no .env, database, or production credentials. Builds fetch Google Fonts over HTTPS.
Pull requests run these checks in parallel in GitHub Actions. See the CI guide for the required gate, failure diagnostics, and repository protection.
Individual commands:
| Command | Purpose |
|---|---|
npm run lint |
Next.js, React, and TypeScript lint rules |
npm run format:check |
Check source and documentation formatting |
npm run format |
Apply repository formatting |
npm run typecheck |
Generate Prisma and Next.js types, then run strict TypeScript |
npm test |
Run Vitest, including local draft recovery and environment validation |
npm run build |
Compile and prerender the production app |
For optional integrations, copy the template:
cp .env.example .env| Variable | Requirement |
|---|---|
NEXT_PUBLIC_APP_URL |
Optional HTTP(S) application URL |
IMAGEKIT_ENABLED |
true to enable the wallpaper/meme APIs; defaults to false |
NEXT_PUBLIC_IMAGEKIT_PUBLIC_KEY |
Required when ImageKit is enabled |
IMAGEKIT_PRIVATE_KEY |
Required when ImageKit is enabled; server only |
NEXT_PUBLIC_IMAGEKIT_URL_ENDPOINT |
Required HTTP(S) endpoint when ImageKit is enabled |
DATABASE_ENABLED |
true to validate configuration for optional future persistence; defaults to false |
DATABASE_URL |
Required PostgreSQL URL when database integration is enabled |
SKIP_ENV_VALIDATION |
Only the exact value true bypasses validation; omit for normal builds |
Existing ImageKit deployments must add IMAGEKIT_ENABLED=true. Disabled ImageKit endpoints return HTTP 503 without contacting the provider. The editor, local uploads, IndexedDB recovery, WebGL, and exports remain available without integrations. Database persistence is not currently used by any app route; DATABASE_ENABLED validates the intended configuration and does not add persistence.
See database validation and release safety for schema checks, disposable migration tests, and requirements before enabling production persistence.
An explicit environment check runs before development, type generation, and builds; API modules also validate on load. Missing credentials for enabled integrations and invalid URLs fail before deployment. Use separate preview credentials and set flags in the environment that builds the candidate; public variables are compiled into browser bundles.
npm run devOpen http://localhost:3000, or the editor.
npm run build
npm startContributions, issues, and feature requests are welcome! Feel free to check the issues page.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'feat: add AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the Apache 2.0 License. See LICENSE for more information.
Created with β€οΈ by Digvijay Rawat
- Follow on X: @DIGVIJAY__RAWAT
- GitHub: Digvijay-x1