6.1 KiB
6.1 KiB
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 frameworkreact-dom- React DOMreact-router-dom- Routing@supabase/supabase-js- Backend@tanstack/react-query- Data fetchingzustand- State managementtailwindcss- Stylinglucide-react- Iconsframer-motion- Animationsjspdf- PDF generationpdf-lib- PDF manipulation
Development
typescript- Type safetyvite- Build tooltailwindcss- CSS frameworkpostcss- CSS processingeslint- 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
- TypeScript compilation (
tsc) - 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
- Desenvolvimento local:
npm run dev - Type checking:
npm run type-check - Linting:
npm run lint - Build:
npm run build - Preview:
npm run preview - Deploy:
vercelounpm run build+ push
📝 Convenções
Nomes de Arquivos
- Componentes: PascalCase (Button.tsx)
- Utilitários: camelCase (supabase.ts)
- Tipos: PascalCase (types.ts)
Estrutura de Componentes
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