Files
NaMesa_site/docs/03_PROJECT_STRUCTURE.md

169 lines
6.7 KiB
Markdown

# 📁 Estrutura do Projeto — ReservaMesa
## Estrutura de Pastas
```
reserva-mesa-dashboard/
├── 📁 app/ # Next.js App Router
│ ├── 📁 (auth)/ # Route group — não autenticado
│ │ ├── login/
│ │ │ └── page.tsx # Página de login
│ │ └── register/
│ │ └── page.tsx # Onboarding do restaurante
│ │
│ ├── 📁 (dashboard)/ # Route group — autenticado
│ │ ├── layout.tsx # Layout com sidebar
│ │ │
│ │ ├── page.tsx # Dashboard principal (/)
│ │ │
│ │ ├── 📁 reservations/
│ │ │ ├── page.tsx # Lista de reservas
│ │ │ ├── [id]/
│ │ │ │ └── page.tsx # Detalhe da reserva
│ │ │ └── new/
│ │ │ └── page.tsx # Nova reserva manual
│ │ │
│ │ ├── 📁 tables/
│ │ │ ├── page.tsx # Gestão de mesas (mapa visual)
│ │ │ └── settings/
│ │ │ └── page.tsx # Configurar mesas
│ │ │
│ │ ├── 📁 calendar/
│ │ │ └── page.tsx # Vista calendário
│ │ │
│ │ ├── 📁 analytics/
│ │ │ └── page.tsx # Relatórios e estatísticas
│ │ │
│ │ ├── 📁 settings/
│ │ │ ├── page.tsx # Definições do restaurante
│ │ │ ├── timeslots/
│ │ │ │ └── page.tsx # Configurar slots de tempo
│ │ │ └── notifications/
│ │ │ └── page.tsx # Preferências de notificação
│ │ │
│ │ └── 📁 staff/
│ │ └── page.tsx # Gestão de funcionários
│ │
│ ├── 📁 api/ # API Routes Next.js
│ │ ├── webhooks/
│ │ │ └── route.ts # Webhooks externos
│ │ └── export/
│ │ └── route.ts # Export de dados (CSV/PDF)
│ │
│ ├── layout.tsx # Root layout
│ ├── globals.css # Estilos globais
│ └── not-found.tsx
├── 📁 components/
│ ├── 📁 ui/ # Shadcn/UI components
│ │ ├── button.tsx
│ │ ├── calendar.tsx
│ │ ├── dialog.tsx
│ │ └── ...
│ │
│ ├── 📁 layout/
│ │ ├── Sidebar.tsx # Navegação lateral
│ │ ├── Header.tsx # Topbar com notificações
│ │ └── MobileNav.tsx # Navegação mobile
│ │
│ ├── 📁 dashboard/
│ │ ├── StatsCards.tsx # Cards de métricas do dia
│ │ ├── TodayTimeline.tsx # Timeline de reservas hoje
│ │ ├── QuickActions.tsx # Ações rápidas
│ │ └── RecentActivity.tsx # Feed de atividade recente
│ │
│ ├── 📁 reservations/
│ │ ├── ReservationCard.tsx # Card individual de reserva
│ │ ├── ReservationTable.tsx # Tabela de reservas
│ │ ├── ReservationForm.tsx # Formulário criar/editar
│ │ ├── StatusBadge.tsx # Badge de status colorido
│ │ └── ReservationFilters.tsx # Filtros de pesquisa
│ │
│ ├── 📁 tables/
│ │ ├── FloorPlan.tsx # Mapa visual do restaurante
│ │ ├── TableCard.tsx # Card de mesa individual
│ │ └── TableEditor.tsx # Editor de disposição
│ │
│ └── 📁 analytics/
│ ├── OccupancyChart.tsx # Gráfico de ocupação
│ ├── RevenueChart.tsx # Gráfico de receita estimada
│ └── PeakHoursChart.tsx # Horários de pico
├── 📁 lib/
│ ├── firebase.ts # Inicialização Firebase
│ ├── firestore.ts # Helpers Firestore
│ ├── auth.ts # Helpers Auth
│ └── utils.ts # Utilitários gerais
├── 📁 hooks/
│ ├── useReservations.ts # Hook para reservas em RT
│ ├── useTables.ts # Hook para mesas em RT
│ ├── useRestaurant.ts # Hook dados do restaurante
│ └── useNotifications.ts # Hook notificações
├── 📁 store/
│ └── useAppStore.ts # Zustand store global
├── 📁 types/
│ ├── reservation.ts # Tipos de reserva
│ ├── table.ts # Tipos de mesa
│ ├── restaurant.ts # Tipos de restaurante
│ └── user.ts # Tipos de utilizador
├── 📁 constants/
│ └── index.ts # Constantes (status, zones, etc.)
├── middleware.ts # Proteção de rotas Auth
├── next.config.js
├── tailwind.config.js
├── tsconfig.json
└── package.json
```
---
## Páginas e Funcionalidades
### 🏠 Dashboard (`/`)
- Total de reservas hoje
- Ocupação atual (% de mesas ocupadas)
- Próximas chegadas (próximas 2h)
- Alertas: no-shows, cancelamentos recentes
- Quick actions: Nova reserva, Check-in rápido
### 📋 Reservas (`/reservations`)
- Lista com filtros: data, status, zona, tamanho do grupo
- Pesquisa por nome/telefone do cliente
- Acções inline: confirmar, sentar, cancelar, no-show
- Criar reserva manual (para reservas por telefone)
### 🗺️ Mesas (`/tables`)
- Mapa visual drag-and-drop do restaurante
- Estado visual: livre (verde), reservada (amarelo), ocupada (vermelho)
- Clicar numa mesa abre o painel com reserva atual
- Modo de edição para reconfigurar layout
### 📅 Calendário (`/calendar`)
- Vista mensal/semanal/diária
- Blocos coloridos por zona
- Arrastar para mover reservas (com validação de conflitos)
### 📊 Analytics (`/analytics`)
- Taxa de ocupação por dia/semana/mês
- Horários de maior procura
- Taxa de cancelamentos e no-shows
- Tempo médio de ocupação de mesa
- Export CSV
### ⚙️ Configurações (`/settings`)
- Dados do restaurante (nome, morada, contacto, logo)
- Horário de funcionamento
- Slots de tempo disponíveis para reserva
- Capacidade máxima por slot
- Notificações (email, SMS — integrações futuras)
---
*Versão: 1.0.0 | Maio 2026*