Projeto Web — Loja Virtual
Disciplina: Linguagem de Programação Web II
Curso Técnico em Informática
Objetivo do Projeto
O objetivo deste projeto é desenvolver uma aplicação web utilizando Spring Boot e Thymeleaf para simular uma pequena loja virtual. O sistema deverá integrar o front-end desenvolvido anteriormente na disciplina Web I com um back-end conectado a um banco de dados relacional. O foco principal do projeto será a implementação de funcionalidades web dinâmicas utilizando CRUD, persistência de dados e integração entre interface e banco de dados.
Estrutura Geral do Projeto
O sistema deverá simular uma pequena loja virtual contendo página inicial dinâmica, página de detalhes dos produtos, integração com banco de dados, operações de CRUD, busca de produtos e pelo menos uma funcionalidade adicional relacionada ao contexto da loja.
Requisitos Obrigatórios
O projeto deverá implementar os requisitos descritos abaixo.
1. Página Inicial e Detalhes do Produto
A página inicial deverá exibir dinamicamente os produtos cadastrados no banco de dados, apresentando nome, imagem e preço. Cada produto deverá possuir um link para uma página de detalhes, na qual serão exibidas todas as informações relacionadas ao produto selecionado.
2. CRUD
O sistema deverá possuir no mínimo duas entidades com CRUD completo. Cada entidade deverá permitir operações de cadastro, listagem, visualização individual, edição e exclusão via interface web.
Uma das entidades obrigatoriamente deverá ser Produto. A segunda entidade poderá ser definida livremente pelo aluno, desde que faça sentido dentro do contexto da loja virtual. Exemplos: Categoria, Marca, Cliente, Fornecedor etc.
Com múltiplas entidades no mesmo projeto, recomenda-se organizar e padronizar os nomes das rotas adotando o padrão amplamente utilizado pela indústria:
Convenções sobre os nomes das rotas das entidades
| Operação | Método | Rota | Arquivo HTML |
|---|---|---|---|
| Listar todos | GET | /produtos | lista.html |
| Formulário novo | GET | /produtos/novo | criar.html |
| Criar recurso | POST | /produtos | redirect |
| Detalhes | GET | /produtos/{id} | detalhes.html |
| Formulário editar | GET | /produtos/{id}/editar | editar.html |
| Atualizar | POST | /produtos/{id}/atualizar | redirect |
| Excluir | POST | /produtos/{id}/excluir | redirect |
3. Funcionalidade da Loja
Além das entidades principais, o sistema deverá implementar pelo menos uma funcionalidade adicional relacionada ao contexto da loja virtual. A funcionalidade deverá possuir integração com banco de dados e interface web. Exemplos:
- Lista de Desejos: Permite que usuários salvem produtos de interesse para consultar posteriormente em uma página personalizada.
- Comentários de Produtos: Permite registrar comentários e opiniões relacionados aos produtos cadastrados na loja.
- Produtos em Destaque: Permite selecionar produtos específicos para serem exibidos em uma seção especial da página inicial.
- Banner Promocional: Permite cadastrar banners promocionais contendo imagem, título e descrição para divulgação de ofertas da loja.
- Lista de Cupons: Permite cadastrar cupons promocionais contendo código e percentual de desconto.
- FAQ da Loja: Permite cadastrar perguntas e respostas frequentes para auxiliar usuários da loja virtual.
- Newsletter: Permite cadastrar e listar e-mails de usuários interessados em receber novidades e promoções da loja.
Importante: cada dupla deverá implementar uma funcionalidade diferente das demais. As duplas deverão se organizar previamente para garantir que não haja repetição de funcionalidades entre os grupos.
4. Busca
O projeto deverá implementar um mecanismo de busca na página inicial utilizando o operador LIKE do SQL. A busca deverá filtrar dinamicamente os produtos cadastrados no banco de dados e exibir os resultados diretamente na interface web.
5. Validações
A aplicação deverá conter pelo menos três validações diferentes relacionadas aos dados de entrada do sistema. As validações deverão ser implementadas no back-end da aplicação (código java). Validações no HTML são importantes e válidas, mas não contarão pontos nesse critério quando apresentadas sozinhas. Exemplos incluem campos obrigatórios, tamanho mínimo de texto, e-mails válidos e preços maiores que zero.
Requisitos Não Funcionais
A aplicação deverá possuir uma interface organizada e funcional, reutilizando os layouts desenvolvidos anteriormente na disciplina Web I. Serão considerados aspectos como alinhamento consistente dos elementos, menu funcional, tipografia legível, uso consistente de cores, navegação adequada entre páginas e organização do código.
Etapas de Desenvolvimento (Milestones)
O desenvolvimento do projeto deverá ocorrer gradualmente. Inicialmente recomenda-se configurar o projeto Spring Boot, integrar o front-end desenvolvido anteriormente e estabelecer a conexão com o banco de dados. Em seguida deverá ser implementado o CRUD completo da entidade principal, seguido da segunda entidade. Após isso recomenda-se implementar a busca, validações e melhorias finais de organização e interface.
Requisitos Adicionais (Opcionais)
A implementação de funcionalidades extras poderá aumentar a nota final do projeto até o limite máximo de 10 pontos. Entre as possibilidades estão upload de imagens para produtos, paginação da listagem, funcionalidades assíncronas utilizando AJAX (como por exemplo CEP), hospedagem e publicação, etc.
Critérios de Avaliação
| Critério | Subcritérios | Pontos |
|---|---|---|
| Página inicial e detalhes | Listagem carregada do banco (0,4), exibição correta dos produtos (0,2), página de detalhes funcional (0,2) e navegação entre páginas (0,2) | 1,0 |
| CRUD Produto | Cadastro (0,4), listagem (0,4), detalhes (0,4), edição (0,4) e exclusão (0,4) funcionando corretamente | 2,0 |
| CRUD 2 | Cadastro (0,4), listagem (0,4), detalhes (0,4), edição (0,4) e exclusão (0,4) funcionando corretamente | 2,0 |
| Funcionalidade da loja | Integração com banco de dados (0,4), interface funcional (0,3) e funcionamento correto da funcionalidade proposta (0,3) | 1,0 |
| Busca utilizando LIKE | Campo de busca funcional (0,4), utilização correta do LIKE (0,4) e exibição dinâmica dos resultados (0,2) | 1,0 |
| Validações | Presença de validações diferentes (0,5), mensagens de erro adequadas (0,3) e tratamento correto das entradas (0,2) | 1,0 |
| Organização e qualidade do código | Indentação adequada (0,2), padronização de nomes (0,3), separação correta dos arquivos (0,3) e clareza do código (0,2) | 1,0 |
| Interface e navegação | Layout (0,2), alinhamento consistente (0,2), menu funcional (0,2), tipografia legível (0,2) e uso consistente de cores (0,2) | 1,0 |
Total: 10 pontos
Fator de Defesa Técnica
A nota final do projeto estará condicionada à defesa técnica individual dos integrantes da dupla. Durante a apresentação, os alunos poderão ser solicitados a explicar trechos do código, demonstrar o funcionamento do sistema, localizar funcionalidades no projeto e realizar pequenas modificações relacionadas ao sistema desenvolvido.
O objetivo desta etapa é verificar a compreensão do projeto implementado e a participação efetiva de cada integrante no desenvolvimento da aplicação.
Após a correção do projeto, será aplicado individualmente um fator de defesa técnica de acordo com o desempenho apresentado pelo aluno durante a apresentação.
| Nível de compreensão | Fator aplicado |
|---|---|
| Excelente compreensão do projeto | 1.0 |
| Boa compreensão do projeto | 0.9 |
| Compreensão parcial do projeto | 0.7 |
| Baixa compreensão do projeto | 0.5 |
| Não demonstrou compreensão mínima do projeto | 0.3 |
Exemplo de cálculo
Projeto avaliado com nota 8,0.
| Desempenho na apresentação | Nota final |
|---|---|
| Excelente compreensão (1.0) | 8,0 |
| Boa compreensão (0.9) | 7,2 |
| Compreensão parcial (0.7) | 5,6 |
| Baixa compreensão (0.5) | 4,0 |
Projetos com funcionalidades implementadas mas sem demonstração mínima de compreensão técnica poderão ter redução significativa na nota final.
Entrega e defesas
As entregas e avaliações ocorrerão de forma gradual em duas etapas:
- 03/06 — Primeira etapa: os critérios Página inicial e detalhes, CRUD Produto e CRUD 2 deverão estar implementados e funcionando corretamente.
- 17/06 — Última etapa: os demais critérios deverão estar implementados e o projeto completo deverá ser apresentado.