create-domis 1.0.46 → 1.0.48

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.
Files changed (62) hide show
  1. package/dist/index.d.ts +1 -2
  2. package/dist/index.js +42 -128
  3. package/package.json +5 -6
  4. package/templates/domisdocs-free/.firebaserc +0 -5
  5. package/templates/domisdocs-free/README.md +0 -70
  6. package/templates/domisdocs-free/firebase.json +0 -29
  7. package/templates/domisdocs-free/package.json +0 -10
  8. package/templates/domisdocs-lite/.firebaserc +0 -5
  9. package/templates/domisdocs-lite/README.md +0 -229
  10. package/templates/domisdocs-lite/domisdocs-602fc/hosting/404.html +0 -155
  11. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/NQ3kax0_fweCAqnNXt6Ej/_buildManifest.js +0 -81
  12. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/NQ3kax0_fweCAqnNXt6Ej/_ssgManifest.js +0 -2
  13. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/341.df3329d77a5faa19.js +0 -369
  14. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/472.a3826d29d6854395.js +0 -37
  15. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/4bd1b696-67ee12fb04071d3b.js +0 -11130
  16. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/684-71b0b1461a73105d.js +0 -9987
  17. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/874-992333f59fd2c78c.js +0 -525
  18. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/app/_not-found/page-f08302ee705a96b1.js +0 -113
  19. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/app/dashboard/page-bd672c78e74e0ca7.js +0 -12
  20. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/app/layout-1415b7c12bd25ba1.js +0 -13
  21. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/app/page-202ca2a6f090766b.js +0 -12
  22. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/framework-859199dea06580b0.js +0 -11894
  23. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/main-9d4372fbc380071d.js +0 -6431
  24. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/main-app-9e36547c97a174da.js +0 -20
  25. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/pages/_app-a66f9296699c5863.js +0 -49
  26. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/pages/_error-7688f4c9a69e67c8.js +0 -386
  27. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -7940
  28. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/webpack-880aef799750a911.js +0 -209
  29. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/css/f913f2bf40d109a3.css +0 -1056
  30. package/templates/domisdocs-lite/domisdocs-602fc/hosting/dashboard.html +0 -520
  31. package/templates/domisdocs-lite/domisdocs-602fc/hosting/index.html +0 -129
  32. package/templates/domisdocs-lite/domispacks/hosting/404.html +0 -155
  33. package/templates/domisdocs-lite/domispacks/hosting/_next/static/FUOO1M6iev6fYpEjnXpyc/_buildManifest.js +0 -81
  34. package/templates/domisdocs-lite/domispacks/hosting/_next/static/FUOO1M6iev6fYpEjnXpyc/_ssgManifest.js +0 -2
  35. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/341.df3329d77a5faa19.js +0 -369
  36. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/472.a3826d29d6854395.js +0 -37
  37. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/4bd1b696-67ee12fb04071d3b.js +0 -11130
  38. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/684-71b0b1461a73105d.js +0 -9987
  39. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/874-992333f59fd2c78c.js +0 -525
  40. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/app/_not-found/page-f08302ee705a96b1.js +0 -113
  41. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/app/dashboard/page-bd672c78e74e0ca7.js +0 -12
  42. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/app/layout-1415b7c12bd25ba1.js +0 -13
  43. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/app/page-202ca2a6f090766b.js +0 -12
  44. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/framework-859199dea06580b0.js +0 -11894
  45. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/main-9d4372fbc380071d.js +0 -6431
  46. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/main-app-9e36547c97a174da.js +0 -20
  47. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/pages/_app-a66f9296699c5863.js +0 -49
  48. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/pages/_error-7688f4c9a69e67c8.js +0 -386
  49. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -7940
  50. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/webpack-880aef799750a911.js +0 -209
  51. package/templates/domisdocs-lite/domispacks/hosting/_next/static/css/f913f2bf40d109a3.css +0 -1056
  52. package/templates/domisdocs-lite/domispacks/hosting/dashboard.html +0 -520
  53. package/templates/domisdocs-lite/domispacks/hosting/index.html +0 -129
  54. package/templates/domisdocs-lite/firebase.json +0 -29
  55. package/templates/domisdocs-lite/hosting.LmZpcmViYXNlXGRvbWlzZG9jcy02MDJmY1xob3N0aW5n.cache +0 -22
  56. package/templates/domisdocs-lite/hosting.LmZpcmViYXNlXGRvbWlzcGFja3NcaG9zdGluZw.cache +0 -22
  57. package/templates/domisdocs-lite/next-env.d.ts +0 -5
  58. package/templates/domisdocs-lite/next.config.ts +0 -9
  59. package/templates/domisdocs-lite/package-lock.json +0 -1783
  60. package/templates/domisdocs-lite/package.json +0 -25
  61. package/templates/domisdocs-lite/postcss.config.mjs +0 -3
  62. package/templates/domisdocs-lite/tsconfig.json +0 -22
