Giter VIP home page Giter VIP logo

graph-latex-generator's Introduction

Gerador de Grafos com Exportação para LaTeX

Escopo

O projeto consiste em uma aplicação (web/multi-plataforma) para a geração de grafos a partir da entrada do usuário, com a possibilidade de exportação de código LaTeX e de imagem em formato .png. Além da geração a partir da entrada manual, o usuário pode selecionar grafos predefinidos (ex.: grafo completo com N vértices, grafo bipartido, etc.).

Features do Sistema

  • O usuário deve ser capaz de adicionar um grafo (em linguagem matemática ou com ferramenta gráfica da interface)
  • O usuário deve poder, durante a seleção, definir se o grafo é direcionado ou não
  • O usuário deve ser capaz de selecionar um grafo dentre uma coleção de grafos predefinidos
  • O usuário, após selecionar ou adicionar um grafo, deve ser capaz de editá-lo, adicionando/removendo vértices e arestas
  • O usuário deve poder editar as cores de cada vértice
  • O usuário deve ser capaz de exportar o grafo gerado em formato .png
  • O usuário deve ter acesso ao código LaTeX do grafo gerado pelo sistema
  • O usuário deve ser capaz de acessar o histórico de grafos gerados anteriormente, bem como de seus códigos LaTeX
  • O usuário deve ser capaz de criar uma conta (com email e senha) a fim de salvar o conteúdo gerado
  • O usuário deve poder acessar as funcionalidades do sistema a partir de múltiplos dispositivos, mediante criação de conta e autenticação prévia

Membros da Equipe

  • Bruno Oliveira @brunooss: desenvolvedor full-stack
  • Laila Melo @lailamvl: desenvolvedora full-stack
  • Thiago @trassis: desenvolvedor full-stack

Tecnologias

O sistema contará com uma interface web/mobile, que será desenvolvida com React e Typescript, além de um backend serverless baseado em Node.js servido pelo Firebase Functions e um bando de dados NoSQL hospedado em nuvem servido pelo Firebase Firestore.

Backlog do Produto

  • Como usuário, eu gostaria de ser capaz de criar uma conta com email e senha
  • Como usuário, eu gostaria de adicionar um grafo no sistema
  • Como usuário, eu gostaria de selecionar um grafo entre um conjunto de grafos pré-definidos
  • Como usuário, eu gostaria de alterar a quantidade de vértices e arestas do meu grafo
  • Como usuário, eu gostaria de alterar a cor dos vértices do meu grafo
  • Como usuário, eu gostaria de poder tornar meu grafo direcionado ou não
  • Como usuário, eu gostaria de poder acessar o código '''LaTex''' do meu grafo
  • Como usuário, eu gostaria de poder exportar o grafo criado em formato '''.png'''
  • Como usuário, eu gostaria de poder adicionar um grafo nos favoritos
  • Como usuário, eu gostaria de ter acesso aos meus grafos criados recentemente
  • Como usuário, eu gostaria de poder acessar o sitema em múltiplos dispositivos

Backlog da Sprint

  • História 0: Setup Inicial

    • Setup do projeto com Vite e MUI
    • Setup do projeto no Firebase (Authentication & Firestore Database)
    • Instalar biblioteca Cytoscape.js para edição de grafos
  • História 1: Como usuário, eu gostaria de ser capaz de criar uma conta com email e senha

    • Criar tela de login [Laila]
    • Criar tela de criação de conta [Laila]
    • Criar tela de trocar senha [Bruno]
    • Integrar páginas de autenticação com Firebase Authentication [Bruno]
  • História 2: Como usuário, eu gostaria de adicionar um grafo no sistema

    • Criação de página inicial com MUI [Bruno]
    • Setup do editor visual com biblioteca Cytoscape.js [Bruno]
    • Botões na interface para criação de (grafo completo e grafo vazio) [Laila]
    • Desenhar grafo novo em editor visual a partir de input de uma lista de adjacência [Thiago]
  • História 3: Como usuário, eu gostaria de alterar a quantidade de vértices e arestas do meu grafo

    • Adicionar interação para criar novos vértices e arestas (clique com botão direito ou apertar e segurar) [Bruno]
    • Adicionar novos elementos nas informações da definição do grafo (vértices e arestas) [Thiago]
    • Atualizar o código 'LaTeX' gerado executando a função novamente [Laila]
  • História 4: Como usuário, eu gostaria de acessar o código LaTeX do meu grafo.

    • Criar aba 'Código' para visualização do código LaTeX [Laila]
    • Criar modelos padrão a serem exibidos no editor de grafos disponíveis no LaTeX [Laila]
    • Fazer função que recebe informações de grafo construído em editor (coordenadas de vértices, cores, arestas) e gera código LaTeX [Thiago]
    • Adicionar botão para exportar o código ou imagem .png [Bruno]

    Diagramas

    diagrama de classes diagrama de sequencia

graph-latex-generator's People

Contributors

trassis avatar lailamvl avatar brunooss avatar

Stargazers

 avatar

Watchers

 avatar

graph-latex-generator's Issues

Função para geração de código LaTeX

Dado um grafo G = {V, E}, sendo V um array de vértices e E uma array de listas de adjacências, esta função irá gerar o código LaTeX para o grafo correspondente.

Questionamentos válidos:

  • Como gerar um grafo em LaTeX? Achei um pacote tikz na internet, mas é este que vocês usam? (Thiago e Laila)
  • Como gerar de uma forma genérica, isto é, como definir a posição de cada vértice do grafo, para qualquer grafo passado como argumento para a função? (talvez isso possa ser feito obtendo a posição dos vértices do editor de grafo que vamos construir com a lib react)

Integração de Biblioteca para construção de grafos (ou fazer do zero, alternativa perigosa)

Achei essas libs aqui, que podem ser úteis para o nosso projeto!

  • react-digraph (https://github.com/uber/react-digraph): os vértices são círculos ENORMES, mas acredito que deva ter como diminuir. É possível trocar a cor e a posição do vértice, adicionar/remover arestas, etc.
  • reagraph (https://www.npmjs.com/package/reagraph): parece mais performático (considerando que será executado em web), mas não achei formas já implementadas na biblioteca de editar os vértices/arestas

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.