forlogic-core 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/README.md ADDED
@@ -0,0 +1,248 @@
1
+ # ForLogic Core
2
+
3
+ > **Biblioteca empresarial com React + TypeScript + Supabase**
4
+ > Sistema CRUD completo, autenticação, integração Qualiex e componentes UI prontos.
5
+
6
+ ---
7
+
8
+ ## 📦 Instalação
9
+
10
+ ```bash
11
+ npm install forlogic-core
12
+ ```
13
+
14
+ ### Peer Dependencies
15
+
16
+ A biblioteca requer as seguintes dependências (geralmente já presentes em projetos React):
17
+
18
+ ```bash
19
+ npm install react react-dom react-router-dom @tanstack/react-query
20
+ ```
21
+
22
+ ---
23
+
24
+ ## 🚀 Quick Start
25
+
26
+ ### 1. Configuração Inicial
27
+
28
+ ```tsx
29
+ // src/main.tsx
30
+ import { setupQualiexCore } from 'forlogic-core';
31
+ import 'forlogic-core/index.css';
32
+
33
+ setupQualiexCore({
34
+ supabaseUrl: import.meta.env.VITE_SUPABASE_URL,
35
+ supabaseAnonKey: import.meta.env.VITE_SUPABASE_ANON_KEY
36
+ });
37
+ ```
38
+
39
+ ### 2. Estrutura de Providers
40
+
41
+ ```tsx
42
+ // src/App.tsx
43
+ import { ErrorBoundary, QueryClientProvider, AuthProvider } from 'forlogic-core';
44
+ import { BrowserRouter } from 'react-router-dom';
45
+
46
+ function App() {
47
+ return (
48
+ <ErrorBoundary>
49
+ <QueryClientProvider client={queryClient}>
50
+ <AuthProvider>
51
+ <BrowserRouter>
52
+ {/* Suas rotas aqui */}
53
+ </BrowserRouter>
54
+ </AuthProvider>
55
+ </QueryClientProvider>
56
+ </ErrorBoundary>
57
+ );
58
+ }
59
+ ```
60
+
61
+ ### 3. Criar uma Página CRUD Completa
62
+
63
+ ```tsx
64
+ // src/employees/EmployeesPage.tsx
65
+ import { createCrudPage, createSimpleService, useCrud } from 'forlogic-core';
66
+
67
+ // 1. Definir tipo
68
+ interface Employee {
69
+ id?: string;
70
+ name: string;
71
+ email: string;
72
+ role: string;
73
+ }
74
+
75
+ // 2. Criar service
76
+ const service = createSimpleService<Employee>('employees', {
77
+ schemaName: 'central' // Usar schema do seu projeto
78
+ });
79
+
80
+ // 3. Criar hook
81
+ const useEmployeesCrud = () => useCrud({
82
+ service,
83
+ queryKey: 'employees'
84
+ });
85
+
86
+ // 4. Configurar colunas e formulário
87
+ const columns = [
88
+ { key: 'name', label: 'Nome' },
89
+ { key: 'email', label: 'Email' },
90
+ { key: 'role', label: 'Cargo' }
91
+ ];
92
+
93
+ const formSections = [
94
+ {
95
+ title: 'Dados do Funcionário',
96
+ fields: [
97
+ { name: 'name', label: 'Nome', type: 'text', required: true },
98
+ { name: 'email', label: 'Email', type: 'email', required: true },
99
+ { name: 'role', label: 'Cargo', type: 'text', required: true }
100
+ ]
101
+ }
102
+ ];
103
+
104
+ // 5. Exportar página
105
+ export default createCrudPage({
106
+ useCrud: useEmployeesCrud,
107
+ columns,
108
+ formSections,
109
+ title: 'Funcionários'
110
+ });
111
+ ```
112
+
113
+ ---
114
+
115
+ ## 📚 Documentação Completa
116
+
117
+ A documentação detalhada está disponível em:
118
+
119
+ - **[Regras para IA](dist/docs/AI_RULES.md)** - Checklist crítico para desenvolvimento assistido por IA
120
+ - **[Troubleshooting](dist/docs/TROUBLESHOOTING.md)** - Soluções para problemas comuns
121
+ - **[Templates Prontos](dist/docs/templates/)** - Códigos completos para copiar e usar
122
+ - **[Navegação da Docs](dist/docs/README.md)** - Hub central da documentação
123
+
124
+ ---
125
+
126
+ ## 🎯 Recursos Principais
127
+
128
+ ### ✅ Sistema CRUD Completo
129
+ - Tabelas com paginação, filtros e ordenação
130
+ - Formulários automáticos com validação
131
+ - Cards responsivos para mobile
132
+ - Ações em lote (deletar múltiplos)
133
+
134
+ ### 🔐 Autenticação
135
+ - Login/logout automático
136
+ - Proteção de rotas
137
+ - Integração com Supabase Auth
138
+ - Gerenciamento de tokens
139
+
140
+ ### 🎨 Componentes UI
141
+ - 50+ componentes prontos (shadcn/ui)
142
+ - Design system completo
143
+ - Dark mode nativo
144
+ - Totalmente customizável
145
+
146
+ ### 🔗 Integrações
147
+ - **Qualiex**: Componentes para seleção de usuários
148
+ - **Supabase**: Cliente configurado automaticamente
149
+ - **React Query**: Cache e sincronização de dados
150
+
151
+ ---
152
+
153
+ ## 💡 Exemplo de Uso Completo
154
+
155
+ ```tsx
156
+ import {
157
+ createCrudPage,
158
+ createSimpleService,
159
+ useCrud,
160
+ QualiexUserField
161
+ } from 'forlogic-core';
162
+
163
+ interface Task {
164
+ id?: string;
165
+ title: string;
166
+ description: string;
167
+ responsible_id: string;
168
+ status: 'pending' | 'in_progress' | 'done';
169
+ }
170
+
171
+ const service = createSimpleService<Task>('tasks', {
172
+ schemaName: 'central'
173
+ });
174
+
175
+ const useTasksCrud = () => useCrud({ service, queryKey: 'tasks' });
176
+
177
+ export default createCrudPage({
178
+ useCrud: useTasksCrud,
179
+ columns: [
180
+ { key: 'title', label: 'Título' },
181
+ { key: 'status', label: 'Status' },
182
+ ],
183
+ formSections: [
184
+ {
185
+ title: 'Dados da Tarefa',
186
+ fields: [
187
+ { name: 'title', label: 'Título', type: 'text', required: true },
188
+ { name: 'description', label: 'Descrição', type: 'textarea' },
189
+ {
190
+ name: 'responsible_id',
191
+ label: 'Responsável',
192
+ type: 'custom',
193
+ component: QualiexUserField
194
+ },
195
+ {
196
+ name: 'status',
197
+ label: 'Status',
198
+ type: 'select',
199
+ options: [
200
+ { value: 'pending', label: 'Pendente' },
201
+ { value: 'in_progress', label: 'Em Progresso' },
202
+ { value: 'done', label: 'Concluído' }
203
+ ]
204
+ }
205
+ ]
206
+ }
207
+ ],
208
+ title: 'Tarefas'
209
+ });
210
+ ```
211
+
212
+ ---
213
+
214
+ ## 🔧 Configuração Avançada
215
+
216
+ ### Import Modular (Tree-shaking)
217
+
218
+ Para bundles menores, use imports específicos:
219
+
220
+ ```tsx
221
+ import { Button, Input, Card } from 'forlogic-core/modular';
222
+ ```
223
+
224
+ ### Customização de Tema
225
+
226
+ Edite `index.css` no seu projeto:
227
+
228
+ ```css
229
+ :root {
230
+ --primary: 220 70% 50%;
231
+ --secondary: 210 40% 96.1%;
232
+ /* ... outros tokens */
233
+ }
234
+ ```
235
+
236
+ ---
237
+
238
+ ## 📖 Links Úteis
239
+
240
+ - **GitHub**: [forlogic-core](https://github.com/forlogic/forlogic-core)
241
+ - **NPM**: [forlogic-core](https://www.npmjs.com/package/forlogic-core)
242
+ - **Suporte**: [Issues](https://github.com/forlogic/forlogic-core/issues)
243
+
244
+ ---
245
+
246
+ ## 📝 Licença
247
+
248
+ MIT License - ForLogic © 2025
@@ -0,0 +1,213 @@
1
+ # ForLogic Core - Regras Críticas para IA
2
+
3
+ ⚠️ **CONSULTAR SEMPRE antes de implementar funcionalidades**
4
+
5
+ **Documentação completa:** `forlogic-core/dist/README.md` (quando instalado via npm)
6
+
7
+ ---
8
+
9
+ ## 📋 Checklist Rápido
10
+
11
+ Antes de criar qualquer funcionalidade:
12
+
13
+ - [ ] ✅ Verificar schema do projeto em `KNOWLEDGE.md`
14
+ - [ ] ✅ Usar template CRUD padrão (Regra #2)
15
+ - [ ] ✅ NÃO recriar integrações existentes (Regra #3 e #4)
16
+ - [ ] ✅ Usar `useMemo()` em configs (Regra #5)
17
+ - [ ] ✅ NÃO criar índices sem solicitação (Regra #6)
18
+
19
+ ---
20
+
21
+ ## ⚠️ Regra #1: Schema do Projeto
22
+
23
+ **Problema:** IA usa `public` quando projeto tem schema customizado.
24
+
25
+ **Solução:**
26
+ 1. **SEMPRE verificar** `KNOWLEDGE.md` → "Schema do Banco"
27
+ 2. **NUNCA assumir** schema `public`
28
+ 3. **Configurar corretamente** em todos os services
29
+
30
+ **Exemplo:**
31
+ ```typescript
32
+ // ❌ ERRADO (assume public)
33
+ const service = createSimpleService<Employee>('employees');
34
+
35
+ // ✅ CORRETO (usa schema do projeto)
36
+ const service = createSimpleService<Employee>('employees', {
37
+ schemaName: 'central' // ← schema do KNOWLEDGE.md
38
+ });
39
+ ```
40
+
41
+ **Ver detalhes:** README.md → "Quick Start" → Seção 1
42
+
43
+ ---
44
+
45
+ ## ⚠️ Regra #2: Template CRUD Padrão (Único)
46
+
47
+ **Problema:** IA cria CRUDs customizados complexos desnecessariamente.
48
+
49
+ **Solução:** Usar SEMPRE o template único de 4 passos:
50
+
51
+ ```typescript
52
+ // 1. Service
53
+ const service = createSimpleService<Entity>('table_name', { schemaName: 'central' });
54
+
55
+ // 2. Hook
56
+ const useCrud = () => useCrud({ service, queryKey: 'entities' });
57
+
58
+ // 3. Save Handler
59
+ const handleSave = createSimpleSaveHandler({
60
+ service,
61
+ queryClient,
62
+ queryKey: 'entities',
63
+ successMessage: 'Salvo com sucesso!',
64
+ errorMessage: 'Erro ao salvar'
65
+ });
66
+
67
+ // 4. Página
68
+ export default createCrudPage({
69
+ useCrud,
70
+ columns: [...],
71
+ formSections: [...],
72
+ handleSave
73
+ });
74
+ ```
75
+
76
+ **Ver exemplos completos:** README.md → "Quick Start" → Seção 3
77
+
78
+ ---
79
+
80
+ ## ⚠️ Regra #3: Integração Qualiex
81
+
82
+ **Problema:** IA recria componentes de seleção de usuários do Qualiex.
83
+
84
+ **Solução:** Usar componentes prontos da lib:
85
+
86
+ ```typescript
87
+ import { QualiexUserField, QualiexResponsibleSelectField } from 'forlogic-core';
88
+
89
+ // Campo simples
90
+ <QualiexUserField
91
+ name="user_id"
92
+ label="Usuário"
93
+ control={control}
94
+ />
95
+
96
+ // Campo com múltipla seleção
97
+ <QualiexResponsibleSelectField
98
+ name="responsibles"
99
+ label="Responsáveis"
100
+ control={control}
101
+ isMulti
102
+ />
103
+ ```
104
+
105
+ **NÃO criar:** Componentes customizados, hooks próprios, integrações manuais.
106
+
107
+ **Ver detalhes:** README.md → "Integrações" ou templates/qualiex-integration-example.tsx
108
+
109
+ ---
110
+
111
+ ## ⚠️ Regra #4: Integração Supabase
112
+
113
+ **Problema:** IA cria cliente Supabase próprio ou configurações manuais.
114
+
115
+ **Solução:** Usar setup automático via `setupQualiexCore()`:
116
+
117
+ ```typescript
118
+ // src/main.tsx
119
+ import { setupQualiexCore } from 'forlogic-core';
120
+
121
+ setupQualiexCore({
122
+ supabaseUrl: import.meta.env.VITE_SUPABASE_URL,
123
+ supabaseAnonKey: import.meta.env.VITE_SUPABASE_ANON_KEY
124
+ });
125
+ ```
126
+
127
+ **NÃO criar:** Clientes Supabase manuais, configurações duplicadas.
128
+
129
+ **Ver detalhes:** README.md → "Quick Start" → Seção 1
130
+
131
+ ---
132
+
133
+ ## ⚠️ Regra #5: Performance (Evitar Reloads)
134
+
135
+ **Problema:** Página recarrega ao trocar de rota (sidebar pisca, estado reseta).
136
+
137
+ **Causa:** Configs recriadas a cada render (ex: `sidebarConfig` sem `useMemo`).
138
+
139
+ **Solução:**
140
+
141
+ ### ✅ Usar `useMemo()` em configs:
142
+ ```typescript
143
+ const sidebarConfig = useMemo(() => ({
144
+ modules: [...]
145
+ }), []); // ← Dependências vazias se config é estático
146
+ ```
147
+
148
+ ### ✅ Estruturar rotas com `<Outlet />`:
149
+ ```typescript
150
+ <Routes>
151
+ <Route path="/" element={<AppLayout sidebarConfig={sidebarConfig} />}>
152
+ <Route index element={<HomePage />} />
153
+ <Route path="employees" element={<EmployeesPage />} />
154
+ </Route>
155
+ </Routes>
156
+ ```
157
+
158
+ **Ver detalhes:** README.md → "Quick Start" → Seção 2 ou templates/app-layout.tsx
159
+
160
+ ---
161
+
162
+ ## ⚠️ Regra #6: Índices de Banco de Dados
163
+
164
+ **Problema:** IA cria índices automaticamente em migrations sem necessidade.
165
+
166
+ **Solução:**
167
+ - ✅ **NÃO criar índices automaticamente**
168
+ - ✅ **Criar índices APENAS quando:**
169
+ - Usuário solicita explicitamente
170
+ - Performance está degradada e índice é a solução
171
+ - Há justificativa técnica clara
172
+
173
+ **Exemplo de quando NÃO criar:**
174
+ ```sql
175
+ -- ❌ NÃO FAZER (sem solicitação)
176
+ CREATE INDEX idx_employees_name ON central.employees(name);
177
+ CREATE INDEX idx_employees_created_at ON central.employees(created_at);
178
+ ```
179
+
180
+ **Exemplo de quando criar:**
181
+ ```sql
182
+ -- ✅ OK (usuário solicitou explicitamente)
183
+ -- "Por favor, crie um índice em 'email' para acelerar as buscas"
184
+ CREATE INDEX idx_employees_email ON central.employees(email);
185
+ ```
186
+
187
+ ---
188
+
189
+ ## 🎯 Boas Práticas
190
+
191
+ ### Ordem dos Providers (App.tsx)
192
+ ```typescript
193
+ <ErrorBoundary>
194
+ <QueryClientProvider client={queryClient}>
195
+ <AuthProvider>
196
+ <BrowserRouter>
197
+ <Routes>...</Routes>
198
+ </BrowserRouter>
199
+ </AuthProvider>
200
+ </QueryClientProvider>
201
+ </ErrorBoundary>
202
+ ```
203
+
204
+ **Nota:** Se inverter, a própria IA verá o erro no console e corrigirá.
205
+
206
+ ---
207
+
208
+ ## 🔗 Links Úteis
209
+
210
+ - **Documentação Completa:** `forlogic-core/dist/README.md`
211
+ - **Templates Prontos:** `forlogic-core/dist/docs/templates/`
212
+ - **Troubleshooting:** `forlogic-core/dist/docs/TROUBLESHOOTING.md`
213
+ - **Hub da Docs:** `forlogic-core/dist/docs/README.md`
@@ -0,0 +1,102 @@
1
+ # ForLogic Core - Documentação
2
+
3
+ > **Sistema empresarial completo com React + TypeScript + Supabase**
4
+
5
+ Esta é a documentação completa da biblioteca `forlogic-core` para desenvolvimento acelerado de sistemas empresariais.
6
+
7
+ ---
8
+
9
+ ## 📖 Documentação Principal
10
+
11
+ ### 📦 [README.md](../README.md)
12
+ **Instalação e Quick Start**
13
+
14
+ Use este guia para:
15
+ - Instalar a biblioteca
16
+ - Configuração inicial
17
+ - Primeiro exemplo CRUD
18
+ - Visão geral dos recursos
19
+
20
+ ### 🤖 [AI_RULES.md](AI_RULES.md)
21
+ **Regras críticas para desenvolvimento com IA**
22
+
23
+ Use este guia quando:
24
+ - Desenvolver com assistência de IA
25
+ - Evitar problemas comuns
26
+ - Seguir melhores práticas
27
+ - Verificar checklist antes de criar funcionalidades
28
+
29
+ ### 🔧 [TROUBLESHOOTING.md](TROUBLESHOOTING.md)
30
+ **Soluções para problemas comuns**
31
+
32
+ Use este guia quando:
33
+ - Encontrar erros inesperados
34
+ - Precisar depurar problemas
35
+ - Buscar soluções rápidas
36
+
37
+ ---
38
+
39
+ ---
40
+
41
+ ## 📁 Templates Prontos
42
+
43
+ Códigos completos e funcionais em `templates/`:
44
+
45
+ - **[app-layout.tsx](templates/app-layout.tsx)** - Layout principal com sidebar e autenticação
46
+ - **[basic-crud-page.tsx](templates/basic-crud-page.tsx)** - CRUD básico completo
47
+ - **[complete-crud-example.tsx](templates/complete-crud-example.tsx)** - CRUD com todos os recursos
48
+ - **[custom-form.tsx](templates/custom-form.tsx)** - Formulário personalizado
49
+ - **[custom-service.tsx](templates/custom-service.tsx)** - Service customizado
50
+ - **[qualiex-integration-example.tsx](templates/qualiex-integration-example.tsx)** - Integração com Qualiex
51
+ - **[sidebar-config.tsx](templates/sidebar-config.tsx)** - Configuração de menu lateral
52
+
53
+ ---
54
+
55
+ ## 📚 Documentação Adicional
56
+
57
+ - **[CRUD System](../crud/README.md)** - Documentação técnica do sistema CRUD
58
+ - **[Architecture](architecture/)** - Documentos sobre arquitetura interna
59
+
60
+ ---
61
+
62
+ ## 🧭 Navegação Rápida
63
+
64
+ | Documento | O que contém | Para quem |
65
+ |-----------|-------------|-----------|
66
+ | **README.md** | Instalação, Quick Start, exemplos básicos | Iniciantes, primeiros passos |
67
+ | **AI_RULES.md** | Checklist crítico, regras obrigatórias | IA, desenvolvedores com IA |
68
+ | **TROUBLESHOOTING.md** | Soluções de erros, problemas comuns | Todos |
69
+ | **Templates** | Códigos prontos para copiar | Todos |
70
+ | **crud/README.md** | Documentação técnica do sistema CRUD | Desenvolvedores avançados |
71
+
72
+ ---
73
+
74
+ ## 💡 Fluxo de Ajuda
75
+
76
+ ```
77
+ Primeira vez com a lib?
78
+ └─> Leia README.md (instalação + quick start)
79
+ └─> Copie um template de templates/
80
+ └─> Problema? Veja TROUBLESHOOTING.md
81
+ └─> Desenvolvendo com IA? Consulte AI_RULES.md
82
+ ```
83
+
84
+ ---
85
+
86
+ ## 🔄 Mudanças na Estrutura
87
+
88
+ ### Versão Atual
89
+ - ✅ **README.md** criado como hub principal
90
+ - ✅ **AI_RULES.md** substitui AI_GUIDE.md (mais focado e prático)
91
+ - ✅ Links atualizados para arquivos existentes
92
+ - ✅ Referências corretas para documentação instalada
93
+
94
+ ### Arquivos Removidos
95
+ - ❌ `AI_GUIDE.md` (substituído por AI_RULES.md + README.md)
96
+ - ❌ `DEVELOPER_GUIDE.md` (conteúdo integrado em README.md e crud/README.md)
97
+
98
+ ---
99
+
100
+ ## 📝 Licença
101
+
102
+ MIT License - ForLogic © 2025