create-domis 1.0.46 → 1.0.49

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 (61) hide show
  1. package/dist/index.js +41 -128
  2. package/package.json +5 -6
  3. package/templates/domisdocs-free/.firebaserc +0 -5
  4. package/templates/domisdocs-free/README.md +0 -70
  5. package/templates/domisdocs-free/firebase.json +0 -29
  6. package/templates/domisdocs-free/package.json +0 -10
  7. package/templates/domisdocs-lite/.firebaserc +0 -5
  8. package/templates/domisdocs-lite/README.md +0 -229
  9. package/templates/domisdocs-lite/domisdocs-602fc/hosting/404.html +0 -155
  10. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/NQ3kax0_fweCAqnNXt6Ej/_buildManifest.js +0 -81
  11. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/NQ3kax0_fweCAqnNXt6Ej/_ssgManifest.js +0 -2
  12. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/341.df3329d77a5faa19.js +0 -369
  13. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/472.a3826d29d6854395.js +0 -37
  14. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/4bd1b696-67ee12fb04071d3b.js +0 -11130
  15. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/684-71b0b1461a73105d.js +0 -9987
  16. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/874-992333f59fd2c78c.js +0 -525
  17. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/app/_not-found/page-f08302ee705a96b1.js +0 -113
  18. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/app/dashboard/page-bd672c78e74e0ca7.js +0 -12
  19. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/app/layout-1415b7c12bd25ba1.js +0 -13
  20. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/app/page-202ca2a6f090766b.js +0 -12
  21. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/framework-859199dea06580b0.js +0 -11894
  22. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/main-9d4372fbc380071d.js +0 -6431
  23. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/main-app-9e36547c97a174da.js +0 -20
  24. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/pages/_app-a66f9296699c5863.js +0 -49
  25. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/pages/_error-7688f4c9a69e67c8.js +0 -386
  26. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -7940
  27. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/chunks/webpack-880aef799750a911.js +0 -209
  28. package/templates/domisdocs-lite/domisdocs-602fc/hosting/_next/static/css/f913f2bf40d109a3.css +0 -1056
  29. package/templates/domisdocs-lite/domisdocs-602fc/hosting/dashboard.html +0 -520
  30. package/templates/domisdocs-lite/domisdocs-602fc/hosting/index.html +0 -129
  31. package/templates/domisdocs-lite/domispacks/hosting/404.html +0 -155
  32. package/templates/domisdocs-lite/domispacks/hosting/_next/static/FUOO1M6iev6fYpEjnXpyc/_buildManifest.js +0 -81
  33. package/templates/domisdocs-lite/domispacks/hosting/_next/static/FUOO1M6iev6fYpEjnXpyc/_ssgManifest.js +0 -2
  34. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/341.df3329d77a5faa19.js +0 -369
  35. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/472.a3826d29d6854395.js +0 -37
  36. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/4bd1b696-67ee12fb04071d3b.js +0 -11130
  37. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/684-71b0b1461a73105d.js +0 -9987
  38. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/874-992333f59fd2c78c.js +0 -525
  39. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/app/_not-found/page-f08302ee705a96b1.js +0 -113
  40. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/app/dashboard/page-bd672c78e74e0ca7.js +0 -12
  41. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/app/layout-1415b7c12bd25ba1.js +0 -13
  42. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/app/page-202ca2a6f090766b.js +0 -12
  43. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/framework-859199dea06580b0.js +0 -11894
  44. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/main-9d4372fbc380071d.js +0 -6431
  45. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/main-app-9e36547c97a174da.js +0 -20
  46. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/pages/_app-a66f9296699c5863.js +0 -49
  47. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/pages/_error-7688f4c9a69e67c8.js +0 -386
  48. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -7940
  49. package/templates/domisdocs-lite/domispacks/hosting/_next/static/chunks/webpack-880aef799750a911.js +0 -209
  50. package/templates/domisdocs-lite/domispacks/hosting/_next/static/css/f913f2bf40d109a3.css +0 -1056
  51. package/templates/domisdocs-lite/domispacks/hosting/dashboard.html +0 -520
  52. package/templates/domisdocs-lite/domispacks/hosting/index.html +0 -129
  53. package/templates/domisdocs-lite/firebase.json +0 -29
  54. package/templates/domisdocs-lite/hosting.LmZpcmViYXNlXGRvbWlzZG9jcy02MDJmY1xob3N0aW5n.cache +0 -22
  55. package/templates/domisdocs-lite/hosting.LmZpcmViYXNlXGRvbWlzcGFja3NcaG9zdGluZw.cache +0 -22
  56. package/templates/domisdocs-lite/next-env.d.ts +0 -5
  57. package/templates/domisdocs-lite/next.config.ts +0 -9
  58. package/templates/domisdocs-lite/package-lock.json +0 -1783
  59. package/templates/domisdocs-lite/package.json +0 -25
  60. package/templates/domisdocs-lite/postcss.config.mjs +0 -3
  61. package/templates/domisdocs-lite/tsconfig.json +0 -22
package/dist/index.js CHANGED
@@ -7,169 +7,82 @@ import ora from "ora";
7
7
  import fs from "fs";
8
8
  import path from "path";
9
9
  import os from "os";
10
- import { fileURLToPath } from "url";
11
10
  import extract from "extract-zip";
12
- var __filename = fileURLToPath(import.meta.url);
13
- var __dirname = path.dirname(__filename);
14
11
  var API_VERIFY = "https://verifyprokey-rk2ogbbeja-uc.a.run.app";
15
12
  var TIMEOUT_MS = 3e4;