package/dist/index.d.ts CHANGED
@@ -1,2 +1 @@
1
-
2
- export { }
1
+ #!/usr/bin/env node
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
+ #!/usr/bin/env node
2
3
 
3
4
  // src/index.ts
4
5
  import inquirer from "inquirer";
@@ -7,169 +8,82 @@ import ora from "ora";
7
8
  import fs from "fs";
8
9
  import path from "path";
9
10
  import os from "os";
10
- import { fileURLToPath } from "url";
11
11
  import extract from "extract-zip";
12
- var __filename = fileURLToPath(import.meta.url);
13
- var __dirname = path.dirname(__filename);
14
12
  var API_VERIFY = "https://verifyprokey-rk2ogbbeja-uc.a.run.app";
15
13
  var TIMEOUT_MS = 3e4;
16
- var MAX_RETRIES = 2;
17
- console.log(chalk.green.bold("\n\u{1F525} DomisPacks Technical v1.0.45\n"));
14
+ console.log(chalk.green.bold("\n\u{1F525} DomisPacks Technical v1.0.48\n"));
18
15
  function copyRecursive(src, dest) {
19
16
  const stat = fs.lstatSync(src);
20
17
  if (stat.isDirectory()) {
21
18
  fs.mkdirSync(dest, { recursive: true });
22
19
  for (const file of fs.readdirSync(src)) {
23
- if (["node_modules", ".next", ".git", ".firebase", ".DS_Store"].includes(file)) continue;
20
+ if (["node_modules", ".next", ".git", ".firebase"].includes(file)) continue;
24
21
  copyRecursive(path.join(src, file), path.join(dest, file));
25
22
  }
26
23
  } else {
27
24
  fs.copyFileSync(src, dest);
28
25
  }
29
26
  }
