Skip to content

Paker-kk/MakingLovart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

MakingLovart

🎨 MakingLovart

AI-Native Infinite Canvas for Creative Minds

用一句话描述你的想象,AI 帮你画出来

Quick StartFeaturesTech StackDeploymentContributing

React 19 TypeScript Vite 6 Gemini Apache 2.0 License Docker


✨ What is MakingLovart?

MakingLovart 是一个 AI 驱动的无限画布创作工具,灵感来源于 Miro + Lovart。你可以在白板上自由绘制、拖放素材,然后用自然语言提示词让 AI 生成图片、编辑图片、甚至生成视频——一切都在一个流畅的画布体验中完成。

Think of it as: Figma's infinite canvas + ChatGPT's intelligence + Stable Diffusion's creativity — all in your browser.


🚀 Quick Start

Prerequisites

Install & Run

# Clone
git clone https://github.com/Paker-kk/MakingLovart.git
cd MakingLovart

# Install dependencies
npm install

# Configure your API key
cp env.example .env
# Edit .env and add your GEMINI_API_KEY

# Start dev server
npm run dev

Open http://localhost:3000 and start creating 🎉


🎯 Features

🖌️ Infinite Canvas

  • 无限缩放与平移的白板画布
  • 自由绘制、形状、文字、箭头、线条等基础工具
  • 多元素选择、对齐辅助线、图层管理
  • 亮色 / 暗色主题自适应

🤖 AI-Powered Generation

  • 文生图: 输入提示词,Gemini / DALL-E / SDXL 直接生成图片到画布
  • 图生图: 选中画布上的图片 + 提示词 → AI 编辑
  • 文生视频: Veo 2.0 视频生成,支持 16:9 / 9:16
  • 首尾帧动画: 选中或 @引用起始帧图片,Veo 自动生成过渡动画视频
  • LLM 提示词润色: 一键开关自动润色,生成前用 AI 优化你的提示词

📎 @Mention 引用系统

  • 在输入框中 @ 引用画布上的任意元素
  • @引用的图片自动作为参考图注入生成流程
  • 视频模式下优先使用选中图片或首张 @引用图片作为参考帧

🔑 多 Provider API 管理

  • 支持 Google (Gemini/Imagen/Veo)OpenAI (GPT/DALL-E)Anthropic (Claude)Stability (SDXL)QwenBanana 等多家 AI 服务
  • 按 Provider 自动推断可用模型,底部输入栏只显示已配置的模型
  • API Key 验证 + 状态指示 + 生成前预检

🎭 角色锁定 (Character Lock)

  • 选中一张角色图片 → 锁定为参考角色
  • 后续生成自动注入角色描述,保持面部、发型、服装、体态一致性

📦 素材库 & 灵感面板

  • 角色 / 场景 / 道具分类素材管理
  • 生成历史自动记录
  • 一键将素材拖入画布

🛠️ 更多能力

  • 多画板管理,自由切换工作空间
  • 右键菜单快捷操作
  • 拖拽 / 粘贴上传参考图
  • 效果预设保存与复用
  • 国际化 (中/英双语)

🏗️ Tech Stack

Layer Technology
Framework React 19 + TypeScript 5.8
Build Vite 6
Rich Text Tiptap 3 (@mention, suggestion)
AI SDK @google/genai (Gemini, Imagen, Veo)
Multi-Provider OpenAI, Anthropic, Stability, Qwen, Banana
Styling Tailwind CSS + CSS Custom Properties
Deployment Docker + Nginx / Vercel / Static

📁 Project Structure

MakingLovart/
├── App.tsx                    # 主应用(画布、状态、生成逻辑)
├── index.tsx                  # 入口文件
├── types.ts                   # 全局类型定义
├── translations.ts            # 国际化文案(中/英双语)
├── styles.css                 # 全局样式 & CSS 变量(亮色/暗色主题)
├── components/
│   ├── PromptBar.tsx          # 底部智能输入栏(模式切换、模型选择、@mention)
│   ├── Toolbar.tsx            # 左侧工具栏(绘制、形状、文字等)
│   ├── WorkspaceSidebar.tsx   # 左侧面板(画板管理 + 图层面板)
│   ├── RightPanel.tsx         # 右侧面板(生成设置 + 灵感/素材库)
│   ├── CanvasSettings.tsx     # 设置面板 & API Key 管理
│   ├── LayerPanel.tsx         # 图层管理面板
│   ├── InspirationPanel.tsx   # 灵感 & 历史面板
│   ├── AssetLibraryPanel.tsx  # 素材库面板
│   ├── BoardPanel.tsx         # 画板管理面板
│   ├── RichPromptEditor.tsx   # Tiptap 富文本编辑器
│   ├── CanvasMentionExtension.tsx  # @mention 扩展
│   ├── MentionList.tsx        # @mention 下拉列表
│   ├── QuickPrompts.tsx       # 快捷提示词模板
│   ├── NodeWorkflowPanel.tsx  # 节点工作流面板
│   ├── ConfigManager/         # API Key 配置管理组件
│   └── nodeflow/              # 节点编辑器内核
├── services/
│   ├── geminiService.ts       # Google Gemini/Imagen/Veo API 封装
│   ├── aiGateway.ts           # 多 Provider 路由网关
│   └── bananaService.ts       # Banana Vision Agent
├── utils/
│   ├── assetStorage.ts        # 素材持久化(localStorage)
│   ├── fileUtils.ts           # 文件处理工具
│   ├── generationHistory.ts   # 生成历史管理
│   └── uiScale.ts            # 响应式 UI 缩放指标
├── tests/                     # 自动化测试
│   ├── aiGateway.test.ts
│   ├── aiGatewayValidation.test.ts
│   ├── geminiService.test.ts
│   ├── generationHistory.test.ts
│   └── types.test.ts
├── Dockerfile                 # 多阶段 Docker 构建
├── docker-compose.yml         # Docker Compose 编排
└── nginx.conf                 # Nginx 生产配置

🐳 Deployment

Docker (推荐)

# 一键启动
docker-compose up -d

# 访问
open http://localhost:3000

Static Build

npm run build
# 产物在 dist/ 目录,部署到任意静态服务

Vercel / Netlify

直接连接 GitHub 仓库即可自动部署,零配置。

📖 详细部署指南请参考 DOCKER_GUIDE.md


⚙️ Configuration

在项目根目录创建 .env 文件:

# Required: Google Gemini API Key
GEMINI_API_KEY=your_gemini_api_key_here

# Alternative: Vite-prefixed (auto-exposed to client)
VITE_GEMINI_API_KEY=your_gemini_api_key_here

更多 Provider 的 API Key 可在应用内 设置 → API 配置 中动态添加。


🤝 Contributing

我们欢迎所有形式的贡献!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开 Pull Request

📖 详细贡献指南请参考 CONTRIBUTING.md

📖 行为准则请参考 CODE_OF_CONDUCT.md


� Acknowledgments

本项目受到以下优秀项目的启发:


⭐ Star

如果这个项目对你有帮助,欢迎给我一个 Star ⭐,谢谢!这对我真的很重要!

Star History Chart


�📄 License

本项目基于 Apache License 2.0 开源。

About

MakingLovart is a web-based infinite canvas inspired by Lovart. It merges flexible drawing tools, a layered workspace and an organized inspiration library with AI-driven image/video generation (via Google Gemini) to accelerate creative workflows.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages