- Mariana Lourenço
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.
- 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
- Java EE
- REST
- JPA
- CDI
- Websocket
- JUnit e Mockito
- MySQL database
- API criteria e JPQL queries
- ReactJS
- Redux
- Chakra-UI
- React-router
- use-http
- intl (i18n)
- localStorage (apenas para guardar token de sessão atual)
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).
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).
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.
Á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.