{"id":23101741,"url":"https://github.com/francislauriano/museu_virtual","last_synced_at":"2026-05-10T02:04:31.108Z","repository":{"id":258396622,"uuid":"870464854","full_name":"FrancisLauriano/museu_virtual","owner":"FrancisLauriano","description":"Projeto da Disciplina de Programação Orientada à Objeto em Java: Aplicação desenvolvida em Java de um Museu Virtual de Personagens Históricos de Pernambuco ","archived":false,"fork":false,"pushed_at":"2024-11-11T07:42:36.000Z","size":1136,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T09:25:12.418Z","etag":null,"topics":["firebase","hibernate-orm","jakarta","java","jbcrypt","mysql","swing-gui"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FrancisLauriano.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-10T05:07:41.000Z","updated_at":"2024-11-11T07:42:40.000Z","dependencies_parsed_at":"2024-11-07T04:22:16.849Z","dependency_job_id":"1ab42134-76dc-44ba-b552-b72b91bdf9a6","html_url":"https://github.com/FrancisLauriano/museu_virtual","commit_stats":null,"previous_names":["francislauriano/museu_virtual"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrancisLauriano%2Fmuseu_virtual","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrancisLauriano%2Fmuseu_virtual/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrancisLauriano%2Fmuseu_virtual/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrancisLauriano%2Fmuseu_virtual/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FrancisLauriano","download_url":"https://codeload.github.com/FrancisLauriano/museu_virtual/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247080510,"owners_count":20880282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["firebase","hibernate-orm","jakarta","java","jbcrypt","mysql","swing-gui"],"created_at":"2024-12-16T23:54:06.013Z","updated_at":"2026-05-10T02:04:31.000Z","avatar_url":"https://github.com/FrancisLauriano.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003eMuseu Virtual de Personagens Históricos de Pernambuco\u003c/h1\u003e \n\n\u003cp align=\"center\"\u003e \n\u003cimg src=\"https://img.shields.io/static/v1?label=Java\u0026message=22\u0026color=3776AB\u0026style=for-the-badge\u0026logo=java\"/\u003e \n\u003cimg src=\"http://img.shields.io/static/v1?label=Draw.io\u0026message=24.6.4\u0026color=f08705\u0026style=for-the-badge\u0026logo=diagramsdotnet\"/\u003e \n\u003cimg src=\"http://img.shields.io/static/v1?label=MySQL\u0026message=8.0.38\u0026color=4479a1\u0026style=for-the-badge\u0026logo=mysql\u0026logoColor=f5f5f5\"/\u003e \n\u003cimg src=\"http://img.shields.io/static/v1?label=Hibernate\u0026message=6.6\u0026color=2d3748\u0026style=for-the-badge\u0026logo=hibernate\"/\u003e \n\u003cimg src=\"http://img.shields.io/static/v1?label=Firebase\u0026message=10.13.0\u0026color=DD2C00\u0026style=for-the-badge\u0026logo=firebase\"/\u003e\n\u003cimg src=\"http://img.shields.io/static/v1?label=Git\u0026message=2.45.2\u0026color=f05032\u0026style=for-the-badge\u0026logo=git\"/\u003e \n\u003cimg src=\"http://img.shields.io/static/v1?label=GitHub\u0026message=2024\u0026color=181717\u0026style=for-the-badge\u0026logo=github\"/\u003e \n\u003cimg src=\"http://img.shields.io/static/v1?label=STATUS\u0026message=EM%20DESENVOLVIMENTO\u0026color=yellow\u0026style=for-the-badge\"/\u003e \n\u003cimg src=\"http://img.shields.io/static/v1?label=License\u0026message=MIT\u0026color=green\u0026style=for-the-badge\"/\u003e \n\u003c/p\u003e\n\n\u003e Status do Projeto: :heavy_check_mark: (concluido) | :warning: (em desenvolvimento) | :x: (não iniciada)\n\n### Tópicos \n\n:small_blue_diamond: [Descrição do projeto](#descrição-do-projeto-writing_hand) :heavy_check_mark:\n\n:small_blue_diamond: [Objetivos do projeto](#objetivos-do-projeto-dart) :heavy_check_mark:\n\n:small_blue_diamond: [Funcionalidades](#funcionalidades-video_game) :heavy_check_mark:\n\n:small_blue_diamond: [Arquitetura do Backend](#Arquitetura-do-Backend-triangular_ruler-straight_ruler) :heavy_check_mark:\n\n:small_blue_diamond: [Diagrama de Classes](#Diagrama-de-Classes) :heavy_check_mark:\n\n:small_blue_diamond: [Casos de Uso](#diagrama-de-casos-de-uso-(UC)-technologist) :heavy_check_mark:\n\n:small_blue_diamond: [Descrição das Telas do Sistema](#Descrição-das-Telas-do-Sistema-art) :heavy_check_mark:\n\n\n:small_blue_diamond: [Linguagens, tecnologias, dependências e libs utilizadas](#linguagens-tecnologias-dependências-e-libs-utilizadas-hammer_and_wrench-gear-books)\n\n:small_blue_diamond: [Desenvolvedores/Contribuintes](#desenvolvedorescontribuintes-octocat)\n\n... \n\n## Descrição do projeto :writing_hand:\n\n\u003cp align=\"justify\"\u003e\n  O projeto Museu Virtual de Personagens Históricos de Pernambuco foi desenvolvido para atender à demanda de um professor de História que busca uma ferramenta interativa para realizar estudos e difundir o conhecimento histórico regional entre seus alunos e a comunidade.  \n\u003c/p\u003e\n\n\n## Objetivos do projeto :dart:\n\n\u003cp align=\"justify\"\u003e\n\n**1. Preservar e divulgar a história e cultura local de Pernambuco:**\n- Promover a memória de personagens históricos que contribuíram para o desenvolvimento cultural, social e político da região.\n- Facilitar o acesso ao conhecimento histórico por meio de uma plataforma digital interativa.\n\n**2. Facilitar o acesso de estudantes e professores a conteúdos históricos relevantes:**\n- Oferecer uma alternativa prática e moderna ao material didático tradicional, permitindo que os usuários explorem personagens históricos de forma interativa e visual.\n- Garantir o acesso ao conteúdo, especialmente para alunos de escolas em áreas com acesso limitado a museus e bibliotecas físicas.\n\n**3. Incentivar o uso de tecnologias digitais no ensino da história regional:**\n- Aplicar uma abordagem inovadora no ensino de história, utilizando uma interface gráfica interativa.\n- Engajar alunos e professores em um ambiente de aprendizado prático e colaborativo, onde a tecnologia se torna uma ferramenta de pesquisa e ensino.\n\n**4. Oferecer uma plataforma diferenciada para cadastro e consulta de personagens históricos:**\n- Disponibilizar funcionalidades de gestão de personagens e usuários, permitindo que o conteúdo seja atualizado de forma dinâmica e eficiente por administradores.\n  \n\u003c/p\u003e\n\n\n## Funcionalidades :video_game:\n\n### Funcionalidades para Administradores\n\n**1. Autenticação e Login**:\n- Administradores realizam login com e-mail e senha. Após o login, são redirecionados para um painel administrativo.\n\n**2. Gestão de Personagens Históricos (CRUD):**\n- Cadastrar Personagem: Inserir nome, biografia, tipo de personagem (Artista ou Político) e imagem.\n- Listar Personagens: Exibir uma lista com todos os personagens cadastrados, incluindo seus detalhes.\n- Atualizar Personagem: Modificar informações já cadastradas, como nome, biografia ou imagem.\n- Deletar Personagem: Remover personagens que não são mais relevantes.\n\n**3. Gestão de Usuários (CRUD):**\n- Cadastrar Usuário: Criar novos usuários (administradores ou alunos) com nome, e-mail, senha e tipo de usuário.\n- Listar Usuários: Exibir todos os usuários cadastrados, com detalhes como nome e tipo.\n- Atualizar Usuário: Modificar dados dos usuários, incluindo nome e tipo.\n- Deletar Usuário: Remover usuários do sistema\n\n### Funcionalidades para Alunos\n\n**1. Autenticação e Login:**\n- Os alunos realizam login com e-mail e senha e são direcionados para uma interface específica para consulta.\n\n**2. Consulta de Personagens:**\n- Listar Personagens: Visualizar a lista completa de personagens históricos cadastrados.\n- Buscar Personagem Específico: Consultar informações detalhadas sobre um personagem específico, incluindo nome, biografia e imagem.\n\n\n\n## Arquitetura :triangular_ruler: :straight_ruler:\n\n```plaintext\nMuseuVirtual/\n├── src/\n│   ├── annotations/\n│   │   ├── TipoPersonagem.java\n│   │   └── TipoUsuario.java\n│   │\n│   ├── controller/\n│   │   ├── PersonagemController.java\n│   │   └── UsuarioController.java\n│   │\n│   ├── DAO/\n│   │   ├── InstanceDAO.java\n│   │   ├── PersonagemDAO.java\n│   │   └── UsuarioDAO.java\n│   │\n│   ├── model/\n│   │   ├── Personagem.java\n│   │   └── Usuario.java\n│   │\n│   ├── service/\n│   │   ├── AuthService.java\n│   │   └── FirebaseService.java\n│   │\n│   ├── view/\n│   │   ├── LoginView.java\n│   │   ├── AdminPainelView.java\n│   │   ├── AlunoPainelView.java\n│   │   ├── AdicionarUsuarioDialog\n│   │   ├── AdicionarPersonagemDialog.java\n│   │   ├── AdicionarPersonagemDialog.java\n│   │   ├── EditarUsuarioDialog\n│   │   └── EditarPersonagemDialog.java\n│   │\n│   ├── validators/\n│   │   ├── TipoPersonagemValidator.java\n│   │   └── TipoUsuarioValidator.java\n│   │\n│   ├── utils/\n│   │   ├── HibernateUtil.java\n|   |   ├── JPAUtils.java\n│   │   └── PasswordUtil.java\n│   │\n│   │\n│   └── Main.java\n│\n├── resources/\n|   └── META-INF/\n│       └── persistence.xml\n│\n└── pom.xml (Para gerenciamento com Maven)\n```\n\n1. MuseuVirtual/: Diretório raiz do projeto.\n   - src/: Contém o código-fonte do sistema.\n    - annotations/:\n      - TipoPersonagem.java e TipoUsuario.java: Definem anotações personalizadas para marcar e validar tipos de personagens e tipos de usuários. Essas anotações ajudam na validação e controle de dados específicos do sistema.\n  \n    - controller/:\n      - PersonagemController.java e UsuarioController.java: Controladores que implementam a lógica de negócios e intermediam a comunicação entre a interface gráfica (view) e as operações de banco de dados (DAO). Por exemplo, o PersonagemController coordena as operações CRUD para personagens, e o UsuarioController para usuários.\n  \n    - DAO/ (Data Access Object):\n      - InstanceDAO.java: Classe base genérica para operações de banco de dados, contendo métodos comuns como salvar, buscar por ID, listar, atualizar e deletar. Serve como base para outras DAOs.\n      - PersonagemDAO.java e UsuarioDAO.java: Classes DAO específicas para as entidades Personagem e Usuario, estendendo InstanceDAO para fornecer métodos CRUD e consultas específicas.\n\n    - model/:\n      - Personagem.java e Usuario.java: Entidades que representam os modelos de dados do sistema. Essas classes mapeiam os atributos e relacionamentos das tabelas Personagem e Usuario no banco de dados.\n\n    - service/:\n      - AuthService.java: Implementa a autenticação de usuários, possivelmente manipulando tokens de sessão.\n      - FirebaseService.java: Gerencia operações de integração com o Firebase, como o upload de imagens ou armazenamento de dados.\n  \n    - view/:\n      - LoginView.java: Tela de login, onde administradores e alunos inserem suas credenciais.\n      - AdminPainelView.java e AlunoPainelView.java: Painéis específicos para administradores e alunos, exibindo funcionalidades e informações conforme o perfil de usuário.\n      - AdicionarUsuarioDialog.java, AdicionarPersonagemDialog.java, EditarUsuarioDialog.java, EditarPersonagemDialog.java: Diálogos específicos para gerenciar operações de cadastro e edição de personagens e usuários.\n  \n    - validators/:\n      - TipoPersonagemValidator.java e TipoUsuarioValidator.java: Validadores responsáveis por garantir que os dados de tipos de personagens e usuários estejam corretos conforme a definição do sistema.\n  \n    - utils/:\n      - HibernateUtil.java e JPAUtils.java: Utilitários de configuração e inicialização para o gerenciamento de persistência com Hibernate e JPA.\n      - PasswordUtil.java: Funções auxiliares para lidar com senhas, como hashing e validação.\n\n    - Main.java: Ponto de entrada da aplicação. Inicia o sistema e exibe a primeira tela (provavelmente o login).\n\n2. resources/:\n  - META-INF/persistence.xml: Arquivo de configuração de persistência para o JPA/Hibernate. Define as propriedades do banco de dados e mapeamento de entidades.\n  \n3. pom.xml: Arquivo de configuração do Maven, listando dependências e plugins necessários para construir e executar o projeto, facilitando o gerenciamento de bibliotecas e configurações de build.\n\n...\n\n## Diagrama de Classes\n\n\n\u003cimg src=\"/diagramas_UML/DiagramaDeClassesMuseuVirtual.png\"\u003e\n\n\n...\n\n## Diagrama de Casos de Uso (UC) :technologist:\n\n\n\u003cimg src=\"/diagramas_UML/DiagramaDeCasosDeUsoMuseuVirtual.png\"\u003e\n\n\n\n## Descrição das Telas do Sistema :art:\n1. Tela de Login\n- Descrição:\n  - O usuário (aluno ou administrador) acessa esta tela para entrar no sistema.\n  - Os campos incluem:\n  - Email: Campo de texto para o e-mail.\n  - Senha: Campo oculto para senha.\n  - Botão \"Login\": Inicia o processo de autenticação.\n\n- Interação:\n  1. O usuário insere email e senha.\n  2. Ao clicar no botão \"Login\", é feita a validação:\n  - Se o login for bem-sucedido:\n    - Administrador é redirecionado para o Painel Administrativo.\n    - Aluno é direcionado para a Tela de Consulta de Personagens.\n  - Se falhar, é exibida uma mensagem de erro informando \"Email ou senha incorretos\".\n\n2. Painel Administrativo\n- Descrição:\n  - Esta tela é exclusiva para administradores e permite gerenciar usuários e personagens.\n  - Há um banner de boas-vindas e abas para facilitar a navegação:\n    - Aba \"Usuários\": Gerenciamento completo de usuários (CRUD).\n    - Aba \"Personagens\": Gerenciamento de personagens históricos (CRUD).\n  \n- Interação:\n  1. Aba \"Usuários\":\n    - Listar todos os usuários, buscar por email, editar, excluir ou adicionar um novo usuário.\n    - A escolha do tipo de usuário pode ser feita em um diálogo específico.\n  2. Aba \"Personagens\":\n    - Listar personagens, buscar por nome, adicionar, editar ou excluir personagens existentes.\n  3. Botão \"Sair\" no canto superior direito permite que o administrador faça logout e volte para a tela de login.\n  \n3. Painel do Aluno\n- Descrição:\n  - Esta tela é destinada aos alunos para consultar os personagens históricos cadastrados.\n  - Contém um banner com boas-vindas e uma aba para listar e buscar personagens.\n\n- Interação:\n  1. Botões de Ação:\n    - Listar Personagens: Exibe todos os personagens no sistema.\n    - Listar por Tipo: Abre um diálogo para o aluno escolher um tipo e listar os personagens correspondentes.\n    - Buscar Personagem: Permite ao aluno buscar um personagem específico pelo nome.\n  2. Tabela: Exibe os detalhes dos personagens encontrados.\n\n4. Tela de Adicionar Personagem\n- Descrição:\n  - Permite que o administrador adicione um novo personagem ao sistema, inserindo:\n    - Nome, Biografia, Tipo, e Imagem.\n\n- Interação:\n  1. O administrador preenche os campos obrigatórios.\n  2. A imagem pode ser selecionada através de um selecionador de arquivos com visualização em miniatura.\n  3. Ao clicar em \"Adicionar\", o personagem é salvo no sistema.\n\n5. Tela de Editar Personagem\n- Descrição:\n  - Permite editar informações de um personagem existente.\n\n- Interação:\n  1. O administrador pode modificar nome, biografia, tipo e imagem.\n  2. Após salvar, o sistema atualiza o personagem e exibe uma mensagem de confirmação.\n\n6. Tela de Adicionar Usuário\n- Descrição:\n  - Permite cadastrar novos usuários, definindo:\n    - Nome, Email, Senha, e Tipo (administrador ou aluno).\n\n- Interação:\n  1. O administrador insere os dados necessários e salva o novo usuário.\n  2. Caso o email já esteja em uso, uma mensagem de erro é exibida.\n\n7. Tela de Editar Usuário\n- Descrição:\n  - Permite atualizar as informações de um usuário existente.\n\n- Interação:\n  1. O administrador modifica os dados e salva as alterações.\n  2. Se um novo email for inserido e já estiver em uso, o sistema exibe uma mensagem de erro.\n\n**Fluxo Geral de Interação:**\n  1. Usuário realiza login.\n  2. Administrador acessa o painel com abas para gerenciar usuários e personagens.\n  3. Aluno acessa a tela de consulta para listar ou buscar personagens.\n  4. A partir das interfaces administrativas, personagens e usuários podem ser criados, atualizados, ou excluídos.\n\n... \n\n## Linguagens, tecnologias, dependências e libs utilizadas :hammer_and_wrench: :gear: :books:\n\n\n- [Java](https://docs.oracle.com/en/java/)\n- [Draw.io](https://www.drawio.com/)\n- [PlantUML](https://plantuml.com/)\n- [MySQL](https://dev.mysql.com/doc/)\n- [Hibernate ORM](https://hibernate.org/orm/)\n- [Firebase](https://firebase.google.com/)\n- [Jakarta](https://jakarta.ee/learn/docs/jakartaee-tutorial/current/index.html)\n- [Swing GUI](https://docs.oracle.com/javase/8/docs/api/index.html?javax/swing/package-summary.html)\n- [jBCrypt](https://www.javadoc.io/doc/org.mindrot/jbcrypt/0.4/index.html)\n- [Git](https://git-scm.com/downloads)\n- [GitHub](https://github.com/)\n\n...\n\n## Desenvolvedores/Contribuintes :octocat:\n\nTime responsável pelo desenvolvimento do projeto\n| [\u003cimg src=\"https://avatars.githubusercontent.com/u/130801505?v=4\" width=115\u003e\u003cbr\u003e\u003csub\u003eFrancis Lauriano\u003c/sub\u003e](https://github.com/FrancisLauriano) \n| :---: \n\n\n## Licença \n\nThe [MIT License]() (MIT)\n\nCopyright :copyright: 2024 - Museu Virtual de Personagens Históricos de Pernambuco\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrancislauriano%2Fmuseu_virtual","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrancislauriano%2Fmuseu_virtual","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrancislauriano%2Fmuseu_virtual/lists"}