O Sistema de Moeda Estudantil visa estimular o mérito dos alunos por meio de uma moeda virtual distribuída pelos professores, que podem recompensá-los por bom comportamento e participação em aula. Alunos, professores e empresas parceiras devem se cadastrar no sistema, sendo que os alunos poderão usar suas moedas para trocar por vantagens como descontos em produtos e serviços oferecidos pelas empresas. Professores recebem um saldo de 1.000 moedas a cada semestre para distribuir, e tanto alunos quanto professores podem consultar seus saldos e transações. O sistema conta com notificações por e-mail para o recebimento de moedas e resgate de vantagens, além de gerar cupons e códigos para validar trocas. O acesso ao sistema exige autenticação por login e senha, garantindo segurança nas operações.
- Pedro Henrique Pires Rodrigues
- Pedro Negri Leão Lambert
- Vinicius Rezende Arantes de Araujo Moreira
- João Paulo Carneiro Aramuni
User Story | Descrição |
---|---|
US01 - Usuário - Login e autenticação | Como usuário, eu quero realizar login no sistema para acessar minhas funcionalidades específicas de acordo com o meu perfil (Aluno, Empresa ou Professor). |
US02 - Aluno - Trocar moedas por vantagens | Como aluno, eu quero trocar minhas moedas por vantagens disponíveis para poder usufruir de benefícios oferecidos pelas empresas parceiras. |
US03 - Aluno - Enviar notificação de troca | Como aluno, eu quero ser notificado via e-mail toda vez que realizar uma troca de moedas por uma vantagem para acompanhar minhas transações. |
US04 - Aluno - Cadastro no sistema | Como aluno, eu quero me cadastrar no sistema informando meus dados pessoais e acadêmicos para poder participar do programa de reconhecimento. |
US05 - Aluno - Consultar extrato | Como aluno, eu quero consultar meu extrato para visualizar meu saldo de moedas e as transações realizadas no sistema. |
US06 - Aluno - Receber moedas do professor | Como aluno, eu quero receber moedas do professor como reconhecimento para poder utilizar no sistema. |
US07 - Aluno - Receber notificação no e-mail | Como aluno, eu quero ser notificado via e-mail sempre que receber moedas de um professor para ficar ciente do recebimento. |
US08 - Empresa - Cadastro no sistema | Como empresa, eu quero me cadastrar no sistema para poder oferecer vantagens e participar do programa de reconhecimento dos alunos. |
US09 - Empresa - Cadastrar vantagem | Como empresa, eu quero cadastrar vantagens no sistema para que os alunos possam trocá-las por moedas, detalhando cada uma com descrição e foto. |
US10 - Professor - Enviar moeda | Como professor, eu quero enviar moedas para um aluno como forma de reconhecimento para incentivá-lo a continuar seu bom comportamento ou desempenho. |
US11 - Professor - Receber moedas semestralmente | Como professor, eu quero receber 1.000 moedas semestralmente para poder distribuir aos alunos ao longo do semestre de acordo com os critérios definidos. |
US12 - Professor - Consultar extrato | Como professor, eu quero consultar meu extrato de moedas para visualizar o saldo disponível e as moedas já distribuídas para os alunos. |
- Java SpringBoot: Utilizado para construir a aplicação backend, fornecendo uma estrutura robusta e escalável.
- Swagger: Utilizado para documentar e testar as APIs desenvolvidas. http://localhost:8080/swagger-ui/index.html
- React: Utilizado para construir a interface do usuário, proporcionando uma experiência interativa e dinâmica.
- TypeScript (TS): Utilizado junto com React para adicionar tipagem estática, melhorando a qualidade do código.
- Mockito: Utilizado para criar testes unitários no backend, garantindo a confiabilidade do código.
- JPA (Java Persistence API): Utilizado para gerenciar a persistência de dados no banco de dados.
- JWT (JSON Web Token): Utilizado para autenticação e autorização segura dos usuários.
- Redux: Utilizado para gerenciar o estado global da aplicação React, facilitando a manutenção e escalabilidade.
Utilizamos o Spring Data JPA para implementar a estratégia de acesso ao banco de dados, aproveitando o mapeamento objeto-relacional (ORM) para gerenciar entidades e persistência de dados de forma eficiente. Através do JPA, as entidades do sistema são mapeadas para tabelas no banco de dados relacional, permitindo a manipulação de dados com operações de alto nível, como save, find, e delete, sem a necessidade de escrever SQL manualmente.