Potenciais melhorias
Mais testes, em especial nos Renderers
A quantidade de testes está menor do que eu gostaria. Eu dediquei muito tempo em estudar nos últimos dias como fazer testes que lidam com Canvas, já que eles são basicamente gráficos, algo que nunca tinha tido a oportunidade de implementar.
A rigor há as mais diversas formas, muitas delas envolvendo gerar outputs e comparar imagens com o conteúdo. Não consegui algo muito satisfatório ainda, então estou subindo essa versão sem. Sem dúvida um dos pontos de melhoria.
Lidar com "Canvas Infinito" e elementos fora do viewport
O projeto só lida com um canvas de tamanho fixo iniciando pelo pela coordenada (0,0). Adaptações seriam necessárias para lidar com eixos com valores negativos.
Além disso, todos os elementos são renderizados, independente dele estar visível ou não. O ideal para questões de performance seria "virtualizar" os elementos e renderizar apenas aqueles que de fato estariam visíveis naquela porção de tela sendo exibida pelo navegador. Isso poderia ser feito verificando as dimensões do canvas e dos elementos e verificando se ele está na área demarcada.
Sever Side Rendering
No momento todo o projeto é client-side. Pelo pouco que li, o Fabric.js requer algum nível de cuidado para permitir o seu uso com SSR ativo. Tomei a decisão de não lidar com isso no momento para fins práticos, mas creio ser um ponto de melhoria relevante para uma implementação de mundo real.
Persistência de dados
Não há implementação disso neste projeto. O Live Editor poderia ser integrado com alguma facilidade a uma solução de storage do browser, como o IndexedDB ou o próprio localStorage, armazenando-o serializado. Além disso, existem modulos para Nuxt que expandem essa funcionalidade para uso inclusive com SSR
Wasm e WebGL
Pelo que pude ler e realizar alguns testes, o Fabric.js renderiza de 400 e 800 elementos sem engasgar, e o Canvas é algo em torno de 1000. Se a intenção for lidar com mais elementos que isso seria necessário estudar a viabilidade de utilizar Wasm e WebGL para os gráficos.
Importar
O projeto só exporta para JSON (ou imagem) mas não tem nenhuma ferramenta de importação, ainda que não seja muito complexo para implementar (por exemplo, você pode copiar um .json gerado e colar no Live Editor que ele irá funcionar normalmente)
Mobile Friendly
Eu abri mão deste requisito mais uma vez pensando no tipo de uso da aplicação, então foquei 100% no desktop. Tecnicamente tudo que foi implementado funciona no mobile, mas toda uma adaptação precisaria ser feita, em especial nos controles dos elementos direto no canvas, para a área de toque ser maior e mais fácil de lidar.