A simplified, web-based image editor inspired by Adobe Photoshop, built with React, TypeScript, and Canvas API.
- Layer System: Create, manage, and organize multiple layers with blend modes
- Drawing Tools: Brush tool with customizable size, opacity, and hardness
- Selection Tools: Marquee and Lasso tools for creating selections
- AI Generate: AI-powered content generation with context-aware inpainting
- Context analysis (lighting, scene, style)
- 4 variation generation
- Color harmonization
- Seamless blending
- Undo/Redo: Full history system for all operations
- Keyboard Shortcuts:
Ctrl/Cmd + Z: UndoCtrl/Cmd + Shift + ZorCtrl/Cmd + Y: Redo
- Node.js 18+ and npm
- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser to
http://localhost:3000
npm run buildThe built files will be in the dist directory.
baby-adobe/
├── src/
│ ├── components/ # React components
│ │ ├── Canvas/ # Canvas rendering
│ │ ├── Toolbar/ # Tool selection
│ │ ├── LayersPanel/ # Layer management UI
│ │ ├── PropertiesPanel/ # Tool properties
│ │ └── GenerativeFill/ # AI fill UI
│ ├── core/ # Core engine
│ │ ├── canvas/ # Canvas engine
│ │ ├── layers/ # Layer system
│ │ ├── tools/ # Tool implementations
│ │ ├── selection/ # Selection & masking
│ │ ├── history/ # Undo/redo system
│ │ └── generative-fill/ # AI processing
│ ├── services/ # Business logic
│ │ ├── ai/ # AI services
│ │ └── image/ # Image processing
│ ├── stores/ # Zustand state management
│ ├── types/ # TypeScript definitions
│ └── utils/ # Helper functions
- Create a Selection: Use the Marquee or Lasso tool to select an area
- Use AI Generate: Click the AI Generate tool (✨), enter a prompt, and generate variations
- Paint: Select the Brush tool and paint on the canvas
- Manage Layers: Use the Layers panel to add, delete, and organize layers
- React 18: UI framework
- TypeScript: Type safety
- Vite: Build tool and dev server
- Zustand: State management
- Tailwind CSS: Styling
- Canvas API: Image manipulation
The application uses a mock AI service by default. To integrate with a real AI service (e.g., Adobe Firefly):
- Create a new service class implementing
IGenerativeFillService - Update the service instantiation in
GenerativeFillDialog.tsx
MIT