30
- function findFreeTemplate() {
31
- const possiblePaths = [
32
- path.join(__dirname, "..", "templates", "domisdocs-free"),
33
- path.join(__dirname, "..", "..", "templates", "domisdocs-free"),
34
- path.join(__dirname, "templates", "domisdocs-free"),
35
- path.join(process.cwd(), "templates", "domisdocs-free")
36
- ];
37
- for (const p of possiblePaths) {
38
- if (fs.existsSync(p)) return p;
39
- }
40
- throw new Error(
41
- `Template Free n\xE3o encontrado. Verifique se a pasta templates/domisdocs-free existe. Caminhos testados: ${possiblePaths.join(", ")}`
42
- );
43
- }
44
- async function createFreePack(target) {
45
- const spinner = ora("Criando DomisDocs Free...").start();
27
+ async function fetchWithTimeout(url, opts = {}) {
28
+ const c = new AbortController();
29
+ const id = setTimeout(() => c.abort(), TIMEOUT_MS);
46
30
  try {
47
- const freeSrc = findFreeTemplate();
48
- spinner.text = `Copiando de ${path.relative(process.cwd(), freeSrc)}...`;
49
- fs.mkdirSync(target, { recursive: true });
50
- copyRecursive(freeSrc, target);
51
- const gravados = fs.readdirSync(target);
52
- spinner.succeed(`\u2705 ${target} Free criado! (${gravados.length} arquivos: ${gravados.join(", ")})`);
53
- console.log(chalk.cyan(`
54
- \u{1F449} cd ${target}`));
55
- console.log(chalk.cyan(`\u{1F449} firebase deploy
56
- `));
57
- } catch (e) {
58
- spinner.fail(`\u274C ${e.message}`);
59
- process.exit(1);
60
- }
61
- }
62
- async function fetchWithTimeout(url, options, timeout = TIMEOUT_MS) {
63
- const controller = new AbortController();
64
- const id = setTimeout(() => controller.abort(), timeout);
65
- try {
66
- return await fetch(url, { ...options, signal: controller.signal });
31
+ return await fetch(url, { ...opts, signal: c.signal });
67
32
  } finally {
68
33
  clearTimeout(id);
69
34
  }
70
35
  }
71
- async function verifyAndDownload(proKey, pack) {
72
- let lastError = null;
73
- for (let attempt = 1; attempt <= MAX_RETRIES + 1; attempt++) {
74
- try {
75
- const res = await fetchWithTimeout(API_VERIFY, {
76
- method: "POST",
77
- headers: { "Content-Type": "application/json" },
78
- body: JSON.stringify({ key: proKey, pack })
79
- });
80
- const text = await res.text();
81
- let data;
82
- try {
83
- data = JSON.parse(text);
84
- } catch {
85
- throw new Error(`Resposta inv\xE1lida da API (${res.status}): ${text.slice(0, 200)}`);
86
- }
87
- if (!res.ok || !data.valid) {
88
- throw new Error(data.detail || data.reason || data.error || `HTTP ${res.status}`);
89
- }
90
- if (!data.downloadUrl) {
91
- throw new Error("API n\xE3o retornou downloadUrl - verifique se o zip foi enviado para o Storage");
92
- }
93
- return data.downloadUrl;
94
- } catch (err) {
95
- lastError = err;
96
- if (["not_found", "expired", "inactive", "upgrade_required", "template_not_found"].includes(err.message)) {
97
- throw err;
98
- }
99
- if (attempt <= MAX_RETRIES) {
100
- await new Promise((r) => setTimeout(r, 1500 * attempt));
101
- continue;
102
- }
103
- }
104
- }
105
- throw lastError || new Error("Falha ao verificar PRO_KEY");
36
+ async function getDownloadUrl(pack, proKey) {
37
+ const res = await fetchWithTimeout(API_VERIFY, {
38
+ method: "POST",
39
+ headers: { "Content-Type": "application/json" },
40
+ body: JSON.stringify(proKey ? { key: proKey, pack } : { pack })
41
+ });
42
+ const data = await res.json();
43
+ if (!res.ok || !data.valid) throw new Error(data.detail || data.reason || data.error || `HTTP ${res.status}`);
44
+ if (!data.downloadUrl) throw new Error("API n\xE3o retornou downloadUrl");
45
+ return data.downloadUrl;
106
46
  }
107
47
  async function main() {
108
- const answers = await inquirer.prompt([
109
- {
110
- type: "list",
111
- name: "pack",
112
- message: "Qual pack voc\xEA quer acelerar hoje?",
113
- choices: [
114
- { name: "\u{1F525} DomisDocs Free - Configura\xE7\xE3o b\xE1sica Firebase", value: "free" },
115
- { name: "\u{1F525} DomisDocs Lite \u2014 Next.Js 15 + SaaS Boilerplate", value: "lite" },
116
- { name: "\u{1F525} DomisDocs PRO \u2014 Next.Js 15 + Stripe + Rules + SSR", value: "pro" }
117
- ]
118
- },
119
- {
120
- type: "password",
121
- name: "proKey",
122
- message: "Digite sua PRO_KEY:",
123
- mask: "*",
124
- when: (a) => a.pack !== "free",
125
- validate: (v) => v.startsWith("DOMIS-") ? true : "Formato: DOMIS-XXXX-XXXX-XXXX"
126
- },
127
- {
128
- type: "input",
129
- name: "projectName",
130
- message: "Nome do projeto:",
131
- default: "meu-app",
132
- validate: (v) => v.trim().length > 0 ? true : "Digite um nome"
133
- }
48
+ const ans = await inquirer.prompt([
49
+ { type: "list", name: "pack", message: "Qual pack voc\xEA quer acelerar hoje?", choices: [
50
+ { name: "\u{1F525} DomisDocs Free \u2014 Firebase", value: "free" },
51
+ { name: "\u{1F525} DomisDocs Lite \u2014 Next.Js 15 + SaaS", value: "lite" },
52
+ { name: "\u{1F525} DomisDocs PRO \u2014 Stripe + Rules", value: "pro" }
53
+ ] },
54
+ { type: "password", name: "proKey", message: "Digite sua PRO_KEY:", mask: "*", when: (a) => a.pack !== "free", validate: (v) => v.startsWith("DOMIS-") ? true : "Formato: DOMIS-XXXX-XXXX-XXXX" },
55
+ { type: "input", name: "projectName", message: "Nome do projeto:", default: "meu-app", validate: (v) => v.trim().length ? true : "Digite um nome" }
134
56
  ]);
135
- const target = answers.projectName.trim();
136
- if (fs.existsSync(target)) {
137
- console.log(chalk.red(`\u274C A pasta "${target}" j\xE1 existe!`));
57
+ if (fs.existsSync(ans.projectName)) {
58
+ console.log(chalk.red(`\u274C Pasta "${ans.projectName}" j\xE1 existe!`));
138
59
  process.exit(1);
139
60
  }
140
- if (answers.pack === "free") {
141
- await createFreePack(target);
142
- return;
143
- }
144
- const spinner = ora("Verificando PRO_KEY...").start();
61
+ const spinner = ora("Preparando...").start();
145
62
  try {
146
- const downloadUrl = await verifyAndDownload(answers.proKey, answers.pack);
147
- spinner.text = `Baixando DomisDocs ${answers.pack.toUpperCase()}...`;
63
+ spinner.text = ans.pack === "free" ? "Baixando FREE..." : "Verificando PRO_KEY...";
64
+ const url = await getDownloadUrl(ans.pack, ans.proKey);
65
+ spinner.text = `Baixando DomisDocs ${ans.pack.toUpperCase()}...`;
148
66
  const zipTmp = path.join(os.tmpdir(), `domis-${Date.now()}.zip`);
149
67
  const extractTmp = path.join(os.tmpdir(), `domis-extract-${Date.now()}`);
150
- const zipRes = await fetchWithTimeout(downloadUrl, {});
151
- if (!zipRes.ok) {
152
- throw new Error(`Falha ao baixar template (${zipRes.status})`);
153
- }
154
- const buffer = Buffer.from(await zipRes.arrayBuffer());
155
- fs.writeFileSync(zipTmp, buffer);
68
+ const zipRes = await fetchWithTimeout(url);
69
+ if (!zipRes.ok) throw new Error(`Falha no download (${zipRes.status})`);
70
+ fs.writeFileSync(zipTmp, Buffer.from(await zipRes.arrayBuffer()));
156
71
  fs.mkdirSync(extractTmp, { recursive: true });
157
72
  await extract(zipTmp, { dir: extractTmp });
158
73
  const files = fs.readdirSync(extractTmp);
159
- const sourceDir = files.length === 1 && fs.lstatSync(path.join(extractTmp, files[0])).isDirectory() ? path.join(extractTmp, files[0]) : extractTmp;
160
- fs.mkdirSync(target, { recursive: true });
161
- copyRecursive(sourceDir, target);
74
+ const srcDir = files.length === 1 && fs.lstatSync(path.join(extractTmp, files[0])).isDirectory() ? path.join(extractTmp, files[0]) : extractTmp;
75
+ fs.mkdirSync(ans.projectName, { recursive: true });
76
+ copyRecursive(srcDir, ans.projectName);
162
77
  fs.rmSync(zipTmp, { force: true });
163
78
  fs.rmSync(extractTmp, { recursive: true, force: true });
164
- spinner.succeed(chalk.green.bold(`
165
- \u2705 ${target} criado com sucesso!`));
79
+ spinner.succeed(`\u2705 ${ans.projectName} criado!`);
166
80
  console.log(chalk.cyan(`
167
- \u{1F449} cd ${target}`));
168
- console.log(chalk.cyan(`\u{1F449} npm install`));
169
- console.log(chalk.cyan(`\u{1F449} npm run dev
81
+ \u{1F449} cd ${ans.projectName}
82
+ \u{1F449} npm install
83
+ \u{1F449} npm run dev
170
84
  `));
171
85
  } catch (e) {
172
- spinner.fail(chalk.red(`\u274C ${e.message}`));
86
+ spinner.fail(`\u274C ${e.message}`);
173
87
  process.exit(1);
174
88
  }
175
89
  }
package/package.json CHANGED
@@ -1,15 +1,14 @@
1
1
  {
2
2
  "name": "create-domis",
3
- "version": "1.0.46",
3
+ "version": "1.0.48",
4
4
  "description": "CLI Oficial DomisPacks - Acelerador Next.js 15 + Tailwind v4 + SaaS Boilerplate",
5
5
  "type": "module",
6
- "bin": {
7
- "create-domis": "./dist/index.js"
8
- },
9
6
  "files": [
10
- "dist",
11
- "templates"
7
+ "dist"
12
8
  ],
9
+ "bin": {
10
+ "create-domis": "dist/index.js"
11
+ },
13
12
  "scripts": {
14
13
  "build": "tsup src/index.ts --format esm --dts",
15
14
  "dev": "tsx src/index.ts",
@@ -1,5 +0,0 @@
1
- {
2
- "projects": {
3
- "default": "free"
4
- }
5
- }
@@ -1,70 +0,0 @@
1
- ![NPM Version](https://img.shields.io/npm/v/create-domis?style=for-the-badge&logo=npm&color=CB3837)
2
- ![NPM Downloads](https://img.shields.io/npm/dm/create-domis?style=for-the-badge)
3
- ![Next.js](https://img.shields.io/badge/Next.js-15-black?style=for-the-badge&logo=next.js&logoColor=white)
4
- ![Tailwind](https://img.shields.io/badge/Tailwind-v4-38BDF8?style=for-the-badge&logo=tailwindcss&logoColor=white)
5
- ![Status](https://img.shields.io/badge/Status-FREE-yellow?style=for-the-badge)
6
- [![License](https://img.shields.io/badge/License-Private_Commercial-red?style=flat-square)](https://github.com/Domisnnet/DomisPacks-Technical/blob/main/LICENSE)
7
-
8
- ## 1. 🚀 DomisDocs Free — Technical Preview
9
-
10
- > Bem-vindo ao Pack: **Free Oficial Domis.** Você rodou `npm create domis@latest`.
11
-
12
- Esta é a versão pública, gratuita e sem PRO_KEY. Contém apenas 4 arquivos de degustação.
13
-
14
- ---
15
-
16
- ## 2. 📦 O que vem no Free?
17
-
18
- ```
19
- domisdocs-free/
20
- ├── firebase.json → básico
21
- ├── .firebaserc → básico
22
- ├── package.json → básico
23
- └── README.md → básico
24
- ```
25
-
26
- É o suficiente para dar `npm run build` e `firebase deploy` sem erro.
27
-
28
- ---
29
-
30
- ## 3. Tabela Comparativa
31
-
32
- > Este preview não contém código-fonte, Dashboard, `firestore.rules`, `storage.rules`, `functions/`, Stripe ou SSR.
33
-
34
- | O que vem no Free | O que SÓ vem no Lite : R$49 | O que SÓ vem no Pro : R$197 |
35
- | :------------------------------------- | :--------------------------------------------- | :---------------------------------------------------------- |
36
- | firebase.json básico - só public: dist | Next.js 15 + Tailwind v4 + shadcn | Tudo do Lite + |
37
- | .firebaserc básico | firestore.rules básica + next.config otimizado | firestore.rules avançada + storage.rules |
38
- | package.json + README.md básico | Dashboard + Hosting otimizado | functions/ + Stripe + Kiwify Webhook + GitHub Actions + SSR |
39
-
40
- ---
41
-
42
- ## 3. 🔑 Como destravar
43
-
44
- Essa é a versão gratuita instalada. Quer destravar Dashboard + Tailwind?
45
-
46
- ### Opção 1: Lite — O Fix de 5 minutos
47
-
48
- > Resolve 90% dos erros de `create-domis` com Next.js 15.
49
-
50
- **Inclui:** CLI completa + Repo Privado + Dashboard + `next.config` otimizado + 6 meses de updates + Uso VITALÍCIO.
51
-
52
- [![Destravar Lite - R$49](https://img.shields.io/badge/%F0%9F%9A%80_QUERO_MEU_ACESSO_AGORA-R%2449-FFD700?style=for-the-badge&logo=rocket&logoColor=black&labelColor=000000)](https://pay.kiwify.com.br/heAmetM)
53
-
54
- > Entrega automática da PRO_KEY por e-mail após pagamento.
55
-
56
- ### Opção 2: Pro — Produção Completa
57
-
58
- Para quem quer entregar para cliente. Tudo do Lite + `functions/` + Stripe + Kiwify Webhook + CI/CD.
59
-
60
- [![DESTRAVAR PRO - R$197](https://img.shields.io/badge/%F0%9F%92%8E_QUERO_PRO_AGORA-R%24197-00FF26?style=for-the-badge&logo=stripe&logoColor=black&labelColor=000000)](https://pay.kiwify.com.br)
61
-
62
- > Status: Em finalização. Quem compra o Lite agora garante cupom de R$49 OFF no Pro. Paga só a diferença.
63
-
64
- ---
65
-
66
- > Já comprou o Lite? Envie comprovante do Lite e ganhe cupom de R$49 OFF. Paga só a diferença para o Pro.
67
-
68
- ### 4. 🛡 Garantia
69
-
70
- Todos os packs têm **7 dias de garantia incondicional** via Kiwify.
@@ -1,29 +0,0 @@
1
- {
2
- "hosting": {
3
- "public": "out",
4
- "ignore": [
5
- "firebase.json",
6
- "**/.*",
7
- "**/node_modules/**"
8
- ],
9
- "rewrites": [
10
- { "source": "**", "destination": "/index.html" }
11
- ],
12
- "headers": [
13
- {
14
- "source": "**/*.@(js|css|woff2|png|jpg|jpeg|gif|svg|webp|ico)",
15
- "headers": [
16
- { "key": "Cache-Control", "value": "public, max-age=31536000, immutable" }
17
- ]
18
- },
19
- {
20
- "source": "**",
21
- "headers": [
22
- { "key": "X-Content-Type-Options", "value": "nosniff" },
23
- { "key": "X-Frame-Options", "value": "DENY" },
24
- { "key": "X-XSS-Protection", "value": "1; mode=block" }
25
- ]
26
- }
27
- ]
28
- }
29
- }
@@ -1,10 +0,0 @@
1
- {
2
- "name": "domisdocs-free",
3
- "version": "1.0.0",
4
- "private": true,
5
- "description": "DomisDocs Free",
6
- "scripts": {
7
- "dev": "echo \"⚠️ DomisDocs Free contém apenas arquivos de configuração. Use o pack Lite para desenvolvimento.\"",
8
- "build": "echo \"⚠️ Nada para buildar neste pack. Contém apenas arquivos de configuração Firebase.\""
9
- }
10
- }
@@ -1,5 +0,0 @@
1
- {
2
- "projects": {
3
- "default": "lite"
4
- }
5
- }
@@ -1,229 +0,0 @@
1
- ![NPM Version](https://img.shields.io/npm/v/create-domis?style=for-the-badge&logo=npm&color=CB3837)
2
- ![NPM Downloads](https://img.shields.io/npm/dm/create-domis?style=for-the-badge)
3
- ![Next.js](https://img.shields.io/badge/Next.js-15-black?style=for-the-badge&logo=next.js&logoColor=white)
4
- ![Tailwind](https://img.shields.io/badge/Tailwind-v4-38BDF8?style=for-the-badge&logo=tailwindcss&logoColor=white)
5
- ![Status](https://img.shields.io/badge/Status-Validado-brightgreen?style=for-the-badge)
6
-
7
- <h2 id="sobre-o-cli">1. 🚀 Create Domis - O Acelerador Next.js 15 + Firebase Killer 🚀</h2>
8
-
9
- ![Status](https://img.shields.io/badge/Status-Online-brightgreen?style=flat-square)
10
- ![CLI](https://img.shields.io/badge/CLI-Oficial-26FF00?style=flat-square)
11
- ![Firebase](https://img.shields.io/badge/Firebase-Ready-FFCA28?style=flat-square&logo=firebase&logoColor=black)
12
- [![License](https://img.shields.io/badge/License-Private_Commercial-red?style=flat-square)](https://github.com/Domisnnet/DomisPacks-Technical/blob/main/LICENSE)
13
- ![Imagem DomisPacks](./src/assets/domispacks-lite.png)
14
-
15
- Bem-vindo ao **CLI Oficial Domis**. O `npm create domis@latest` é um acelerador de projetos que elimina 3 horas de configuração de `firebase.json`, `firestore.rules` e `GitHub Actions` com 1 comando. Resolvemos o bug de Hosting que quebra 90% dos deploys Next.js 15 no Firebase.
16
-
17
- ---
18
-
19
- ## 📚 Tabela de Conteúdo
20
-
21
- | 💻 O CLI | 🛠 Técnico | 🤝 Comercial |
22
- | :-------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------: |
23
- | [![1. Sobre](https://img.shields.io/badge/1%20-%20Sobre-4CAF50)](#sobre-o-cli) | [![5. Techs](https://img.shields.io/badge/5%20-%20Techs-607D8B)](#tecnologias) | [![9. Estrutura](https://img.shields.io/badge/9%20-%20Estrutura-795548)](#estrutura) |
24
- | [![2. Instalação](https://img.shields.io/badge/2%20-%20Instalação-2196F3)](#instalacao) | [![6. Packs](https://img.shields.io/badge/6%20-%20Packs-009688)](#templates-inclusos) | [![10. Venda](https://img.shields.io/badge/10%20-%20Venda-FF9800)](#como-funciona-a-venda) |
25
- | [![3. Uso Rápido](https://img.shields.io/badge/3%20-%20Uso-FF9800)](#uso-rapido) | [![7. Fluxo](https://img.shields.io/badge/7%20-%20Fluxo-3F51B5)](#fluxo-de-uso) | [![11. Licença](https://img.shields.io/badge/11%20-%20Licença-E91E63)](#licenca) |
26
- | [![4. Comandos](https://img.shields.io/badge/4%20-%20Comandos-9C27B0)](#comandos) | [![8. FAQ](https://img.shields.io/badge/8%20-%20FAQ-FFC107)](#faq) | [![12. Domis](https://img.shields.io/badge/12%20-%20Domis-212121)](#perfil) |
27
-
28
- ---
29
-
30
- <h2 id="instalacao">2. ⚙ Instalação</h2>
31
-
32
- Não precisa instalar global. Rode sempre na última versão:
33
-
34
- ```bash
35
- npm create domis@latest
36
- ```
37
-
38
- ---
39
-
40
- <h2 id="uso-rapido">3. 🚀 Uso Rápido</h2>
41
-
42
- Todo mundo roda o mesmo comando. O que muda é o que sua PRO_KEY liberou no `verificar.html`:
43
-
44
- ```bash
45
- npm create domis@latest
46
- ```
47
-
48
- O CLI vai abrir:
49
-
50
- ```
51
- 🔥 DomisPacks Technical v1.0.24
52
-
53
- ? Qual pack você quer acelerar hoje?
54
-
55
- > 🔥 DomisDocs Lite — Next.js 15 + Tailwind v4 + Firebase Killer
56
- 🔥 DomisDocs PRO — Next.js 15 + Stripe + Rules + SSR + CI/CD
57
- ```
58
-
59
- | Você comprou | O que acontece |
60
- | :------------ | :-------------------------------------------------------------------------------------- |
61
- | **Lite R$49** | Escolhe `DomisDocs Lite` e cria na hora |
62
- | **Pro R$197** | Valida sua PRO_KEY no `verificar.html`, depois escolhe `DomisDocs PRO` no mesmo comando |
63
-
64
- > A autenticação `--key` é feita por debaixo dos panos pelo `verificar.html`. Você não precisa digitar `--template` ou `--key` na mão.
65
-
66
- ---
67
-
68
- <h2 id="comandos">4. 🧩 Comandos Disponíveis</h2>
69
-
70
- | Comando | O que faz |
71
- | :------------------------ | :----------------------------------------------------------------------- |
72
- | `npm create domis@latest` | Modo interativo (recomendado) - lista Lite/Pro liberados pela sua key |
73
- | `--template <nome>` | Uso interno - pula o menu (gerenciado pelo verificar.html) |
74
- | `--key <PRO_KEY>` | Uso interno - autentica no repo privado (gerenciado pelo verificar.html) |
75
- | `--help` | Lista todos os templates disponíveis |
76
-
77
- ---
78
-
79
- <h2 id="tecnologias">5. 💻 Stack do CLI</h2>
80
-
81
- | Camada | Tecnologia |
82
- | :------------- | :------------------------------------ |
83
- | **Core** | Node + TypeScript |
84
- | **CLI Engine** | `create-*` + `prompts` + `degit` |
85
- | **Infra** | GitHub Private Repo como CDN de Packs |
86
- | **Auth** | PRO_KEY Kiwify via verificar.html |
87
- | **Frontend** | Next.js 15 + Tailwind v4 |
88
-
89
- ---
90
-
91
- <h2 id="templates-inclusos">6. 📦 Templates Inclusos no MVP</h2>
92
-
93
- | Pack | Preço | O que entrega |
94
- | :------------------------ | :-------- | :------------------------------------------------------------------------------------------------------------------------------ |
95
- | `domisdocs-firebase-lite` | **R$49** | `firebase.json` killer + Hosting otimizado + `next.config` + `firestore.rules` básica + Bônus |
96
- | `domisdocs-firebase-pro` | **R$197** | Lite + `firestore.rules` avançadas + `storage.rules` + `GitHub Actions` + `functions/` + Stripe Checkout + Kiwify Webhook + SSR |
97
-
98
- ---
99
-
100
- <h2 id="fluxo-de-uso">7. 🔄 Fluxo de Uso</h2>
101
-
102
- # Cliente roda :
103
-
104
- ```bash
105
- npm create domis@latest
106
- ```
107
-
108
- ### CLI faz :
109
-
110
- ```
111
- ✔ DomisPacks Technical v1.0.24
112
- ✔ Qual pack você quer acelerar hoje?
113
- ```
114
-
115
- ### Seleciona Lite
116
-
117
- ```
118
- ✔ 🔥 DomisDocs Lite — Next.js 15 + Tailwind v4 + Firebase Killer ( Lite )
119
- ```
120
-
121
- ### Ou Pro
122
-
123
- ```
124
- ✔ 🔥 DomisDocs PRO — Next.js 15 + Stripe + Rules + SSR + CI/CD ( Pro )
125
- ```
126
-
127
- ### Depois :
128
-
129
- ```
130
- ✔ Baixando pack...
131
- ✔ Corrigindo firebase.json -> Hosting + Rewrites + Cache Next.js 15
132
- ✔ Instalando deps...
133
- ✔ Pronto!
134
- cd meu-app && npm run dev
135
- ```
136
-
137
- ---
138
-
139
- <h2 id="faq">8. 🧠 FAQ</h2>
140
-
141
- <details>
142
- <summary><strong>Precisa de Firebase CLI instalado ❓</strong></summary>
143
- <p>⚠ <strong>Sim, para deploy.</strong> `npm i -g firebase-tools`. O `create-domis` só cria e corrige o projeto.</p>
144
- </details>
145
-
146
- <details>
147
- <summary><strong>Funciona no Windows ❓</strong></summary>
148
- <p>✅ <strong>Sim.</strong> Testado em PowerShell e CMD.</p>
149
- </details>
150
-
151
- <details>
152
- <summary><strong>O que é a PRO_KEY ❓</strong></summary>
153
- <p>🔑 É a key gerada após compra na Kiwify. Você cola no verificar.html como senha e ela libera seu pack. Não precisa digitar no terminal.</p>
154
- </details>
155
-
156
- <details>
157
- <summary><strong>Funciona com SSR / Next.js App Router ❓</strong></summary>
158
- <p>🌐 <strong>No Lite é Hosting estático otimizado.</strong> SSR completo + Functions está no Pack Pro com `ssr: true` já configurado.</p>
159
- </details>
160
-
161
- <details>
162
- <summary><strong>Posso usar com GitHub Actions (deploy automático) ❓</strong></summary>
163
- <p>🤖 <strong>Sim, mas no Lite é manual.</strong> No Lite você roda `firebase deploy`. No Pro já vem `.github/workflows/deploy.yml` que faz deploy a cada push na `main`.</p>
164
- </details>
165
-
166
- ---
167
-
168
- <h2 id="estrutura">9. 📁 Estrutura do Projeto Gerado</h2>
169
-
170
- O que o `npm create domis@latest` cria dentro da pasta `meu-app/` - reaproveitável para Lite e futuro PRO:
171
-
172
- ```
173
- meu-app/
174
- ├── firebase.json → Firebase Killer (Hosting + Rewrites + Cache)
175
- ├── firestore.rules → Lite: basica / Pro: avancada multi-tenant
176
- ├── storage.rules → Pro: regras avancadas (Lite: basica)
177
- ├── next.config.js → Otimizado para Firebase Hosting
178
- ├── tailwind.config.ts → Tailwind v4 ja configurado
179
- ├── .github/
180
- │ └── workflows/
181
- │ └── deploy.yml → So no PRO: deploy automatico
182
- ├── functions/ → So no PRO: Stripe + Kiwify Webhook + Validator
183
- │ ├── src/
184
- │ │ └── index.ts
185
- │ └── package.json
186
- └── src/
187
- ├── app/
188
- │ ├── (saas)/
189
- │ │ └── dashboard/ → So no PRO
190
- │ ├── layout.tsx
191
- │ └── page.tsx
192
- └── lib/
193
- ├── firebase.ts
194
- └── stripe.ts → So no PRO
195
- ```
196
-
197
- > No Lite voce recebe tudo ate `src/lib/firebase.ts`. No PRO destrava `functions/`, `.github/` e `storage.rules` avancadas.
198
-
199
- ---
200
-
201
- <h2 id="como-funciona-a-venda">10. 💳 Como Funciona a Venda</h2>
202
-
203
- 1. Cliente compra na Kiwify (Lite R$49 ou Pro R$197)
204
- 2. Kiwify envia PRO_KEY automatica por e-mail
205
- 3. Cliente acessa verificar.html e ativa a key como senha
206
- 4. Ele roda: `npm create domis@latest` e escolhe o pack liberado pela key
207
- 5. Acesso liberado por 6 meses - renova com CUPOM: L2NNYK8 5% OFF
208
-
209
- ---
210
-
211
- <h2 id="licenca">11. 📄 Licença</h2>
212
-
213
- Este CLI é código aberto, mas os Packs são sob: &nbsp;[![License](https://img.shields.io/badge/License-Private_Commercial-red?style=flat-square)](https://github.com/Domisnnet/DomisPacks-Technical/blob/main/LICENSE) — De uso privado do Desenvolvedor. Proibida redistribuição sem PRO_KEY ativa. Proibida a revenda desse código.
214
-
215
- ---
216
-
217
- <h2 id="perfil">12. 👨💻 DomisDev</h2>
218
-
219
- > Caso precise de informações adicionais, abra uma Pull Request:
220
-
221
- <a href="https://github.com/Domisnnet">
222
- <img src="./src/assets/DomisDev.png" width="90" style="border-radius: 50%" alt="DomisDev">
223
- </a>
224
-
225
- <p align="center">
226
- <a href="#sobre-o-cli">
227
- <img src="https://img.shields.io/badge/⬆%20VOLTAR%20AO%20TOPO-26FF00?style=flat&labelColor=111827&color=0A0F1C" alt="Voltar ao topo" style="height: 30px;">
228
- </a>
229
- </p>