bibliotech-rn1's People
Forkers
fernanda-franco devruso leopachecof gabyruas cristianoans rafael02102 d-caio jessicavenancio diegoarruda joseaugustojasfarias gabdiniz juliocesarcodes oliverdn95 eujoaolima tgo-mas utescherintrieri zambonia luizeduardotesta sandramsilva gabiaragabibliotech-rn1's Issues
Melhorias de acessibilidade: uso de tooltips nos principais botões da aplicação
Adicione o elemento de Tooltip do React-Bootstrap nos principais botões de ação do Bibliotech: Entrar, Cadastrar, Entrar com o Google, Logout, Adicionar livro, Editar Livro, Deletar Livro, Adicionar empréstimo, Editar empréstimo, etc.
Dica: Tooltips
Melhorias de identidade visual da aplicação
- No arquivo index.html, aprimore as informações de SEO, fornecendo mais informações sobre o Bibliotech;
- Altere o favicon para utilizar o logo padrão da aplicação;
- Altere todos os logos de 192, 512 e etc com o logo padrão da aplicação, conforme o dimensionamento;
- Altere os metadados em manifest.json para corresponder as mudanças;
- Robots.txt
DICA 1: Meta Tags
DICA 2: Exploring Manifest.json
DICA 3: Explorando o robots.txt
Área de postagem de blog
Recurso de esqueci minha senha
Deve haver um link na página de login com a opção "Esqueci minha senha". Ela deve abrir uma nova página onde o usuário vai digitar o email e receber em sua caixa de entrada um email para definir uma nova senha.
Aplicar Breadcumbs nas páginas relacionadas a Livros, Empréstimos e etc
Use este componente para indicar a posição atual da página e a hierarquia das rotas.
DICA: Breadcumbs
Atalho para atualizar o status do empréstimo
Na tabela de empréstimos, adicionar um Dropdown que auxilia alterar o status do empréstimo rapidamente entre: pendente, devolvido;
Tasks relacionadas: #21
Livros com menos empréstimos realizados
Montar na home uma visualização que indique quais livros estiveram menos em empréstimos. A visualização deve ser montada em um carrossel.
Github Login Provider
Criar feature para um novo método de login por meio do Github.
Lembrar qual tema foi escolhido pelo usuário da aplicação
Após #7
Usando o recurso de LocalStorage, salve o tema pré-definido pelo usuário e caso ele altere, mesmo que a página seja recarregada por completo o tema escolhido será definido automaticamente.
Informações do usuário no topo do Menu
Usando as informações fornecidas pelo contexto AuthContext, exiba o nome de exibição do usuário, e caso este seja ausente use o endereço de email apenas com a parte antes do @. Por exemplo:
[email protected] -> jose.almir
Múltiplas categorias para Livro
O campo de categoria deverá suportar várias categorias predefinidas que devem ser selecionadas na hora do registro. A propriedade de categoria do livro deverá ser um array a partir de então.
Botão de mostrar/ocultar senha
Com base nos campos do Bootstrap. Crie nos campos de senha a lógica de ocultar e mostrar a senha ao clicar em um botão próximo ao input.
Quiz de múltiplas questões
Deve haver uma página pública no Bibliotech que mostra um quiz com algumas perguntas sobre literatura. No fim o quiz deve mostrar a pontuação total obtida pela pessoa.
Facebook Login Provider
Criar feature para um novo método de login por meio do Facebook.
Adicionar redirecionamento para rotas internas na página de Cadastro
Contador de empréstimos
Após a #5, adicione uma galeria de cards que mostram estatísticas de cada livro:
- Quantos empréstimos foram realizados para aquele livro;
- Quantos desses empréstimos estão pendentes;
- Quantos desses empréstimos foram devolvidos;
DICA: Explore manipular os dados das duas coleções, filtrando, contando e etc.
Confirmação de email de usuário
Após o cadastro por meio de email/senha, podemos checar se a conta deste usuário foi verificada ou não. Caso não tenha sido o usuário não deve ter acesso ainda as rotas principais, deve ser redirecionado para uma tela onde ele poderá clicar para receber um email de confirmação (é importante deslogar o usuário em seguida para que ele logue novamente).
Tabela de últimos empréstimos na Home
Adicione a página da Home, após #4, a tabela que mostra os últimos 5 empréstimos realizados e tenha uma coluna estimando o tempo de maneira escrita, conforme tabela abaixo:
Dica 1: Ordenar e limitar dados com o Cloud Firestore
Dica 2: timeago-react
Área de listagem de blogs
Área de autores
Crie uma área para adicionar e visualizar novos autores conforme as áreas de livros e empréstimos, eles devem ter nome e email.
Implementar um Footer para o Bibliotech
O Rodapé deverá estar presente em todas as rotas que não fazem parte da aplicação principal (Root).
Controle de postagem do Blog
Página de Ajuda
Crie uma nova página de Ajuda para o Bibliotech, ela deve utilizar componentes da biblioteca React-Bootstrap. Ela deve ter conteúdo válido e não apenas estrutura (use lorem se necessário).
Deve haver obrigatoriamente:
- Accordions;
- Carousel;
- e etc;
Páginação de empréstimos
Quando há muitos registros na listagem, pode se tornar complicado para o usuário navegar por tantos registros verticalmente. Adicione o recurso de paginação para que mostre uma quantidade fixa de empréstimos por vez, e seja possível avançar entre as "páginas".
DICA 1: Paginar dados com cursores de consulta
DICA 2: Pagination Bootstrap
Tema claro/escuro da Aplicação
Defina um novo contexto para definir o tema claro/escuro da aplicação globalmente. Pesquise e veja métodos comuns de como aplicar tema escuro no React. Deve haver um botão no Menu que ao ser clicado alterna entre os temas. Toda a aplicação deve manter consistência visual.
Tasks relacionadas: #30
Página de venda do Bibliotech
Crie uma página de venda (estilo landing page) para o Bibliotech, esta página é pública, todos podem acessar.
Devem haver os componentes:
- Carousel,
- Cards,
- Modal e etc;
Notificação de problemas da aplicação
Ter um novo espaço para notificar problemas que estão acontecendo na aplicação. É um formulário com título e descrição do problema que deve ser salvo no banco de dados. Caso a #28 tenha sido feita, adicionar um novo problema ao banco de dados com título: "Rota indefinida" e a descrição seria: "Acesso a rota /das", por exemplo, ao clicar em reportar.
Upload de foto de perfil do usuário
Após #13 , adicione a possibilidade do usuário definir uma nova foto de perfil realizando o upload de uma nova imagem.
Alternar visualizações de livros
Possibilite na área de livros, alternar entre a visualização da tabela e uma visualização em grade de cards dos livros. Deve haver um botão que alterna entre as duas vistas.
Busca por título e ISBN
Na área de livros, possibilite um campo de busca por título e ISBN. Ao tempo que o usuário digita as informações no campo a busca deverá ser efetuada e mostrada na tabela.
DICA: É possível utilizar os métodos de filter ou find
Espelhamento de dados entre Authentication x Firestore
No momento do cadastro de um novo usuário, seja por email/senha ou outros provedores, crie um novo documento com as informações centrais daquele usuário numa coleção de usuários. O ID do documento deve ser o user.uid por questões de praticidade.
Implementação de regras do firebase
Todo sistema possui restrições quanto ao acesso aos dados, e o Firebase não é diferente. Alguns recursos só podem ser acessados se determinadas regras forem cumpridas. As regras são:
- Coleção de livros: leitura, inserção, atualização e remoção (apenas usuários autenticados);
- Coleção de empréstimos: leitura, inserção, atualização e remoção (apenas usuários autenticados);
- Upload de imagens: subir imagens (apenas usuários autenticados);
- Coleção de blogs (caso exista): leitura (todos), inserção (apenas usuários autenticados), atualização e remoção (apenas o usuário que criou o blog);
- Outras possíveis coleções: avaliar se faz sentido ela ser pública ou não.
OBS: Para entregar esta task deve ser criado um arquivo no projeto chamado firebase.rules.
Bate-papo entre usuários da aplicação
Deve haver uma área na aplicação que permita o bate-papo entre usuários em tempo real.
Implementar conteúdos da Home
Aplicar à página principal da aplicação conteúdos que remetem a uma página principal da aplicação. Mostrar em cards informações gerais do sistema:
- Total de empréstimos;
- Total de livros cadastrados;
- Total de empréstimos pendentes x devolvidos;
Dica: Utilize as funções filter e propriedade length para montar as visualizações acima.
Aplicar offcanvas no Menu
Ao invés de expandir o Collapse ao clicar no Navbar Toggle, deve se abrir um componente Offcanvas com as opções do Menu, aproximando-se mais ainda de um dispositivo móvel.
DICA: Offcanvas
Soft-delete: funcionalidade que evita o delete permanente dos livros
Criar campo active de valor boolean, ao invés de deletar de vez do banco marcar como active = false. Lembrar que ao fazer isso, todas as listagens de livros do projeto devem ser atualizadas para filtros que considerem active = true.
DICA: Consultas simples
Relacionar livros e autores
Com base em #19 , no cadastro de livros, o campo autor deve ser convertido para um campo de seleção para relacionar o livro e o autor dele (refatore o que for necessário).
Destacar capa do livro
Foto de perfil do usuário no Menu
Após #16 , adicionar nova alteração no Menu para exibir a foto de perfil do usuário. Caso não exista usar um placeholder de avatar de usuário.
Problema de redirecionamento na aplicação ao recarregar com F5
Aplicar componente de Splash ao carregar dados de autenticação do usuário
Esta task depende de #2 . Ao abrirmos a página é desejável mostrar uma tela introdutória do sistema (componente Splash), enquanto o status de autenticação está pendente (conforme imagem de demonstração abaixo).
Dica: Use a função setTimeout para criar um "delay" maior na tela de Splash antes de mostrar o restante da aplicação.
Página de Not Found
Crie uma riquíssima página de Not Found com recursos para voltar para alguns pontos possíveis da aplicação.
Ao clicar em Reportar deve-se abrir um modal indicando que houve a notificação para os desenvolvedores (apenas visual). Caso #20 tenha sido feita antes, leia o conteúdo da task para aplicar o envio da notificação do problema para o banco de dados.
DICA 1: Button Group
DICA 2: Modal
Customizar o Bootstrap com uso do Sass
Você deve aplicar as alterações necessárias para que possa adicionar cores e configurações personalizadas ao seu projeto com React + Bootstrap. Essas estilizações devem estar em concordância para que o projeto seja visualmente consistente.
DICA: Material do Teachable sobre React-Boostrap
Data de entrega dos livros emprestados
No cadastro de empréstimos adicione o campo data de entrega. Agora baseado na data de entrega do livro caso a data limite tenha passado o status do livro deve ficar vermelho com o conteúdo "atrasado"
Mais detalhes sobre o livro
Na área de livros, na coluna de ações, adicione um botão para ver mais detalhes sobre um livro específico. Deve-se abrir um modal de informações.
DICA: Modals
Área de Perfil do Usuário
Crie uma área de perfil do usuário. Nela ele será capaz de acessar e alterar algumas informações do Authentication:
- Email;
- Senha;
- Display Name;
- Extra: Deletar a conta de usuário;
DICA 1: Atualizar perfil de usuário
DICA 2: Atualizar email
DICA 3: Atualizar senha
Esquematização de mensagens de erro
Quando temos um erro do Firebase, podemos tratar ele via catch e mostrar algum feedback para o usuário. Nas chamadas de autenticação em login, cadastro e etc mostre no Toast uma mensagem em português para cada erro em específico. Inspecione o erro.code
, e aplique uma estratégia para reutilizar o código em diferentes páginas:
const errors = {
"auth/wrong-password": "Senha incorreta",
"auth/user-not-found": "Usuário inexistente",
"auth/weak-password": "Senha fraca",
"auth/too-many-requests": "Muitas requisições realizadas",
"auth/email-already-in-use": "Conta já registrada com este email",
};
export const firebaseError = (code) => errors[code] ?? "Um erro ocorreu";
// Uso
const mensagem = firebaseError("auth/wrong-password"); // "Senha incorreta"
const mensagem2 = firebaseError("codigo invalido"); // "Um erro ocorreu"
Página de detalhe do livro
Ao clicar no nome do Livro, devemos abrir uma nova página que mostra em mais detalhe o livro em particular. Exemplo de rota com parâmetro:
/livros/Njz8jGFWBqlNkddIrM2s
Página de Políticas de Privacidade
Crie uma nova página de Política de Privacidade para o Bibliotech, ela deve utilizar componentes da biblioteca React-Bootstrap. Ela deve ter conteúdo válido e não apenas estrutura (use lorem se necessário).
Devem haver obrigatoriamente os componentes:
- Tabs;
- ListGroup;
- Accordions;
- e etc;
Likes nas postagens do Blog
Com base em #43, implemente a possibilidade de outros usuários realizarem a ação de like em uma postagem de Blog, essa quantidade deve ser atualizada toda vez que alguém der um like.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.