smoonb 0.0.7 → 0.0.9

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/README.md CHANGED
@@ -1,232 +1,229 @@
1
- # smoonb 🚀
1
+ # smoonb
2
2
 
3
- > **⚠️ VERSÃO EXPERIMENTAL - NÃO TESTADA - USE POR SUA CONTA E RISCO ⚠️**
3
+ **Complete Supabase backup and migration tool**
4
4
 
5
- ## 🚨 **AVISO IMPORTANTE - LEIA ANTES DE USAR**
5
+ ## ⚠️ EXPERIMENTAL VERSION - NÃO TESTADA - USE POR SUA CONTA E RISCO
6
6
 
7
- **Este software está em desenvolvimento inicial e NUNCA foi testado em produção.**
7
+ **🚨 AVISO IMPORTANTE:**
8
+ - Este software **NUNCA** foi testado em produção
9
+ - **USE POR SUA CONTA E RISCO** - Pode causar perda irreparável de dados
10
+ - **NÃO NOS RESPONSABILIZAMOS** por qualquer perda de dados
11
+ - **NENHUM SUPORTE** é oferecido nesta fase - apenas aceitamos contribuições
8
12
 
9
- - ❌ **NÃO TESTE** este aplicativo em projetos importantes
10
- - ❌ **NÃO USE** em dados críticos ou produção
11
- - ⚠️ **RESULTADOS IMPREVISÍVEIS** - podem causar perdas irreparáveis de dados
12
- - ⚠️ **NÃO NOS RESPONSABILIZAMOS** por qualquer perda de dados
13
- - ⚠️ **USE POR SUA CONTA E RISCO** - você é o único responsável
13
+ **Desenvolvido por:** Goalmoon Tecnologia LTDA (https://goalmoon.com)
14
14
 
15
- **Desenvolvido por:** [Goalmoon Tecnologia LTDA](https://goalmoon.com)
15
+ ## 🎯 Objetivo
16
16
 
17
- ## 🎯 O Problema que Resolvemos
17
+ O **smoonb** resolve o problema das ferramentas existentes que fazem backup apenas da database PostgreSQL, ignorando componentes críticos do Supabase:
18
18
 
19
- As ferramentas existentes fazem apenas backup da database PostgreSQL, ignorando componentes críticos:
19
+ - **Database PostgreSQL** (roles, schema, data)
20
+ - ✅ **Edge Functions** (código local)
21
+ - ✅ **Auth Settings** (configurações de autenticação)
22
+ - ✅ **Storage Objects** (buckets e metadados)
23
+ - ✅ **Realtime Settings** (publicações e configurações)
24
+ - ✅ **Inventário Completo** (extensões, políticas RLS, etc.)
20
25
 
21
- - **Edge Functions** - Código serverless perdido
22
- - ❌ **Auth Settings** - Configurações de autenticação perdidas
23
- - ❌ **Storage Objects** - Arquivos e buckets perdidos
24
- - ❌ **Realtime Settings** - Configurações de tempo real perdidas
26
+ ## 🚀 Instalação
25
27
 
26
- **Resultado**: Falhas na restauração e perda de funcionalidades essenciais.
27
-
28
- ## Nossa Solução
29
-
30
- smoonb é a **primeira ferramenta** que faz backup **COMPLETO** do Supabase:
28
+ ```bash
29
+ # Instalar localmente no projeto
30
+ npm install smoonb
31
31
 
32
- - **Database PostgreSQL** - Backup completo com pg_dump
33
- - **Edge Functions** - Código e configurações
34
- - ✅ **Auth Settings** - Políticas e configurações
35
- - ✅ **Storage Objects** - Arquivos e metadados
36
- - ✅ **Realtime Settings** - Configurações de tempo real
37
- - ✅ **Metadados** - Todas as configurações do projeto
32
+ # Usar com npx
33
+ npx smoonb --help
34
+ ```
38
35
 
39
- ## 🚀 Comandos Principais
36
+ ## 📋 Pré-requisitos
40
37
 
38
+ ### 1. Supabase CLI
41
39
  ```bash
42
- # Backup completo do projeto
43
- npx smoonb backup
40
+ npm install -g supabase
41
+ ```
44
42
 
45
- # Restauração completa
46
- npx smoonb restore
43
+ ### 2. PostgreSQL (psql)
44
+ - **Windows**: https://www.postgresql.org/download/windows/
45
+ - **macOS**: `brew install postgresql`
46
+ - **Linux**: `sudo apt-get install postgresql-client`
47
47
 
48
- # Gerenciamento de secrets
49
- npx smoonb secrets export
50
- npx smoonb secrets import
48
+ ## ⚙️ Configuração
51
49
 
52
- # Deploy de Edge Functions
53
- npx smoonb functions push
50
+ ### 1. Inicializar configuração
51
+ ```bash
52
+ npx smoonb config --init
53
+ ```
54
54
 
55
- # Checklist pós-restore
56
- npx smoonb check
55
+ ### 2. Editar `.smoonbrc`
56
+ ```json
57
+ {
58
+ "supabase": {
59
+ "projectId": "seu-project-id",
60
+ "url": "https://seu-project-id.supabase.co",
61
+ "serviceKey": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
62
+ "anonKey": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
63
+ "databaseUrl": "postgresql://postgres:[senha]@db.seu-project-id.supabase.co:5432/postgres"
64
+ },
65
+ "backup": {
66
+ "includeFunctions": true,
67
+ "includeStorage": true,
68
+ "includeAuth": true,
69
+ "includeRealtime": true,
70
+ "outputDir": "./backups"
71
+ },
72
+ "restore": {
73
+ "cleanRestore": true,
74
+ "verifyAfterRestore": true
75
+ }
76
+ }
57
77
  ```
58
78
 
59
- ## 📊 Comparação: smoonb vs Outras Ferramentas
79
+ ### 3. Obter credenciais no Dashboard Supabase
60
80
 
61
- | Funcionalidade | smoonb | Outras Ferramentas |
62
- |---|---|---|
63
- | Database PostgreSQL | Completo | Completo |
64
- | Edge Functions | Backup + Restore | ❌ Não suportado |
65
- | Auth Settings | ✅ Backup + Restore | ❌ Não suportado |
66
- | Storage Objects | ✅ Backup + Restore | ❌ Não suportado |
67
- | Realtime Settings | ✅ Backup + Restore | ❌ Não suportado |
68
- | Metadados | ✅ Completo | ❌ Parcial |
69
- | CLI Simples | ✅ Intuitivo | ⚠️ Complexo |
70
- | Restauração Confiável | ✅ 100% | ⚠️ Parcial |
81
+ 1. **Project ID**: Settings General Reference ID
82
+ 2. **URL**: Settings → API → Project URL
83
+ 3. **Keys**: Settings API Project API keys
84
+ 4. **Database URL**: Settings Database Connection string
71
85
 
72
- ## 🛠️ Instalação
86
+ ## 🎯 Uso
73
87
 
88
+ ### Backup Completo
74
89
  ```bash
75
- # Instalar localmente no projeto
76
- npm install smoonb
77
-
78
- # Usar com npx
79
- npx smoonb --version
80
-
81
- # Ou adicionar script no package.json
82
- npm pkg set scripts.backup="npx smoonb backup"
83
- npm run backup
90
+ npx smoonb backup
84
91
  ```
85
92
 
86
- ## ⚡ Quick Start
93
+ **Resultado:**
94
+ ```
95
+ backups/backup-2024-01-15T10-30-45-123Z/
96
+ ├── backup-manifest.json
97
+ ├── roles.sql
98
+ ├── schema.sql
99
+ ├── data.sql
100
+ ├── inventory/
101
+ │ ├── extensions.json
102
+ │ ├── tables.json
103
+ │ ├── policies.json
104
+ │ ├── realtime.json
105
+ │ └── storage.json
106
+ └── functions/
107
+ └── [código das Edge Functions locais]
108
+ ```
87
109
 
110
+ ### Restauração Interativa
88
111
  ```bash
89
- # 1. Instale o smoonb no projeto
90
- npm install smoonb
91
-
92
- # 2. Configure suas credenciais Supabase
93
- npx npx smoonb config --init
94
-
95
- # 3. Edite o arquivo .smoonbrc com suas credenciais
96
- # 4. Execute o backup completo
97
- npx npx smoonb backup
98
-
99
- # 5. Restaure em outro projeto
100
- npx npx smoonb restore --backup-dir ./backups/backup-2024-01-15T10-30-00Z
112
+ npx smoonb restore
101
113
  ```
102
114
 
103
- ## 📋 Exemplos de Uso
115
+ **Processo interativo:**
116
+ 1. Lista todos os backups disponíveis
117
+ 2. Permite seleção numerada do backup desejado
118
+ 3. Verifica se database está vazia (clean restore)
119
+ 4. Executa `roles.sql` (roles e permissões)
120
+ 5. Executa `schema.sql` (estrutura das tabelas)
121
+ 6. Executa `data.sql` (dados com COPY)
104
122
 
105
- ### Backup Completo
123
+ ### Verificação Pós-Restore
106
124
  ```bash
107
- npx smoonb backup \
108
- --project-id abc123def456 \
109
- --output ./backup-$(date +%Y%m%d) \
110
- --include-functions \
111
- --include-storage \
112
- --include-auth
125
+ npx smoonb check
113
126
  ```
114
127
 
115
- ### Restauração com Verificação
116
- ```bash
117
- npx smoonb restore \
118
- --project-id xyz789uvw012 \
119
- --backup-dir ./backup-20241201 \
120
- --verify \
121
- --clean-restore
122
- ```
128
+ **Verifica:**
129
+ - ✅ Conexão com database
130
+ - Extensões instaladas
131
+ - Tabelas criadas
132
+ - Políticas RLS
133
+ - ✅ Publicações Realtime
134
+ - ✅ Buckets de Storage
123
135
 
124
- ### Migração Entre Projetos
136
+ ### Edge Functions
125
137
  ```bash
126
- # 1. Backup do projeto origem
127
- npx smoonb backup --project-id source-project
128
-
129
- # 2. Export secrets (opcional)
130
- npx smoonb secrets export --project-id source-project
131
-
132
- # 3. Restore no projeto destino
133
- npx smoonb restore --project-id target-project
138
+ # Listar functions
139
+ npx smoonb functions list
134
140
 
135
- # 4. Import secrets (opcional)
136
- npx smoonb secrets import --project-id target-project
137
-
138
- # 5. Verificação final
139
- npx smoonb check --project-id target-project
141
+ # Deploy functions
142
+ npx smoonb functions push
140
143
  ```
141
144
 
142
- ## 🔧 Configuração
145
+ ## 🔧 Comandos Disponíveis
143
146
 
144
- Crie um arquivo `.smoonbrc` na raiz do seu projeto:
147
+ | Comando | Descrição |
148
+ |---------|-----------|
149
+ | `npx smoonb backup` | Backup completo usando Supabase CLI |
150
+ | `npx smoonb restore` | Restauração interativa usando psql |
151
+ | `npx smoonb check` | Verificação de integridade |
152
+ | `npx smoonb functions` | Gerenciar Edge Functions |
153
+ | `npx smoonb config` | Configurar credenciais |
145
154
 
146
- ```json
147
- {
148
- "supabase": {
149
- "url": "https://your-project.supabase.co",
150
- "serviceKey": "your-service-key"
151
- },
152
- "backup": {
153
- "includeFunctions": true,
154
- "includeStorage": true,
155
- "includeAuth": true,
156
- "outputDir": "./backups"
157
- }
158
- }
159
- ```
155
+ ## 🏗️ Arquitetura Técnica
160
156
 
161
- ## 📝 Licenciamento
157
+ ### Backup Strategy
158
+ - **Database**: `supabase db dump` → `roles.sql`, `schema.sql`, `data.sql`
159
+ - **Inventário**: Queries SQL + Supabase API para metadados
160
+ - **Edge Functions**: Cópia do código local (`supabase/functions/`)
162
161
 
163
- ### 🆓 Versão Experimental Gratuita (Versões 0.x.x)
162
+ ### Restore Strategy
163
+ - **Clean Restore**: Verifica database vazia antes de restaurar
164
+ - **Ordem**: roles → schema → data (com transação única para dados)
165
+ - **Verificação**: Checklist automático pós-restore
164
166
 
165
- - ✅ **Uso gratuito** para projetos pessoais e comerciais
166
- - **Sem restrições** de funcionalidades
167
- - **SEM SUPORTE** - apenas aceitamos contribuições
168
- - ⚠️ **USE POR SUA CONTA E RISCO** - software não testado
167
+ ### Multiplataforma
168
+ - **Windows/macOS/Linux**: Detecção automática de binários
169
+ - **Cross-platform**: Usa `fs.promises.cp`, `path.join`, `spawn`
170
+ - **Sem dependências específicas**: Funciona em qualquer SO
169
171
 
170
- ### 💼 Licença Comercial (Versões 1.0.0+)
172
+ ## 📊 Fluxo Recomendado
171
173
 
172
- **AVISO**: A partir da versão 1.0.0, o smoonb será licenciado comercialmente.
173
-
174
- - 📧 **Aviso prévio**: Mudanças serão anunciadas 90 dias antes
175
- - 💰 **Desconto especial**: Usuários experimentais terão condições preferenciais
176
- - 🔄 **Migração suave**: Processo transparente e bem comunicado
174
+ ```bash
175
+ # 1. Backup do projeto origem
176
+ npx smoonb backup
177
177
 
178
- [📖 Leia a licença completa](./LICENSE.md)
178
+ # 2. Criar novo projeto Supabase
179
+ # (via Dashboard ou Supabase CLI)
179
180
 
180
- ## 🤝 Contribuição
181
+ # 3. Configurar .smoonbrc com credenciais do novo projeto
182
+ npx smoonb config --init
181
183
 
182
- **Este é um projeto experimental - contribuições são bem-vindas!**
184
+ # 4. Restaurar backup (modo interativo)
185
+ npx smoonb restore
183
186
 
184
- 1. Fork o projeto
185
- 2. Crie uma branch (`git checkout -b feature/nova-funcionalidade`)
186
- 3. Commit suas mudanças (`git commit -m 'Adiciona nova funcionalidade'`)
187
- 4. Push para a branch (`git push origin feature/nova-funcionalidade`)
188
- 5. Abra um Pull Request
187
+ # 5. Verificar integridade
188
+ npx smoonb check
189
189
 
190
- ## 🐛 Reportar Bugs
190
+ # 6. Deploy Edge Functions (se necessário)
191
+ npx smoonb functions push
192
+ ```
191
193
 
192
- Encontrou um bug? [Abra uma issue](https://github.com/almmello/smoonb/issues) com:
194
+ ## 🐛 Troubleshooting
193
195
 
194
- - Descrição detalhada do problema
195
- - Passos para reproduzir
196
- - Logs de erro (se houver)
197
- - Versão do smoonb e Node.js
196
+ ### Supabase CLI não encontrado
197
+ ```bash
198
+ npm install -g supabase
199
+ ```
198
200
 
199
- ## 📞 Suporte e Contato
201
+ ### psql não encontrado
202
+ - **Windows**: Instalar PostgreSQL
203
+ - **macOS**: `brew install postgresql`
204
+ - **Linux**: `sudo apt-get install postgresql-client`
200
205
 
201
- - 🐛 **Bugs**: [GitHub Issues](https://github.com/almmello/smoonb/issues)
202
- - 💬 **Discussões**: [GitHub Discussions](https://github.com/almmello/smoonb/discussions)
203
- - 📧 **Licenciamento**: licensing@goalmoon.com
204
- - 🏢 **Empresa**: [Goalmoon Tecnologia LTDA](https://goalmoon.com)
206
+ ### Database URL incorreta
207
+ - Verificar senha na URL de conexão
208
+ - Usar Connection string do Dashboard Supabase
209
+ - Testar conexão: `psql "sua-database-url" -c "SELECT 1"`
205
210
 
206
- ### Apoie o Desenvolvimento
211
+ ## 📝 Licença
207
212
 
208
- Se este projeto te ajudou e você gostaria de apoiar o desenvolvimento:
213
+ **Versões 0.x.x**: Uso gratuito (experimental)
214
+ **Versões 1.0.0+**: Licença comercial (anúncio com 90 dias de antecedência)
209
215
 
210
- - **Compre um café**: [Link de pagamento](https://buy.stripe.com/aFadR99XtbTNb18egpbfO02)
211
- - ⭐ **Dê uma estrela** no GitHub
212
- - 🐛 **Reporte bugs** e contribua com melhorias
213
- - 📢 **Compartilhe** com outros desenvolvedores
216
+ ## 🤝 Contribuição
214
217
 
215
- **⚠️ IMPORTANTE**: Este software está em desenvolvimento inicial e NUNCA foi testado em produção. Não oferecemos suporte técnico neste estágio - apenas aceitamos contribuições da comunidade.
218
+ Contribuições são bem-vindas! Este é um projeto experimental e precisamos de feedback da comunidade.
216
219
 
217
- ## 📄 Changelog
220
+ ## Apoie o Projeto
218
221
 
219
- ### v0.0.1 (EXPERIMENTAL)
220
- - 🎉 Lançamento inicial da versão experimental
221
- - ⚠️ **NUNCA TESTADO EM PRODUÇÃO** - use por sua conta e risco
222
- - ✅ Backup completo de projetos Supabase (implementação inicial)
223
- - ✅ Restauração com verificação (implementação inicial)
224
- - ✅ Suporte a Edge Functions, Auth, Storage e Realtime (implementação inicial)
225
- - ✅ CLI intuitivo e documentação completa
226
- - 🏢 Desenvolvido por Goalmoon Tecnologia LTDA
222
+ Se este projeto for útil para você, considere comprar um café:
223
+ [Compre um café](https://pag.ae/7Yj8QjQjQ)
227
224
 
228
225
  ---
229
226
 
230
- **smoonb** - A ferramenta definitiva para backup e migração de projetos Supabase 🚀
231
-
232
- *Desenvolvido com ❤️ para a comunidade Supabase*
227
+ **Desenvolvido por:** Goalmoon Tecnologia LTDA
228
+ **Website:** https://goalmoon.com
229
+ **GitHub:** https://github.com/almmello/smoonb
package/bin/smoonb.js CHANGED
@@ -68,43 +68,26 @@ program
68
68
  // Comandos principais
69
69
  program
70
70
  .command('backup')
71
- .description('Fazer backup completo do projeto Supabase')
72
- .option('-p, --project-id <id>', 'ID do projeto Supabase')
73
- .option('-o, --output <dir>', 'Diretório de saída do backup', './backups')
74
- .option('--include-functions', 'Incluir Edge Functions no backup', true)
75
- .option('--include-storage', 'Incluir Storage Objects no backup', true)
76
- .option('--include-auth', 'Incluir Auth Settings no backup', true)
77
- .option('--include-realtime', 'Incluir Realtime Settings no backup', true)
71
+ .description('Fazer backup completo do projeto Supabase usando Supabase CLI')
72
+ .option('-o, --output <dir>', 'Diretório de saída do backup')
78
73
  .action(commands.backup);
79
74
 
80
75
  program
81
76
  .command('restore')
82
- .description('Restaurar backup completo no projeto Supabase')
83
- .option('-p, --project-id <id>', 'ID do projeto Supabase destino')
84
- .option('-b, --backup-dir <dir>', 'Diretório do backup a ser restaurado')
85
- .option('--clean-restore', 'Limpar projeto antes da restauração', false)
86
- .option('--verify', 'Verificar restauração após completar', true)
77
+ .description('Restaurar backup completo usando psql (modo interativo)')
78
+ .option('--db-url <url>', 'URL da database de destino (override)')
87
79
  .action(commands.restore);
88
80
 
89
- program
90
- .command('secrets')
91
- .description('Gerenciar secrets do projeto Supabase')
92
- .option('export', 'Exportar secrets (sem commitar)')
93
- .option('import', 'Importar secrets no projeto alvo')
94
- .action(commands.secrets);
95
81
 
96
82
  program
97
83
  .command('functions')
98
- .description('Gerenciar Edge Functions')
99
- .option('push', 'Deploy de Edge Functions')
100
- .option('pull', 'Baixar Edge Functions do projeto')
84
+ .description('Gerenciar Edge Functions do Supabase')
101
85
  .action(commands.functions);
102
86
 
103
87
  program
104
88
  .command('check')
105
- .description('Checklist pós-restore - verificar integridade')
106
- .option('-p, --project-id <id>', 'ID do projeto Supabase')
107
- .option('--verbose', 'Saída detalhada', false)
89
+ .description('Verificar integridade do projeto Supabase após restauração')
90
+ .option('-o, --output <file>', 'Arquivo de saída do relatório', 'check-report.json')
108
91
  .action(commands.check);
109
92
 
110
93
  program
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smoonb",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "Complete Supabase backup and migration tool - EXPERIMENTAL VERSION - USE AT YOUR OWN RISK",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -26,10 +26,10 @@
26
26
  "node": ">=16.0.0"
27
27
  },
28
28
  "dependencies": {
29
- "commander": "^11.1.0",
30
29
  "@supabase/supabase-js": "^2.38.0",
31
30
  "chalk": "^4.1.2",
32
- "inquirer": "^8.2.6"
31
+ "commander": "^11.1.0",
32
+ "inquirer": "^8.2.7"
33
33
  },
34
34
  "type": "commonjs",
35
35
  "repository": {