Files
petlink_final/docs/05-fluxos-utilizador.md
2026-05-04 09:43:36 +01:00

7.1 KiB

5. Fluxos de Utilizador

5.1 User Stories

ID Como... Quero... Para...
US-01 Visitante Ver animais disponíveis sem criar conta Descobrir se há animais que me interessem antes de me registar
US-02 Visitante Filtrar animais por distrito e espécie Encontrar animais próximos de mim rapidamente
US-03 Visitante Ver o perfil de um canil com horários Saber quando posso visitar antes de reservar
US-04 Utilizador Criar conta com os meus dados Poder adoptar animais e fazer doações
US-05 Utilizador Reservar um animal para adopção Garantir o animal antes de me deslocar ao canil
US-06 Utilizador Receber email de confirmação da reserva Ter prova escrita e recordar a data marcada
US-07 Utilizador Fazer uma doação monetária a um canil Apoiar financeiramente um canil próximo de mim
US-08 Utilizador Doar ração ou brinquedos Contribuir com bens essenciais sem precisar de dinheiro
US-09 Utilizador Escolher se entrego ou peço recolha Ter flexibilidade na logística da doação
US-10 Utilizador Ver o meu histórico de adopções e doações Acompanhar o meu impacto ao longo do tempo
US-11 Utilizador Activar o modo escuro Reduzir cansaço visual ao usar a plataforma
US-12 Utilizador Alterar a minha palavra-passe Manter a minha conta segura
US-13 Canil Gerir os meus animais registados Ter controlo sobre quais animais estão disponíveis
US-14 Canil Ver e confirmar reservas recebidas Preparar o animal para o dia do levantamento
US-15 Canil Indicar as minhas necessidades actuais Receber doações específicas do que me faz falta
US-16 Admin Supervisionar canis e utilizadores Garantir qualidade e segurança da plataforma

5.2 Fluxo de Registo

Visitante clica "Criar Conta" (menu — 3 traços, canto superior direito)
    │
    ▼
Preenche formulário:
  • Nome completo
  • Email
  • Palavra-passe (mínimo 8 caracteres, 1 maiúscula, 1 número)
  • Confirmação de palavra-passe
  • Data de nascimento
  • Distrito
  • Checkbox: Concordo com os Termos e Política de Privacidade
    │
    ▼
[Servidor] Valida se idade ≥ 18 anos
    ├── Não → Mostra erro: "É necessário ter 18 ou mais anos para criar conta"
    └── Sim → Continua
    │
    ▼
[Servidor] Verifica se email já existe
    ├── Sim → Mostra erro: "Este email já está registado"
    └── Não → Cria conta com palavra-passe em bcrypt hash
    │
    ▼
Envia email de verificação (Resend)
    │
    ▼
Utilizador confirma email → Redirecionado para página inicial com sessão activa

5.3 Fluxo de Login

Utilizador clica "Iniciar Sessão" no menu
    │
    ▼
Preenche email e palavra-passe
    │
    ▼
[Servidor] NextAuth verifica credenciais
    ├── Inválidas → Mostra erro genérico (não especificar qual campo falhou — segurança)
    └── Válidas → Cria sessão JWT
    │
    ▼
Redirecionado para a página onde estava (ou página inicial)

5.4 Fluxo Completo de Adopção

1. DESCOBERTA
   ├── Página inicial → lista todos os animais disponíveis (SSR)
   ├── Filtros disponíveis: distrito, espécie, raça, sexo, esterilizado, faixa etária
   └── Animais urgentes têm badge "Urgente" destacado

2. DETALHES DO ANIMAL
   ├── Clica no animal → abre ficha completa
   ├── Galeria de fotos
   ├── Informações: nome, espécie, raça, idade, sexo, esterilizado, descrição
   └── Secção do canil → nome, distrito
        └── Clica no canil → modal/página com:
             • Morada completa
             • Horário de funcionamento (dia a dia)
             • Telefone e email

3. RESERVA
   ├── Clica "Adoptar"
   ├── [Sem sessão] → Redirect para login/registo com mensagem explicativa
   ├── [Com sessão] → Abre calendário de reservas
   ├── Dias disponíveis: dias em que o canil está aberto e sem reservas em excesso
   ├── Selecciona data → formulário de confirmação
   │    • Nome do utilizador (pré-preenchido)
   │    • Data seleccionada
   │    • Nome do animal e canil
   │    • Nota opcional para o canil
   └── Confirma

4. PÓS-RESERVA
   ├── Animal muda para status RESERVED
   ├── Email de confirmação enviado (Resend):
   │    • Assunto: "Reserva confirmada — [Nome do Animal] no [Nome do Canil]"
   │    • Data e hora de levantamento
   │    • Morada do canil
   │    • Horário de funcionamento
   │    • Instruções para cancelamento
   └── Reserva visível em "Conta → As Minhas Adopções"

5. DIA DO LEVANTAMENTO
   ├── Utilizador dirige-se ao canil na data marcada
   ├── Canil confirma levantamento → status muda para COMPLETED
   └── Animal muda para status ADOPTED

5.5 Fluxo de Doação — Monetária

Clica "Fazer Doação"
    │
    ▼
[Sem sessão] → Redirect para login com mensagem: "Para doar é necessário ter conta"
[Com sessão, <18 anos] → Confirmação extra de data de nascimento
    │
    ▼
Escolhe tipo: MONETÁRIA
    │
    ▼
Escolhe canil:
  ┌── "Da minha localidade" → lista canis no distrito do utilizador
  └── "Outra localidade" → pesquisa por distrito/nome do canil
    │
    ▼
Insere montante (mínimo: 1€)
    │
    ▼
Escolhe método de pagamento:
  ┌── Cartão de Crédito/Débito
  └── MBWay (introduz número de telemóvel)
    │
    ▼
Stripe processa pagamento (dados nunca passam nos nossos servidores)
    │
    ▼
Confirmação:
  • Página de sucesso com animação
  • Email com recibo de doação
  • Visível em "Conta → Histórico de Doações"

5.6 Fluxo de Doação — Ração / Brinquedos

Escolhe tipo: RAÇÃO ou BRINQUEDOS
    │
    ▼
Lista de canis que necessitam e aceitam este tipo de donativo
(baseada nas ShelterNeeds activas)
    │
    ▼
Selecciona canil
    │
    ▼
[RAÇÃO] Especifica:
  • Tipo: Seca / Húmida
  • Para: Cão / Gato
  • Faixa etária: Adulto / Filhote / Sénior

[BRINQUEDOS] Especifica:
  • Categoria: Mordedor / Pelúcia / Interactivo / Corda
    │
    ▼
Escolhe modalidade de entrega:
  ┌── "Levo eu ao canil"
  │    └── Mostra horários e morada do canil seleccionado
  └── "Quero recolha em casa"
       ├── Confirma/edita morada de recolha
       └── Selecciona data e período preferencial (manhã/tarde)
    │
    ▼
Confirmação:
  • Canil recebe notificação com todos os detalhes
  • Utilizador recebe email de confirmação
  • Visível em "Conta → Histórico de Doações"

5.7 Navegação e Menu

O menu é acedido pelos 3 traços no canto superior direito e contém:

Sem sessão:

  • Iniciar Sessão
  • Criar Conta

Com sessão:

  • A Minha Conta (nome do utilizador)
  • As Minhas Adopções
  • Histórico de Doações
  • Definições
    • Dados da Conta
    • Alterar Palavra-passe
    • Modo Escuro / Claro (toggle)
  • Terminar Sessão