16
- var MAX_RETRIES = 2;
17
- console.log(chalk.green.bold("\n\u{1F525} DomisPacks Technical v1.0.45\n"));
13
+ console.log(chalk.green.bold("\n\u{1F525} DomisPacks Technical v1.0.49\n"));
18
14
  function copyRecursive(src, dest) {
19
15
  const stat = fs.lstatSync(src);
20
16
  if (stat.isDirectory()) {
21
17
  fs.mkdirSync(dest, { recursive: true });
22
18
  for (const file of fs.readdirSync(src)) {
23
- if (["node_modules", ".next", ".git", ".firebase", ".DS_Store"].includes(file)) continue;
19
+ if (["node_modules", ".next", ".git", ".firebase"].includes(file)) continue;
24
20
  copyRecursive(path.join(src, file), path.join(dest, file));
25
21
  }
26
22
  } else {
27
23
  fs.copyFileSync(src, dest);
28
24
  }
29
25
  }
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();
46
- 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);
26
+ async function fetchWithTimeout(url, opts = {}) {
27
+ const c = new AbortController();
28
+ const id = setTimeout(() => c.abort(), TIMEOUT_MS);
65
29
  try {
66
- return await fetch(url, { ...options, signal: controller.signal });
30
+ return await fetch(url, { ...opts, signal: c.signal });
67
31
  } finally {
68
32
  clearTimeout(id);
69
33
  }
70
34
  }
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");
35
+ async function getDownloadUrl(pack, proKey) {
36
+ const res = await fetchWithTimeout(API_VERIFY, {
37
+ method: "POST",
38
+ headers: { "Content-Type": "application/json" },
39
+ body: JSON.stringify(proKey ? { key: proKey, pack } : { pack })
40
+ });
41
+ const data = await res.json();
42
+ if (!res.ok || !data.valid) throw new Error(data.detail || data.reason || data.error || `HTTP ${res.status}`);
43
+ if (!data.downloadUrl) throw new Error("API n\xE3o retornou downloadUrl");
44
+ return data.downloadUrl;
106
45
  }
107
46
  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
- }
47
+ const ans = await inquirer.prompt([
48
+ { type: "list", name: "pack", message: "Qual pack voc\xEA quer acelerar hoje?", choices: [
49
+ { name: "\u{1F525} DomisDocs Free \u2014 Firebase", value: "free" },
50
+ { name: "\u{1F525} DomisDocs Lite \u2014 Next.Js 15 + SaaS", value: "lite" },
51
+ { name: "\u{1F525} DomisDocs PRO \u2014 Stripe + Rules", value: "pro" }
52
+ ] },
53
+ { 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" },
54
+ { type: "input", name: "projectName", message: "Nome do projeto:", default: "meu-app", validate: (v) => v.trim().length ? true : "Digite um nome" }
134
55
  ]);
135
- const target = answers.projectName.trim();
136
- if (fs.existsSync(target)) {
137
- console.log(chalk.red(`\u274C A pasta "${target}" j\xE1 existe!`));
56
+ if (fs.existsSync(ans.projectName)) {
57
+ console.log(chalk.red(`\u274C Pasta "${ans.projectName}" j\xE1 existe!`));
138
58
  process.exit(1);
139
59
  }
140
- if (answers.pack === "free") {
141
- await createFreePack(target);
142
- return;
143
- }
144
- const spinner = ora("Verificando PRO_KEY...").start();
60
+ const spinner = ora("Preparando...").start();
145
61
  try {
146
- const downloadUrl = await verifyAndDownload(answers.proKey, answers.pack);
147
- spinner.text = `Baixando DomisDocs ${answers.pack.toUpperCase()}...`;
62
+ spinner.text = ans.pack === "free" ? "Baixando FREE..." : "Verificando PRO_KEY...";
63
+ const url = await getDownloadUrl(ans.pack, ans.proKey);
64
+ spinner.text = `Baixando DomisDocs ${ans.pack.toUpperCase()}...`;
148
65
  const zipTmp = path.join(os.tmpdir(), `domis-${Date.now()}.zip`);
149
66
  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);
67
+ const zipRes = await fetchWithTimeout(url);
68
+ if (!zipRes.ok) throw new Error(`Falha no download (${zipRes.status})`);
69
+ fs.writeFileSync(zipTmp, Buffer.from(await zipRes.arrayBuffer()));
156
70
  fs.mkdirSync(extractTmp, { recursive: true });
157
71
  await extract(zipTmp, { dir: extractTmp });
158
72
  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);
73
+ const srcDir = files.length === 1 && fs.lstatSync(path.join(extractTmp, files[0])).isDirectory() ? path.join(extractTmp, files[0]) : extractTmp;
74
+ fs.mkdirSync(ans.projectName, { recursive: true });
75
+ copyRecursive(srcDir, ans.projectName);
162
76
  fs.rmSync(zipTmp, { force: true });
163
77
  fs.rmSync(extractTmp, { recursive: true, force: true });
164
- spinner.succeed(chalk.green.bold(`
165
- \u2705 ${target} criado com sucesso!`));
78
+ spinner.succeed(`\u2705 ${ans.projectName} criado!`);
166
79
  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
80
+ \u{1F449} cd ${ans.projectName}
81
+ \u{1F449} npm install
82
+ \u{1F449} npm run dev
170
83
  `));
171
84
  } catch (e) {
172
- spinner.fail(chalk.red(`\u274C ${e.message}`));
85
+ spinner.fail(`\u274C ${e.message}`);
173
86
  process.exit(1);
174
87
  }
175
88
  }
package/package.json CHANGED
@@ -1,15 +1,14 @@
1
1
  {
2
2
  "name": "create-domis",
3
- "version": "1.0.46",
3
+ "version": "1.0.49",
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>