Skip to content

midlourenco/paj-aorworld

Repository files navigation

Projeto 5 - PAJ 2021/22

Autor:

  • Mariana Lourenço

Objectivo:

Este projeto visa a implementação em ReactJS de uma plataforma de gestão de projetos e notícias da organização AoR World com um servidor REST e com persistência de dados guardados em base de dados MySQL, usando Java Peristence API (JPA) com hibernate. Introduzindo também componentes que utilizam Websocket, testes unitários e internacionalização.
A aplicação web deve permitir a utilizadores criar projectos e notícias que possam estar associados entre si, com utilizadores e/ou palavras-chaves. Devem existir 3 níveis de privilégios de utilizadores (utilizador sem sessão iniciada, utilizador com privilégios de admin de sistema e utilizador com privilégios de membro). Consoante os privilégios do utilizador atual a informação exibida pode variar. Utilizou-se encriptação da password e token UUID associado a cada sessão.

Estrutura da aplicação:

  • Página principal
  • Login
  • Reset de palavra-passe
  • Registo de novo utilizador
  • Fórum de notícias e de projeto
  • Criação de notícias e de projeto
  • Pesquisa de notícuas e projetos por palavra-chave
  • Ver detalhe de notícia e de projeto
  • Editar detalhes de notícias e de projetos
  • Permitir associações de notícias e projetos entre si, bem como a palavras-chave e a utilizadores
  • Lista de utilizadores registados
  • Detalhes do perfil do utilizador, projeto e notícias aos quais está associado
  • Editar detalhes do perfil do utilizador
  • Gestão de privilégios de administradores
  • Dashboard para administradores
  • Internacionalização: idiomas suportados PT-PT e EN
  • EXTRA: notificações de associações com possibilidade de serem marcadas como lidas

Tecnologias e Frameworks utilizadas:

Backend:

  • Java EE
  • REST
  • JPA
  • CDI
  • Websocket
  • JUnit e Mockito
  • MySQL database
  • API criteria e JPQL queries

Frontend:

  • ReactJS
  • Redux
  • Chakra-UI
  • React-router
  • use-http
  • intl (i18n)
  • localStorage (apenas para guardar token de sessão atual)

Detalhes principais:

home

Login:

login-pt login-en

reset-password

Registo de novo utilizador

user-register

Forum de Notícias:

Para cada notícia podemos ver os projetos, as pessoas e as palavras-chaves associadas. É possível pesquisar e filtrar notícias por palavra-chave associada. É possível visualizar notícias atuais e notícias arquivadas. Para as imagens existe uma fallback imagem caso o link que se coloque não seja de uma imagem. A criação de uma notícia é feita com um stepper em 3 passos (detalhes da notícia, associar utilizadores, associar projetos). news-forum

news-details news-creation

Forum de Projetos:

Semelhante aos detalhes de implemtação das notícias. Excepto no que toca à associação com utilizadores, onde é possível acrescentar o cargo desse utilizador no projeto a que está a ser associado. A asssociação de utilizadores gera o envio de notificações. O convite de associação é automaticamente aceite (embora a API permita a implementação de um sistema de associação completa apenas após aceitação de convite).
project-forum

Sobre a Equipa

No perfil de cada utilizador para além da sua informação pessoal, conseguimos ver os projetos aos quais está associado. Caso se trate do perfil do utilizador atual ou utilizador com privilégios de admin é possível editar todos os campos. Um utilizador com privilégios de admin pode ainda alterar os privilégios do utilizador que está a visualizar.

users-list

user-details user-edit

Dashboard

Área acessível apenas a utilizadores com perfil de admin de sistema. Através de utilização de websockets é possível observar a evolução de algumas estatísticas em tempo real.
dashbord