Skip to content

O projeto "Organo - Pessoas e Times" é uma aplicação React, recém migrada de JS para Typescript, que permite o cadastro de colaboradores em seus respectivos times dentro de uma organização. Cada time é representado por uma cor diferente, tornando a visualização mais intuitiva e agradável.

License

Notifications You must be signed in to change notification settings

Melksedeque/organo-alura-reactjs

Repository files navigation

Projeto Organo - Pessoas e Times - React & Typescript

O projeto "Organo - Pessoas e Times" é uma aplicação React, recém migrada de JS para Typescript, que permite o cadastro de colaboradores em seus respectivos times dentro de uma organização. Cada time é representado por uma cor diferente, tornando a visualização mais intuitiva e agradável.

Tela Principal

Menu

Layout

Layout no Figma

Descrição

Este projeto é uma aplicação React para gerenciar equipes e colaboradores dentro de uma organização.

A aplicação permite aos usuários criar e gerenciar equipes, adicionar colaboradores a essas equipes e visualizar a estrutura da organização. Ela fornece uma interface amigável para adicionar novos membros da equipe, criar novas equipes e personalizar as cores das equipes.

Este projeto ainda está em desenvolvimento para melhorias.

Principais recursos incluem:

  • Criação e gerenciamento dinâmico de equipes
  • Perfis de colaboradores com funcionalidade de favoritos
  • Seções de equipes com códigos de cores
  • Design responsivo para vários tamanhos de tela
  • Alternância de formulários para melhor experiência do usuário

Proximos passos de desenvolvimento

  • Criar possibilidade de um Colaborador pertencer a mais de um time;
  • Criar possibilidade de edição para trocar membros de times;

Tecnologias Utilizadas

  • React.JS: Biblioteca JavaScript para a construção de interfaces de usuário.
  • CSS: Utilizado para a estilização dos componentes e layout da aplicação.
  • JavaScript: Linguagem de programação utilizada no desenvolvimento da lógica da aplicação.
  • useState: Hook do React.JS utilizado para gerenciar o estado dos componentes.
  • useEffect: Hook do React.JS utilizado para realizar o fetch da API.
  • react-icons: Biblioteca para inclusão de ícones no projeto.
  • react-select: Componente de seleção customizável para React.
  • uuid: Biblioteca para geração de identificadores únicos.
  • hex-to-rgba: Utilitário para conversão de cores hexadecimais para RGBA.
  • json-server: Utilizado para criar uma API REST fake para desenvolvimento e testes.

Estrutura de Pastas

organo-alura-reactjs/
├── Database/
│ └── db.json
├── public/
│ ├── imagens/
│ └── manifest.json
├── screenshot/
│ └── tela-principal.png
├── src/
│ ├── compartilhado/
│ │ └── interfaces/
│ ├── componentes/
│ │ ├── Banner/
│ │ ├── BotaoSubmit/
│ │ ├── Campo/
│ │ ├── Colaborador/
│ │ ├── ExibirEsconderFormularios/
│ │ ├── Formulario/
│ │ ├── ListaSuspensa/
│ │ ├── Rodape/
│ │ ├── Time/
│ │ └── TituloSecao
│ ├── App.tsx
│ ├── index.css
│ ├── main.tsx
│ └── vite-env.d.ts
├── .gitignore
├── eslint.config.js
├── icon.ico
├── index.html
├── LICENSE
├── package-lock.json
├── package.json
├── README.md
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts

Arquivos Principais:

  • Database/db.json: Arquivo JSON que contém os dados iniciais de times e colaboradores para a API REST fake
  • src/App.tsx: Componente principal da aplicação que gerencia o estado e a lógica de negócios
  • src/main.tsx: Ponto de entrada da aplicação que inicializa o React
  • src/compartilhado/interfaces/: Diretório contendo as interfaces TypeScript que definem as estruturas de dados
    • IColaborador.ts: Interface para o tipo Colaborador
    • ITimes.ts: Interface para o tipo Times
  • index.html: Template HTML principal que serve como ponto de montagem para a aplicação React
  • vite.config.ts: Configuração do Vite para build e desenvolvimento
  • tsconfig.json: Configuração principal do TypeScript
  • tsconfig.app.json: Configuração do TypeScript específica para a aplicação
  • tsconfig.node.json: Configuração do TypeScript para ambiente Node.js
  • package.json: Configuração do projeto, scripts e dependências
  • eslint.config.js: Configuração do ESLint para linting do código

Como Instalar e Rodar o Projeto

