Aula 7: Projeto CritiqueHub
Objetivos
- Compreender a visão e os requisitos do projeto CritiqueHub
- Conhecer o modelo de domínio e as entidades principais da plataforma
- Identificar os contextos delimitados e a arquitetura de domínio
- Planejar a evolução progressiva do projeto ao longo do curso
Contexto e Motivação
Durante sua jornada de aprendizado em Jakarta EE e Quarkus 3.31, você aplicará todos os conceitos fundamentais em um projeto prático e envolvente: o CritiqueHub. Esta plataforma representa mais do que um simples exercício acadêmico — é uma oportunidade de construir uma aplicação web moderna que combina elementos sociais, algoritmos inteligentes e uma arquitetura enterprise robusta.
O CritiqueHub nasceu da necessidade de criar um ambiente onde entusiastas de cultura possam descobrir, avaliar e compartilhar suas experiências com filmes, livros e jogos. A plataforma integra a curadoria social do Goodreads, a experiência cinematográfica do Letterboxd e a abrangência informacional do IMDb, tudo construído com as melhores práticas do desenvolvimento web enterprise.
Conteúdo
O Que É o CritiqueHub
O CritiqueHub é uma plataforma social de descoberta cultural onde usuários podem registrar e avaliar itens de entretenimento que consomem, compartilhar opiniões através de resenhas detalhadas e descobrir novos conteúdos através de recomendações personalizadas baseadas em suas preferências e na sabedoria coletiva da comunidade.
A plataforma funciona como um ecossistema digital onde cada usuário constrói seu perfil cultural único através de suas avaliações, criando um mapa de gostos que alimenta algoritmos de recomendação cada vez mais precisos.
Experiência do Usuário
Quando um usuário acessa o CritiqueHub, ele encontra uma interface intuitiva que o convida a explorar e compartilhar. Após assistir a um filme, ler um livro ou jogar um novo jogo, o usuário pode facilmente localizá-lo na plataforma, atribuir uma nota de 1 a 10, escrever uma resenha detalhada e adicionar o item às suas listas personalizadas.
O sistema, baseado no histórico de avaliações, sugere novos conteúdos que provavelmente irão interessar ao usuário. "Usuários que gostaram de Inception também apreciaram..." torna-se uma ferramenta eficaz de descoberta cultural.
Requisitos Funcionais Principais
Gestão de Usuários
- RF01 — Cadastro e autenticação de usuários
- RF02 — Gerenciamento de perfis pessoais
- RF03 — Sistema de seguir outros usuários
- RF04 — Configuração de privacidade do perfil
Catálogo de Itens Culturais
- RF05 — Cadastro de filmes com metadados (diretor, elenco, ano, gênero)
- RF06 — Cadastro de livros com metadados (autor, editora, ISBN, páginas)
- RF07 — Cadastro de jogos com metadados (desenvolvedora, plataforma, classificação)
- RF08 — Sistema de busca avançada por múltiplos critérios
- RF09 — Classificação por gêneros e categorias
Sistema de Avaliações
- RF10 — Atribuição de notas de 1 a 10 para itens consumidos
- RF11 — Escrita e edição de resenhas detalhadas
- RF12 — Marcação de status de consumo (assistido, lendo, jogando, abandonado)
- RF13 — Criação de listas personalizadas de itens
- RF14 — Histórico de avaliações do usuário
Recomendações e Descoberta
- RF15 — Algoritmo de recomendação baseado em similaridade de usuários
- RF16 — Sugestões baseadas em itens similares já avaliados
- RF17 — Trending de itens mais populares
- RF18 — Recomendações baseadas em seguidores
Interações Sociais
- RF19 — Comentários em resenhas de outros usuários
- RF20 — Sistema de curtidas em avaliações
- RF21 — Compartilhamento de listas e descobertas
- RF22 — Feed de atividades dos usuários seguidos
Relatórios e Analytics
- RF23 — Estatísticas pessoais de consumo cultural
- RF24 — Relatórios de tendências por gênero e período
- RF25 — Comparativo de gostos entre usuários
- RF26 — Métricas de engajamento da plataforma
Diagrama Conceitual das Entidades
O modelo conceitual do CritiqueHub é estruturado em torno de entidades principais que capturam os aspectos essenciais do domínio cultural e social:
Domínios de Conhecimento Integrados
Gestão de Comunidade Digital: O CritiqueHub não é apenas um catálogo individual — é uma comunidade vibrante onde usuários podem seguir uns aos outros, descobrir gostos similares e formar grupos de interesse. Esta dimensão social adiciona complexidade interessante ao projeto, exigindo considerações sobre privacidade, moderação de conteúdo e dinâmicas de rede social.
Inteligência de Recomendação: O coração tecnológico da plataforma reside em seus algoritmos de recomendação. Utilizando técnicas de filtragem colaborativa, o sistema identifica padrões nos gostos dos usuários para sugerir conteúdos relevantes. Este aspecto introduz conceitos fundamentais de ciência de dados e aprendizado de máquina de forma aplicada e compreensível.
Curadoria e Catalogação: A plataforma mantém um catálogo abrangente de itens culturais, cada um com metadados ricos: diretores, autores, gêneros, anos de lançamento, sinopses. Esta dimensão trabalha conceitos de modelagem de dados, taxonomias e sistemas de busca avançada.
Arquitetura de Domínio Rica
Contextos Delimitados Claros
O CritiqueHub exemplifica perfeitamente os princípios do Domain-Driven Design através de contextos naturalmente separados:
-
Contexto de Catálogo: Gerencia a base de conhecimento sobre filmes, livros e jogos, incluindo metadados, classificações e relacionamentos entre itens. Foca na integridade e consistência das informações culturais.
-
Contexto de Comunidade: Cuida das interações sociais: perfis de usuário, relacionamentos de seguimento, formação de grupos de interesse e dinâmicas de rede social. As regras de negócio giram em torno da privacidade e engajamento comunitário.
-
Contexto de Avaliação: Concentra-se no núcleo da experiência: como usuários expressam suas opiniões, a validação dessas avaliações e a agregação de dados para formar consensos comunitários.
-
Contexto de Recomendação: Representa o cérebro analítico da plataforma, processando padrões de comportamento para gerar sugestões personalizadas e descobertas inesperadas.
Complexidade Algorítmica
O projeto oferece múltiplas oportunidades para explorar estruturas de dados e algoritmos fundamentais:
- Matrizes esparsas: Representam eficientemente as avaliações usuário-item, considerando que nem todo usuário avalia todos os itens disponíveis
- Estruturas de grafo: Modelam naturalmente as redes sociais de usuários, permitindo análises de influência, detecção de comunidades e propagação de recomendações
- Algoritmos de heap: Facilitam a identificação dos "top K" itens mais recomendados para um usuário específico, otimizando a experiência de descoberta
Oportunidades de Aprendizado
Cada especificação estudada durante o curso encontra aplicação natural no CritiqueHub. O CDI gerencia elegantemente as dependências entre serviços de recomendação, catálogo e comunidade. O JPA persiste não apenas dados básicos, mas também relacionamentos complexos e históricos de interação. O Jakarta Faces constrói interfaces ricas e responsivas que tornam a experiência do usuário fluida e envolvente.
Desafios Arquiteturais Reais
O projeto confronta você com decisões arquiteturais autênticas: Como modelar eficientemente avaliações para permitir consultas rápidas? Como garantir que recomendações sejam relevantes sem comprometer a performance? Como estruturar a camada de apresentação para suportar tanto navegação exploratória quanto busca direcionada?
Integração de Conceitos Transversais
Segurança torna-se uma preocupação real quando usuários compartilham opiniões pessoais e formam conexões sociais. Performance importa quando algoritmos de recomendação precisam processar milhares de avaliações rapidamente. Usabilidade determina se usuários efetivamente descobrem novos conteúdos ou abandonam a plataforma frustrados.
Evolução Progressiva do Projeto
Desenvolvimento Iterativo e Adaptativo
O CritiqueHub será construído em iterações incrementais, cada uma introduzindo novos conceitos e funcionalidades conforme o aproveitamento da turma. Iniciaremos com um sistema básico de cadastro e avaliação, evoluindo gradualmente para incluir recursos mais sofisticados baseados no progresso coletivo.
Esta abordagem permite consolidar conhecimentos progressivamente, garantindo que cada nova funcionalidade seja construída sobre uma base sólida e bem compreendida.
Reflexão e Refinamento Contínuo
Cada fase do desenvolvimento será acompanhada de sessões de reflexão onde analisaremos as decisões tomadas, discutiremos alternativas e identificaremos oportunidades de melhoria. Esta prática desenvolve o pensamento crítico essencial para arquitetos de software experientes.
Preparação para o Mercado Profissional
Ao concluir o curso, você possuirá uma aplicação completa e funcional que demonstra competência técnica, pensamento arquitetural e capacidade de entregar valor através de tecnologia. Este projeto torna-se uma peça central do seu portfolio profissional.
Exercícios (Checkpoints)
- Identifique quais requisitos funcionais (RF01-RF26) serão implementados primeiro e justifique sua priorização
- Desenhe um diagrama de casos de uso alternativo para o módulo de Avaliações
- Proponha uma entidade adicional que poderia enriquecer o modelo de domínio e explique seu impacto nos relacionamentos
- Compare os contextos delimitados do CritiqueHub com os de uma aplicação que você já conhece (ex.: Spotify, Netflix)