Skip to content

fonsecguilherme/vr_soft_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Documentação do Projeto 🇧🇷

Visão Geral

Este desafio foi proposto pela equipe da VR Software, e se trata de um CRUD de um sistema academico. É possível consultar, criar, excluir e editar tanto alunos quanto cursos. Além disso há uma parte que é possível matricular um aluno a um curso e também remover esse vínculo.

Página Inicial

  • Página Inicial: Tela principal onde é possível escolher uma ação a ser realizada.
    • Alunos: Na página de alunos há uma listagem dos alunos matriculados assim que a tela é iniciada. Além disso, também é mostrado em baixo as as ações de excluir, cadastrar e editar aluno.
    • Cursos: Na página de cursos há uma listagem dos cursos registrados assim que a tela é iniciada. Além disso, também é mostrado em baixo as as ações de excluir, cadastrar e editar um curso.
    • Matrícula: Na página de matrícula há dois campos de texto com um toggle button onde é possível selecionar a ação de víncular ou apagar aluno de um curso. Com uma SnackBar indicando se a ação foi realizada com sucesso ou não.

Visão Técnica do Projeto

Tecnologias e Pacotes

  • Flutter - v3.24.0
  • PostgreSQL 17
  • Java 23
  • Spring v3.3.4

Pacotes Dart e Flutter

  • Bloc: Uma biblioteca para implementar o padrão BLoC.
  • Bloc_test: Pacote usado para testar eventos e estados BLoC.
  • Equatable: Pacote usado para comparação entre objetos.
  • Flutter_bloc: Fornece integração entre Flutter e BLoC para gerenciamento de estado.
  • HTTP: Pacote utilizado para criar requisições web.
  • Mocktail: Um pacote usado para criar mocks para testes unitários.

Principais Recursos e Práticas

  • Gerenciamento de Estado: Foi utilizado BLoC e Flutter BLoC para gerenciar o estado do aplicativo.
  • Injeção de Dependência: Gerenciado através do próprio Provider que já vem incluso com o pacote Flutter BLoC.
  • Solicitações de API: HTTP para comunicação de rede.
  • Testes: Mocktail, Bloc Test para testes unitários e de widgets.

Esta combinação de pacotes e práticas garante uma arquitetura de aplicativo robusta, manutenível e testável.

BLoC

  • Neste projeto, escolhi usar cubits para gerenciamento de estado. Minha escolha foi motivada por vários motivos: cubits/BLoC é um padrão bem definido, altamente testável, amplamente adotado no mercado e oferece flexibilidade para ajustar a interface do usuário.

Testes

  • Testes de widget da home_page e students_page e save_student_widget, além do testes do students_cubit.

Estrutura do Aplicativo

  • Data: Lidar com a comunicação com fontes externas e gerenciamento de dados.
  • Domain: Lida com as abstrações criada que devem mostrar como a camada de Data deve implementar os métodos criados.
  • Presentation: Representação visual das telas do aplicativo, junto com os states e cubits.
  • Utils: Classes que ajudam/encapsulam alguma lógica para ajudar a implementaçào de algo no app.

Estrutura da API

  • Controllers: Recebem os dados vindos do app e se comunica com o a API.
  • DTOs: Representação de um objeto de transferência de dados.
  • Models: Representação de entidades no banco de dados.
  • Repositories: Repositories Spring Data JPA para uma entendidade.

Vídeo

Video

Screenshots

  • Home page

  • Student page

  • Courses Page

  • Enroll Page

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published