Loading repository data…
Loading repository data…
saviosoaresUFC / repository
Este é um front-end de uma aplicação de delivery de comida, construído com Vue.js e Vite.
Bem-vindo ao projeto MyMenu! Este é um front-end de uma aplicação de delivery de comida, construído com Vue.js e Vite. Atualmente, a aplicação é parcialmente funcional e utiliza dados estáticos (mock data) para exibir o cardápio e simular o registro de usuários.
A instância Strapi deve estar disponível em http://localhost:8080 e atender:
Ter uma Collection Type Product (ou Produto) com campos:
name (Text)description (Text)price (Number/Float)image (Media)Permissões públicas (Public) para find e findOne na collection Product.
Permissão pública para register em Users & Permissions (para permitir registro).
Endpoints de auth padrão do Strapi:
POST /api/auth/local/register — registra usuário, retorna { jwt, user }POST /api/auth/local — login, retorna { jwt, user }Observação: dependendo da versão do Strapi os caminhos podem ser
/api/auth/local/registere/api/auth/local— ajuste conforme sua instância.
Praticar gerenciamento de estado global com Pinia, simulando um sistema de carrinho de compras e a autenticação JWT no frontend, com proteção de rotas usando o Vue Router.
Você vai criar a interface de uma aplicação de entrega de comida.
O usuário poderá:
O formulário de cadastro em /cadastro (RegisterView.vue) atualmente apenas simula um registro. Você irá conectá-lo ao endpoint de registro do Strapi.
Faça uma requisição POST para o endpoint /api/auth/local/register do Strapi. O Strapi espera um username, email e password. Você pode usar o campo name do formulário como username. Em caso de sucesso, o Strapi retornará um jwt e o objeto do usuário. Utilize esses dados para autenticar o usuário na aplicação imediatamente após o cadastro.
Assim como o cadastro, a tela de login (LoginView.vue) não tem funcionalidade. Sua tarefa é implementá-la.
Para garantir que apenas usuários logados possam adicionar itens ao carrinho, você precisa adicionar uma verificação de autenticação.
CartView.vue)A página do carrinho está usando dados estáticos. Vamos fazê-la funcionar de verdade.
NavBar.vue) DinâmicaA barra de navegação precisa refletir o estado de autenticação e o conteúdo do carrinho.
user.username) e o link "Sair" somente se o usuário estiver autenticado.totalItems) ao lado do link "Carrinho".logout .router.push({ name: 'Login', query: { redirect: to.fullPath } }) para melhorar a UX (retornar usuário à página desejada após login).