Skip to content

Projeto para a materia Desenvolvimento de Sistemas Web II da Universidade Federal do Rio Grande do Norte (UFRN)

Notifications You must be signed in to change notification settings

Pedr0P4/cardeasy-plus

Repository files navigation

Cardeeasy Plus

Uma reconstrução do Cardeasy.

Diagrama de classes

Diagrama de classes

Instruções para backend

É necessário ter o Java 21 e o Maven — estou usando a versão 3.8.7, mas não acho que a versão se tornará um problema para você. Peço a cautela com a formatação do código, você certamente não estará programando algo que apenas você verá.

Sobre o ambiente, recomendo o uso do VSCode com o Extension Pack for Java. Além disso, mesmo que não vá mexer no frontend, recomendo abrir o projeto inteiro, pois a referência para o arquivo do banco de dados database é relativa a pasta de execução do backend — e eu executei na raíz do projeto inteiro.

Como recomendações adicionais, recomendo as extensões EditorConfig for VSCode e Material Icon Theme. Sendo o primeiro bem mais importante, e o segundo muito mais uma questão de customização.

Execução

Você pode executar através do Extension Pack for Java. Ao executar o backend, o console do H2 está disponível em http://localhost:8080/console.

  • O usuário e senha padrão é admin;
  • O JDBC URL é jdbc:h2:./database/database;
  • O Driver é org.h2.Driver.

A imagem abaixo ilustra a página de login do console.

Console do H2

A image abaixo ilustra o console após a autenticação bem sucedida.

Painel do H2

Acesso e dados mockados

Deixamos alguns dados mockados apenas para testes (alguns nomes e títulos podem não fazer muito sentido), pode alterar a vontade. Estão acessíveis através das contas:

Swagger

Uma vez em execução, você conseguirá acessar todas as informações das rotas através do caminho http://localhost:8080/docs/swagger.

Instruções para frontend

É necessário ter o Node 22 e o Pnpm — estou usando a versão 10.14.0, mas não acho que a versão se tornará um problema para você. Peço a cautela com a formatação do código, você certamente não estará programando algo que apenas você verá.

Sobre o ambiente, recomendo o uso do VSCode com o JavaScript and TypeScript Nightly e o Tailwind CSS IntelliSense.

Como recomendações adicionais, recomendo as extensões EditorConfig for VSCode, Material Icon Theme, Pretty TypeScript Errors e o TypeScript Importer. Sendo o primeiro bem mais importante, o segundo muito mais uma questão de customização e os dois últimos utilitários para o TypeScript.

Execução

Para executar o projeto, primeiramente você deve baixar todas as dependências.

cd frontend
pnpm install
pnpm approve-builds

Selecione tudo que aparecer no terminal com space após o último comando. E uma vez com todas as dependências instaladas, execute:

pnpm dev

Next.js

Para os que não estão familiariazados com o Next.js, todas as páginas ficam na pasta app, embora imagens e outros arquivos estáticos públicos possam ficar no public. Este framework roteia automaticamente as páginas de acordo com as pastas e arquivos dentro da pasta app.

  • layout.tsx é um componente opcional que "cobre" toda página e páginas dentro das pastas de sua raiz;
    • Por exemplo, o <html> que vai em todas as páginas fica no app/layout.tsx, sendo o layout.tsx mais importante.
  • page.tsx é o componente da página propriamente dita.

Exemplos de roteamento:

.
├── components/                 # Componentes da aplicação
├── services/                   # Criei para colocar serviços que se comunicam com o backend
├── public/                     # Arquivos estáticos públicos
├── app/                        # Rotas da aplicação
│   ├── layout.tsx              # Corpo <html> comum a todos
│   ├── page.tsx                # Página da rota "/"
│   ├── login/                  # Pasta da rota "/login"
│   ├── ├── page.tsx            # Página da rota "/login"
│   ├── teams/[id]/             # Pasta da rota "/teams/{id}", se não mudou
│   ├── ├── page.tsx            # Página da rota "/teams/{id}"

Coisas a melhorar

Se tratando de uma aplicação acadêmica que visa apenas o aprendizado, tomamos algumas escolhas visando a entrega. Por exemplo:

  • Não há página de cartão que reune todas as entidades ligadas ao cartão;
    • O foco era o backend, e achamos mais fácil reutilizar componentes já existentes com tudo bem separado do que criar uma grande página para lidar com tudo que há nela.
  • Alguns elementos são arrastáveis, outros não;
    • É chatinho de implementar e conflita com a paginação.
  • Em uma aplicação real provavelmente faz mais sentido alguns ids ser long ao invés de int;
  • Algumas entidades só deveriam ter chave composta feita com a chave estrangeira, justamente por serem entidades fracas no modelo EER. Mas ficou mais prático atribuir apenas o id próprio de cada entidade nos casos possíveis;
  • Só há relacionamento 1:1 por que foi uma das exigências;
  • Não deixamos um dashboard pronto para abrir no grafana, embora os containers necessários estejam configurados no docker-compose.yml;
  • Etc.

About

Projeto para a materia Desenvolvimento de Sistemas Web II da Universidade Federal do Rio Grande do Norte (UFRN)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages