Giter Club home page Giter Club logo

bibliotech-rn1's People

Contributors

gabriel-soulcode avatar jose-almir avatar

Watchers

 avatar

bibliotech-rn1's Issues

Área de postagem de blog

Deve haver uma nova área no Bibliotech onde os usuários podem realizar postagem abordando o tema de literatura. Cada postagem será inserida por meio de um formulário com título, texto da postagem (limite de 128 caracteres).

Task relacionada: #41 , #43

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.

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).

Á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.

Controle de postagem do Blog

Com base em #41 e #42 , crie uma página onde o usuário controla as postagens que ele mesmo fez. Ele só pode ser capaz de apagar as postagens criadas por ele mesmo.

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;

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.

Image

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.

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.

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;

Image

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

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

Ao clicar na capa do livro, deve-se abrir a imagem em mais detalhes, sobrepondo a página atual, mas sem sair dela. A ideia é fazer um efeito parecido a quando abrimos como um modal, mas sem bordas apenas uma opção de fechar.

Image

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.

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

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 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.