JSON Canvas Viewer

# JSON Canvas Viewer ### Editor visual interativo de JSON com drag and drop para criação de layouts baseados em canvas ![Flutter](https://img.shields.io/badge/Flutter-02569B?style=for-the-badge&logo=flutter&logoColor=white) ![Dart](https://img.shields.io/badge/Dart-0175C2?style=for-the-badge&logo=dart&logoColor=white) ![Contributions Welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=for-the-badge)

Visão Geral

JSON Canvas Viewer é uma aplicação Flutter que combina edição de código em tempo real com renderização visual interativa, permitindo criar, editar e visualizar layouts baseados em JSON através de uma interface intuitiva de arrastar e soltar.

O projeto implementa sincronização bidirecional: mudanças no código refletem instantaneamente no canvas visual e vice-versa, oferecendo aos desenvolvedores controle total sobre a estrutura JSON enquanto manipulam elementos visualmente.

JSON Canvas Viewer Interface


Funcionalidades Principais

Editor de Código em Tempo Real

Editor JSON com syntax highlighting, validação automática e debouncing inteligente para performance otimizada.

Renderização Visual Interativa

Canvas que renderiza elementos baseados em JSON com suporte para múltiplos tipos de elementos e transformações.

Drag and Drop

Arraste elementos visualmente e veja o JSON atualizar em tempo real. Suporte completo para posicionamento preciso.

Redimensionamento Visual

Handles de resize em todos os cantos para ajustar dimensões de elementos com feedback visual instantâneo.

Múltiplos Tipos de Elementos

Suporte para text, rect, image, circle, icon, gradient e line com propriedades customizáveis.

Google Fonts Dinâmico

Carregamento automático de 1400+ fontes do Google Fonts sem necessidade de empacotamento.

Filtros de Imagem

Filtros predefinidos (paris, vintage, classic) aplicados via Core Image com ColorFilter.matrix.

Sistema de Escala Inteligente

Design em coordenadas fixas que escalam automaticamente para qualquer tamanho de tela.


Começar Rápido

### Instalação ```bash git clone https://github.com/yourusername/jsoncanvasviewer.git cd jsoncanvasviewer flutter pub get flutter run -d chrome ``` ### Requisitos - **Flutter**: 3.8.1 ou superior - **Dart**: 3.8.1 ou superior - **Navegador**: Chrome 90+ (recomendado) Ver guia completo →

Exemplo de JSON

{
  "canvas": {
    "width": 360,
    "height": 640,
    "backgroundColor": "#F8F9FA"
  },
  "elements": [
    {
      "type": "rect",
      "x": "center",
      "y": 100,
      "width": 280,
      "height": 200,
      "color": "#FFFFFF",
      "borderRadius": 20,
      "zIndex": 1
    },
    {
      "type": "text",
      "content": "Hello World",
      "x": "center",
      "y": 150,
      "fontSize": 24,
      "fontFamily": "Roboto",
      "weight": "bold",
      "color": "#000000",
      "textAlign": "center",
      "zIndex": 2
    }
  ]
}

Para Desenvolvedores

Arquitetura

Visão geral do padrão MVVM, fluxo de dados e comunicação entre componentes.

Explorar →

Componentes

Documentação detalhada de cada componente com exemplos de código.

Ver Componentes →

Especificação JSON

Formato JSON completo, propriedades do canvas e sistema de cores.

Ver Especificação →

Elementos

Todos os tipos de elementos suportados com propriedades e exemplos.

Ver Elementos →

Referências Técnicas

Renderização

Pipeline de renderização, sistema de escala e ordem de elementos.

Ver Pipeline →

Interatividade

Sistema de gestos, drag and drop, resize e atualização do JSON.

Ver Gestos →

Decisões Técnicas

Escolhas arquiteturais, justificativas e trade-offs.

Ver Decisões →

Instalação

Setup completo, build para produção e deploy.

Ver Instalação →

Arquitetura

O sistema utiliza arquitetura modular com separação clara de responsabilidades e gerenciamento de estado local via StatefulWidget:

┌─────────────────────────────────────────────┐
              HomePage                       
         (Coordenador Principal)             
└─────────────┬────────────┬──────────────────┘
                          
    ┌─────────┘            └─────────┐
                                     
┌──────────────────┐        ┌──────────────────┐
 JsonEditorWidget         CanvasViewerWidget
                                            
  Validação      │◄──────►│  Renderização   
  Debouncing               Interatividade 
  Syntax HL                Callbacks      
└──────────────────┘        └────────┬─────────┘
                                     
                                     
                            ┌──────────────────┐
                            JsonCanvasViewer  
                                              
                              Parse JSON     
                              Render Elements
                              Gestos         
                            └──────────────────┘

Ver arquitetura completa →


Stack

Tecnologia Versão Propósito
Flutter 3.8.1+ Framework cross-platform
Dart 3.8.1+ Linguagem de programação
flutter_code_editor 0.3.0 Editor com syntax highlighting
google_fonts 6.1.0 Carregamento dinâmico de fontes
highlight 0.7.0 Syntax highlighting JSON

Casos de Uso

### Ideal Para: - **Designers** - Prototipagem rápida de layouts com código - **Desenvolvedores** - Criação de interfaces baseadas em JSON - **Criadores de Conteúdo** - Templates visuais com controle de código - **Equipes** - Colaboração entre design e desenvolvimento - **Educação** - Ensino de conceitos de layout e JSON

Plataformas Suportadas

Plataforma Status Notas
Web (Chrome) ✅ Totalmente testado Plataforma recomendada
Web (Edge) ⚠️ Parcialmente testado Funcionalidade básica
Desktop ⚠️ Não testado Deve funcionar
Mobile ❌ Não otimizado Interface não adaptada

Próximos Passos

1. Setup Inicial

Configure o projeto e entenda os requisitos.

Começar →

2. Entender Arquitetura

Aprenda sobre componentes e fluxo de dados.

Explorar →

3. Criar Elementos

Documentação completa de tipos de elementos.

Ver Elementos →

4. Contribuir

Ajude a melhorar o projeto.

Ver Guia →

Contribuindo

Esta é uma documentação viva e o projeto está em desenvolvimento ativo. Contribuições são bem-vindas!

Ver guia de contribuição →

Abrir issue no GitHub →


Made with 💙 by Conty Team