# Fluxograma - Smart Agenda

```mermaid
flowchart TD
  A([Abrir app Smart Agenda]) --> B{Utilizador autenticado?}

  B -- Nao --> C[Login]
  C --> D{Acao escolhida}
  D -- Entrar --> E{Credenciais validas?}
  E -- Nao --> C
  E -- Sim --> F{Tipo de conta}
  D -- Criar conta --> G[Registo]
  G --> H{Perfil selecionado}
  H -- Cliente --> C
  H -- Barbearia --> C
  D -- Explorar sem conta --> I[Explorar barbearias]

  B -- Sim --> F
  F -- Cliente --> J[Area do cliente]
  F -- Barbearia --> K[Painel da barbearia]

  subgraph Cliente
    J --> J1[Explorar]
    J --> J2[Carrinho]
    J --> J3[Perfil]

    I --> L[Detalhes da barbearia]
    J1 --> L
    L --> M{Acao na barbearia}

    M -- Agendar servico --> N{Tem sessao?}
    N -- Nao --> C
    N -- Sim --> O[Escolher servico]
    O --> P[Escolher profissional]
    P --> Q[Escolher dia e hora]
    Q --> R[Confirmar lembrete]
    R --> S[Criar agendamento]
    S --> T[Agendamento guardado]
    T --> J1

    M -- Adicionar produto --> U{Tem sessao?}
    U -- Nao --> C
    U -- Sim --> V[Adicionar ao carrinho]
    V --> J2
    J2 --> W[Rever itens por barbearia]
    W --> X{Finalizar compra}
    X -- Sem sessao --> C
    X -- Com sessao --> Y[Criar pedido]
    Y --> Z[Pedido guardado]

    J3 --> AA[Ver historico e favoritos]
    J3 --> AB[Criar evento pessoal]
    AA --> L
    AB --> J3
  end

  subgraph Barbearia
    K --> K1[Agenda]
    K --> K2[Servicos]
    K --> K3[Produtos]
    K --> K4[Equipa]
    K --> K5[Definicoes]

    K1 --> K1A[Ver marcacoes por data]
    K1A --> K1B[Atualizar estado da marcacao]

    K2 --> K2A[Criar / editar / apagar servicos]
    K3 --> K3A[Criar / editar / apagar produtos e stock]
    K4 --> K4A[Criar / editar / apagar barbeiros]
    K5 --> K5A[Atualizar dados, contactos, horarios e imagem]

    K1B --> DB[(Supabase)]
    K2A --> DB
    K3A --> DB
    K4A --> DB
    K5A --> DB
  end

  S --> DB
  Y --> DB
  V --> LS[(Armazenamento local)]
  AA --> DB
  C --> AUTH[(Supabase Auth)]
  G --> AUTH
  AUTH --> DB
```

## Resumo do fluxo

- Visitantes podem fazer login, criar conta ou explorar barbearias sem conta.
- Clientes autenticados podem explorar barbearias, marcar servicos, adicionar produtos ao carrinho, finalizar pedidos e consultar o perfil.
- Barbearias autenticadas entram no painel para gerir agenda, servicos, produtos, equipa e definicoes.
- Autenticacao e dados persistentes passam pelo Supabase; favoritos/carrinho tambem usam armazenamento local por utilizador.
