Code Monkey home page Code Monkey logo

skybook's Introduction

O Skybook é o resultado de um desafio tecnico com o objetivo de criar um aplicativo de dashboard para gerenciamento de contatos.

Rodando localmente

Clone o repositório e instale as dependências ulitizando npm ou pnpm.

git clone https://github.com/ralacerda/skybook.git
npm install

Para iniciar o servidor de desenvolvimento:

npm run dev

O servidor estará disponível em http://localhost:5173/

Para criar a build e iniciar uma preview, pare o servidor de desenvolvimento e em seguida:

npm run build && npm run preview

O preview estará disponível em http://localhost:4173/

Ferramentas utilizadas

As principais ferramentas para a criação desse projeto foram a framework de Javascript Vuejs, utilizando Typescript e o pré-processador SASS. Foi utilizado Vite como servidor de desenvolvimento e na produção do bundle final, incluindo minificação do CSS e Javascript final.

Com Vue Router foi possível criar uma experiência de SPA com multiplas páginas, evitando que o navegador fosse atualizado, e permitindo uma navegação rápida dentro do aplicativo.

Foi utilizado Pinia como gerenciador de estado, uma solução robusta e eficiente para o compartilhamento de dados entre os as páginas da aplicação.

O Formkit foi utilizado para a criação dos formuláris de criação e edição de contatos.

Para auxiliar no uso da biblioteca de ícones do Material Design foi utilizado o unplugin-icons.

O projeto foi publicado utilizando Netlify, com builds criadas automaticamente a partir do repositório do GitHub.

Recursos

Ações de Contato

O Skybook possui recursos básicos de um gerenciador de contatos, permitindo editar, adicionar, remover e visualizar detalhes de cada contato.

O aplicativo também inclui botões intuitivos que permitem realizar ligações ou enviar e-mails a partir das informações de contato de cada pessoa.

Responsividade e UX

O design se adapta a diferentes tipos de tela, também considerando posicionamento da tela tanto verticalmente como horizontalmente.

Os recursos de interação e navegação estão sempre visíveis no topo da tela.

Quando um contato não possui informações para fazer uma chamada ou enviar um e-mail, o ícone correspondente é desativado

Ordernar e Buscar

O aplicativo possui opções de ordenação e busca, que facilitam a navegação e localização de contatos.

É possível visualizar os contatos em quatro ordens diferentes: por ordem de criação (crescente ou decrescente), exibindo os mais recentes primeiro por padrão, ou em ordem alfabética (crescente ou decrescente) pelo nome dos contatos.

Lidando com Erros

Caso ocorra algum erro durante fetch request para acessar um Mock API e obter o estado inicial da lista de contatos, como falha na conexão ou resposta com status diferente de 200, uma mensagem de erro é exibida para notificar o usuário com informações sobre problema.

Além disso, o uso de Typescript no código permite uma maior segurança durante o desenvolvimento.

Transições e Animações

Usando as capacidades de transições e animações do Vue, foi possível criar uma animação de transição entre as diferentes páginas. Cada página possui uma informação de profundidade, que é verificada durante a navegação para determinar qual transição deve ser utilizada. Além disso, há uma animação na lista durante buscar ou quando um contato é removido.

Considerações

Existem alguns recursos ou melhorias que não foram implementadas devido à limitação de tempo do projeto, mas que poderiam ser consideradas:

Utilizar um algoritmo de busca que possa rankear resultados, por exemplo, mostrando primeiro nomes que começam com o texto buscada.

Permiter ordenar lista de contatos por acesso ou edição mais recente.

Capacidade de incluir informações arbritárias para um contato, podendo ser diferente para cada contato.

Implementar um diálogo de confirmação ao clicar no botão de exclusão, permitindo que o usuário tenha a oportunidade de confirmar a ação.

A única restrição para a criação ou edição de um contato é que um nome seja fornecido. Isso significa que é possível criar contatos com nomes repetidos. Seria interessante adicionar uma validação para evitar a criação de contatos com nomes duplicados. Atualmente, um alerta é exibido apenas para e-mails não validados, mas a criação do contato ainda é permitida.

skybook's People

Contributors

ralacerda avatar

Watchers

 avatar  avatar

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.