{"id":50609873,"url":"https://github.com/nitintf/easel","last_synced_at":"2026-06-06T02:31:01.330Z","repository":{"id":340986439,"uuid":"1168383893","full_name":"nitintf/easel","owner":"nitintf","description":"An AI-native design studio","archived":false,"fork":false,"pushed_at":"2026-02-27T18:59:41.000Z","size":2784,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-27T23:04:18.184Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nitintf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-27T10:22:21.000Z","updated_at":"2026-02-27T18:59:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nitintf/easel","commit_stats":null,"previous_names":["nitintf/pigment","nitintf/easel"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/nitintf/easel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitintf%2Feasel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitintf%2Feasel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitintf%2Feasel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitintf%2Feasel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nitintf","download_url":"https://codeload.github.com/nitintf/easel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitintf%2Feasel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33967639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-06T02:30:59.582Z","updated_at":"2026-06-06T02:31:01.319Z","avatar_url":"https://github.com/nitintf.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"public/icon.png\" alt=\"Easel\" width=\"100\" height=\"100\"/\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eEasel\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  AI-native design studio. Design on a canvas with multiple AI agents working alongside you.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## What is Easel?\n\nEasel is an open-source design studio powered by multiple AI agents. It combines a full-featured vector canvas with an AI-driven workflow where parallel agents can generate, iterate, and refine designs with you in real time. Built as a native desktop app with Tauri for speed and privacy.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/main-screen.png\" alt=\"Easel\" width=\"720\" /\u003e\n\u003c/p\u003e\n\n## Tech Stack\n\nTauri v2 \u0026middot; React 19 \u0026middot; Fabric.js v7 \u0026middot; Zustand v5 \u0026middot; Tailwind v4 \u0026middot; shadcn/ui \u0026middot; Motion \u0026middot; cmdk\n\n## Features\n\n### AI Studio\n\n- Multiple AI agents (1-5) working in parallel with live status indicators\n- Model selection (Claude Sonnet, Opus, Haiku)\n- Per-tab AI sessions — each canvas gets its own conversation context\n- File attachments for context-aware design assistance\n- Floating chat widget with collapsible mini-bar\n\n### Canvas \u0026 Drawing\n\n- Rectangle, ellipse, and text tools\n- Frame containers (like Figma's frames) with child nesting\n- Drag-and-drop layer reordering with visual drop indicators\n- Pan and zoom (trackpad and mouse wheel)\n- Snap-to-grid and smart alignment guides\n- Copy, cut, paste with offset\n- Undo/redo history (50 states)\n- Z-order controls (bring to front, send to back)\n\n### Components\n\n- Mark any object as a component\n- Component layers display with purple diamond icon and purple text\n- Toggle component status from the properties panel\n\n### Layers Panel\n\n- Hierarchical tree view mirroring canvas z-order\n- Expand/collapse frames\n- Visibility toggle per layer\n- Drag-and-drop reparenting (above, below, inside)\n- Color-coded icons: blue for frames, purple for components\n\n### Properties Panel\n\n- Position, size, rotation controls\n- Fill and stroke with color picker\n- Opacity and corner radius\n- Text properties: font family, size, weight, style, alignment, line height, character spacing\n- System font detection\n- Frame presets (Desktop, Tablet, Mobile)\n- Alignment tools (relative to parent frame or canvas)\n- Export to PNG, SVG, JPEG at configurable scale\n- Collapsible edge-anchored mini panel when closed\n\n### Multi-Tab Support\n\n- Multiple canvas tabs with independent state\n- Per-tab canvas serialization and restore\n- Per-tab AI chat sessions\n\n### UI\n\n- Custom macOS title bar with traffic light positioning\n- Command palette (Cmd+K) with tools, edit, view, AI, and system commands\n- Settings dialog\n- Keyboard shortcuts for all major actions\n- Dark theme throughout\n\n## Getting Started\n\n```bash\n# Install dependencies\npnpm install\n\n# Run in development\npnpm tauri:dev\n\n# Build for production\npnpm tauri:build\n\n# Type check\npnpm typecheck\n\n# Lint\npnpm lint\n```\n\n## Keyboard Shortcuts\n\n| Shortcut         | Action                  |\n| ---------------- | ----------------------- |\n| V                | Select tool             |\n| R                | Rectangle tool          |\n| O                | Ellipse tool            |\n| T                | Text tool               |\n| F                | Frame tool              |\n| H                | Hand (pan) tool         |\n| Cmd+C            | Copy                    |\n| Cmd+X            | Cut                     |\n| Cmd+V            | Paste                   |\n| Cmd+D            | Duplicate               |\n| Cmd+Z            | Undo                    |\n| Cmd+Shift+Z      | Redo                    |\n| Cmd+K            | Command palette         |\n| Cmd+J            | Toggle AI chat          |\n| Cmd+\\            | Toggle layers panel     |\n| Cmd+.            | Toggle properties panel |\n| Cmd+,            | Settings                |\n| Delete/Backspace | Delete selected         |\n| ]                | Bring to front          |\n| [                | Send to back            |\n\n## Roadmap\n\n- [ ] AI agent backend integration (currently placeholder responses)\n- [ ] AI-driven design generation directly on canvas\n- [ ] Multi-agent orchestration — agents for layout, color, typography, content\n- [ ] Persistent storage via Tauri/Rust IPC\n- [ ] Component instances and overrides\n- [ ] Auto-layout / flex containers\n- [ ] Multiplayer / real-time collaboration\n- [ ] Plugin system\n- [ ] Vector pen tool and boolean operations\n- [ ] Prototyping and interactions\n- [ ] Design tokens and styles\n- [ ] Asset library and image support\n- [ ] Export to code (HTML/CSS, React, SwiftUI)\n\n## Project Structure\n\n```\nsrc/\n  features/\n    studio/           # Design canvas, toolbar, layers, properties\n      components/\n      hooks/\n      store/\n      types/\n      utils/\n    chat/             # AI agents and chat\n      components/\n      store/\n      types/\n  components/ui/      # shadcn/ui primitives\n  hooks/              # Shared hooks\n  lib/                # Utilities\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitintf%2Feasel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnitintf%2Feasel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitintf%2Feasel/lists"}