chore: add project files and setup gitignore
This commit is contained in:
168
docs/03_PROJECT_STRUCTURE.md
Normal file
168
docs/03_PROJECT_STRUCTURE.md
Normal file
@@ -0,0 +1,168 @@
|
||||
# 📁 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*
|
||||
Reference in New Issue
Block a user