199 lines
6.1 KiB
Markdown
199 lines
6.1 KiB
Markdown
# Estrutura do Projeto SteelBook
|
|
|
|
## 📁 Diretório Raiz
|
|
|
|
```
|
|
steelbook/
|
|
├── src/ # Código fonte da aplicação
|
|
├── dist/ # Build de produção (gerado)
|
|
├── docs/ # Documentação
|
|
│ └── auxiliar/ # Documentação auxiliar
|
|
├── node_modules/ # Dependências (não versionado)
|
|
├── public/ # Arquivos estáticos
|
|
├── .vscode/ # Configurações do VS Code
|
|
├── .env # Variáveis de ambiente (não versionado)
|
|
├── .env.example # Template de variáveis
|
|
├── .gitignore # Arquivos ignorados pelo git
|
|
├── package.json # Dependências e scripts
|
|
├── tsconfig.json # Configuração TypeScript
|
|
├── vite.config.ts # Configuração Vite
|
|
├── tailwind.config.js # Configuração Tailwind
|
|
├── postcss.config.js # Configuração PostCSS
|
|
├── DOCUMENTACAO.md # Documentação principal
|
|
├── README.md # Readme do projeto
|
|
└── LICENSE # Licença do projeto
|
|
```
|
|
|
|
## 📂 Estrutura src/
|
|
|
|
```
|
|
src/
|
|
├── components/ # Componentes React reutilizáveis
|
|
│ ├── common/ # Componentes genéricos
|
|
│ │ ├── Button.tsx
|
|
│ │ ├── Input.tsx
|
|
│ │ ├── Modal.tsx
|
|
│ │ └── LoadingSpinner.tsx
|
|
│ ├── layout/ # Componentes de layout
|
|
│ │ ├── Layout.tsx
|
|
│ │ ├── Header.tsx
|
|
│ │ ├── Sidebar.tsx
|
|
│ │ └── Footer.tsx
|
|
│ ├── configuracoes/ # Componentes de configurações
|
|
│ ├── databook/ # Componentes de databook
|
|
│ ├── design/ # Componentes de design
|
|
│ └── ui/ # Componentes UI customizados
|
|
│
|
|
├── pages/ # Páginas da aplicação
|
|
│ ├── Login.tsx
|
|
│ ├── Dashboard.tsx
|
|
│ ├── Templates.tsx
|
|
│ ├── TemplateCreate.tsx
|
|
│ ├── TemplateEdit.tsx
|
|
│ ├── TopicosGestao.tsx
|
|
│ ├── Databooks.tsx
|
|
│ ├── DatabookNew.tsx
|
|
│ ├── DatabookEdit.tsx
|
|
│ ├── DatabookView.tsx
|
|
│ ├── Configuracoes.tsx
|
|
│ ├── Busca.tsx
|
|
│ ├── DesignDatabook.tsx
|
|
│ └── Busca.tsx
|
|
│
|
|
├── lib/ # Utilitários e configurações
|
|
│ ├── supabase.ts # Cliente Supabase
|
|
│ ├── store.ts # Zustand store
|
|
│ ├── toast.ts # Sistema de notificações
|
|
│ ├── mutations.ts # Mutations do Supabase
|
|
│ ├── pdfGenerator.ts # Gerador de PDF
|
|
│ ├── storage.ts # Upload de arquivos
|
|
│ ├── types.ts # Tipos do Supabase
|
|
│ └── constants.ts # Constantes da app
|
|
│
|
|
├── contexts/ # Context API
|
|
│ └── ThemeContext.tsx # Contexto de tema (dark/light)
|
|
│
|
|
├── hooks/ # Custom hooks
|
|
│ ├── useDesignConfig.ts
|
|
│ └── useAuth.ts
|
|
│
|
|
├── types/ # Tipos TypeScript globais
|
|
│ └── index.ts
|
|
│
|
|
├── App.tsx # Componente raiz
|
|
├── main.tsx # Entrada da aplicação
|
|
└── index.css # Estilos globais
|
|
```
|
|
|
|
## 🔄 Fluxo de Dados
|
|
|
|
```
|
|
App.tsx (Lazy Loading)
|
|
├── ThemeProvider
|
|
├── QueryClientProvider
|
|
└── BrowserRouter
|
|
├── Login (Lazy)
|
|
└── Layout
|
|
├── Header
|
|
├── Sidebar
|
|
└── Routes (Lazy)
|
|
├── Dashboard
|
|
├── Templates
|
|
├── Databooks
|
|
└── ...
|
|
```
|
|
|
|
## 📦 Dependências Principais
|
|
|
|
### Runtime
|
|
- `react` - UI framework
|
|
- `react-dom` - React DOM
|
|
- `react-router-dom` - Routing
|
|
- `@supabase/supabase-js` - Backend
|
|
- `@tanstack/react-query` - Data fetching
|
|
- `zustand` - State management
|
|
- `tailwindcss` - Styling
|
|
- `lucide-react` - Icons
|
|
- `framer-motion` - Animations
|
|
- `jspdf` - PDF generation
|
|
- `pdf-lib` - PDF manipulation
|
|
|
|
### Development
|
|
- `typescript` - Type safety
|
|
- `vite` - Build tool
|
|
- `tailwindcss` - CSS framework
|
|
- `postcss` - CSS processing
|
|
- `eslint` - Linting
|
|
|
|
## 🔐 Segurança
|
|
|
|
- Variáveis de ambiente em `.env` (não versionado)
|
|
- Service role key apenas no servidor
|
|
- Anon key para cliente
|
|
- CORS configurado no Supabase
|
|
|
|
## 🚀 Build Process
|
|
|
|
1. TypeScript compilation (`tsc`)
|
|
2. Vite build com:
|
|
- Code splitting
|
|
- Tree shaking
|
|
- Minification (esbuild)
|
|
- Asset optimization
|
|
|
|
## 📊 Tamanho do Projeto
|
|
|
|
- Código fonte: ~500 KB
|
|
- Build (gzip): ~200 KB
|
|
- Chunks otimizados para caching
|
|
|
|
## 🔄 Ciclo de Desenvolvimento
|
|
|
|
1. Desenvolvimento local: `npm run dev`
|
|
2. Type checking: `npm run type-check`
|
|
3. Linting: `npm run lint`
|
|
4. Build: `npm run build`
|
|
5. Preview: `npm run preview`
|
|
6. Deploy: `vercel` ou `npm run build` + push
|
|
|
|
## 📝 Convenções
|
|
|
|
### Nomes de Arquivos
|
|
- Componentes: PascalCase (Button.tsx)
|
|
- Utilitários: camelCase (supabase.ts)
|
|
- Tipos: PascalCase (types.ts)
|
|
|
|
### Estrutura de Componentes
|
|
```tsx
|
|
import { useState } from 'react'
|
|
import { useQuery } from '@tanstack/react-query'
|
|
|
|
interface Props {
|
|
// Props
|
|
}
|
|
|
|
export default function ComponentName({ prop }: Props) {
|
|
// Hooks
|
|
// State
|
|
// Effects
|
|
// Handlers
|
|
// Render
|
|
return <div>...</div>
|
|
}
|
|
```
|
|
|
|
### Imports
|
|
- Imports de bibliotecas primeiro
|
|
- Depois imports locais
|
|
- Depois tipos
|
|
- Ordenados alfabeticamente
|
|
|
|
## 🎯 Próximas Melhorias
|
|
|
|
- [ ] Adicionar testes unitários
|
|
- [ ] Adicionar testes E2E
|
|
- [ ] Implementar Service Worker
|
|
- [ ] Adicionar monitoring
|
|
- [ ] Implementar PWA
|
|
- [ ] Adicionar analytics
|