Pré-requisitos:

  • Node.js (versão 12.0 ou superior)
  • npm (versão 6.0 ou superior)
  1. Faça o clone deste repositório em sua máquina local:

    git clone https://github.com/Melksedeque/organo-alura-reactjs.git
  2. Acesse o diretório do projeto:

    cd organo-alura-reactjs
  3. Instale as dependências do projeto:

    npm install
  4. Instale o json-server globalmente:

    npm install -g json-server
  5. Inicie o servidor JSON para usar como base de dados:

    json-server --watch Database/db.json -p 8080
  6. Inicie o servidor de desenvolvimento:

    npm run dev
  7. Acesse a aplicação em seu navegador no endereço http://localhost:8080 para visualizar a API, ou nos links http://localhost:8080/times e http://localhost:8080/pessoas.

  8. Acesse o endereço gerado pelo terminal ao rodar o comando npm run dev, por padrão este endereço é o http://localhost:5173, mas isso pode variar de acordo com as suas configurações de ambiente.

Configuração

A aplicação utiliza um servidor JSON para armazenar e recuperar dados de times e pessoas. Os dados iniciais estão localizados no arquivo Database/db.json. Para modificar as equipes e colaboradores iniciais, você pode editar este arquivo JSON.

Casos de Uso Comuns

  1. Adicionando um novo colaborador:

    • Clique no botão "Criar Card"
    • Preencha os detalhes do colaborador no formulário
    • Selecione a equipe para o colaborador
    • Clique em "Criar Card" para adicionar o novo colaborador
  2. Criando uma nova equipe:

    • Role até a seção "Criar um novo time"
    • Digite o nome da equipe e escolha uma cor
    • Clique em "Criar um novo time" para adicionar a equipe
  3. Favoritando um colaborador:

    • Clique no ícone de estrela no card do colaborador para alternar seu status de favorito
  4. Alterando a cor de uma equipe:

    • Use o seletor de cores na seção de cada equipe para alterar sua cor

Solução de Problemas

Problema Comum: Componentes não renderizando

  • Problema: Você pode ver uma página em branco ou componentes faltando.
  • Solução:
    1. Verifique o console do navegador para mensagens de erro.
    2. Certifique-se de que todas as importações de componentes em App.js estão corretas.
    3. Verifique se os nomes dos componentes no JSX correspondem aos nomes dos componentes exportados.

Modo de Depuração: Para habilitar logs mais detalhados, você pode adicionar declarações console.log nos métodos de renderização dos componentes ou nos hooks useEffect. Por exemplo, em App.js:

useEffect(() => {
  console.log("Estado atual:", { times, colaboradores, exibirFormulario });
}, [times, colaboradores, exibirFormulario]);

Projeto ao Vivo

Você pode ver o projeto ao vivo neste link: https://organo-alura-reactjs.vercel.app/

Fluxo de Dados

A aplicação gerencia o fluxo de dados principalmente através do componente App, que serve como o contêiner principal de estado. Aqui está uma visão geral do fluxo de dados:

  1. O estado inicial é definido em App.js para equipes (times) e colaboradores (colaboradores).
  2. Interações do usuário (por exemplo, adicionar um colaborador, criar uma equipe) acionam atualizações de estado em App.js.
  3. O estado atualizado é passado para os componentes filhos como props.
  4. Componentes filhos (por exemplo, Time, Colaborador) renderizam com base nas props recebidas.
  5. Ações do usuário em componentes filhos (por exemplo, favoritar um colaborador) chamam funções passadas de App.js para atualizar o estado.
     ┌─────────────────────────────────────────────┐
     │                   App                       │
     │  ┌─────────────────────────────────────┐    │
     │  │    Estado (times, colaboradores)    │    │
     │  └─────────────────────────────────────┘    │
     │         │                    ▲              │
     │         │ Props              │ Atualizações │
     │         │                    │ de Estado    │
     │         ▼                    │              │
     │  ┌─────────────────────────────────────┐    │
     │  │ Componentes Filhos (Time, Banner)   │    │
     │  └─────────────────────────────────────┘    │
     └─────────────────────────────────────────────┘

Nota: A aplicação usa o fluxo de dados unidirecional do React, onde o estado é passado através de props e atualizado via callbacks.

Licença

Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.

Autor

About

O projeto "Organo - Pessoas e Times" é uma aplicação React, recém migrada de JS para Typescript, que permite o cadastro de colaboradores em seus respectivos times dentro de uma organização. Cada time é representado por uma cor diferente, tornando a visualização mais intuitiva e agradável.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published