gazan-init 0.1.1 → 0.1.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gazan-init",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Interactive CLI that generates production-ready Node.js backend projects — architecture, database, auth, Redis, BullMQ, Socket.IO, and module aliases, all conditional on what you actually select.",
5
5
  "keywords": [
6
6
  "cli",
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ const chalk = require("chalk");
4
+ const pkg = require("../../package.json");
5
+ const skullAnsi = require("./skullAnsi");
6
+
7
+ // Figlet "ANSI Shadow" scaled a bit wider for a bigger wordmark.
8
+ const LETTERS = [
9
+ [
10
+ " ██████╗ ",
11
+ " ██╔════╝ ",
12
+ " ██║ ███╗ ",
13
+ " ██║ ██║ ",
14
+ " ╚██████╔╝ ",
15
+ " ╚═════╝ ",
16
+ ],
17
+ [
18
+ " █████╗ ",
19
+ " ██╔══██╗ ",
20
+ " ███████║ ",
21
+ " ██╔══██║ ",
22
+ " ██║ ██║ ",
23
+ " ╚═╝ ╚═╝ ",
24
+ ],
25
+ [
26
+ " ███████╗ ",
27
+ " ╚══███╔╝ ",
28
+ " ███╔╝ ",
29
+ " ███╔╝ ",
30
+ " ███████╗ ",
31
+ " ╚══════╝ ",
32
+ ],
33
+ [
34
+ " █████╗ ",
35
+ " ██╔══██╗ ",
36
+ " ███████║ ",
37
+ " ██╔══██║ ",
38
+ " ██║ ██║ ",
39
+ " ╚═╝ ╚═╝ ",
40
+ ],
41
+ [
42
+ " ███╗ ██╗",
43
+ " ████╗ ██║",
44
+ " ██╔██╗ ██║",
45
+ " ██║╚██╗██║",
46
+ " ██║ ╚████║",
47
+ " ╚═╝ ╚═══╝",
48
+ ],
49
+ ];
50
+
51
+ // Soft ice / bone palette — a few close tones only.
52
+ const C = {
53
+ light: chalk.hex("#E8F4F8"),
54
+ mid: chalk.hex("#B7D4DE"),
55
+ deep: chalk.hex("#7FAEBC"),
56
+ };
57
+
58
+ const LETTER_COLORS = [C.light, C.mid, C.deep, C.mid, C.deep];
59
+
60
+ function paint(line, colorFn) {
61
+ return [...line]
62
+ .map((ch) => (ch === " " ? ch : colorFn(ch)))
63
+ .join("");
64
+ }
65
+
66
+ function visibleLength(text) {
67
+ return text.replace(/\u001b\[[0-9;]*m/g, "").length;
68
+ }
69
+
70
+ function padVisible(text, width) {
71
+ return text + " ".repeat(Math.max(0, width - visibleLength(text)));
72
+ }
73
+
74
+ function buildTextLines() {
75
+ const rows = LETTERS[0].length;
76
+ const lines = [];
77
+ for (let row = 0; row < rows; row += 1) {
78
+ lines.push(LETTERS.map((letter, i) => paint(letter[row], LETTER_COLORS[i])).join(" "));
79
+ }
80
+ return lines;
81
+ }
82
+
83
+ function printBanner() {
84
+ const textLines = buildTextLines();
85
+ const skullLines = skullAnsi;
86
+ const textWidth = Math.max(...textLines.map(visibleLength));
87
+ const totalRows = Math.max(textLines.length, skullLines.length);
88
+ const textOffset = Math.floor((totalRows - textLines.length) / 2);
89
+ const skullOffset = Math.floor((totalRows - skullLines.length) / 2);
90
+ const gap = " ";
91
+
92
+ console.log("");
93
+ for (let row = 0; row < totalRows; row += 1) {
94
+ const textIdx = row - textOffset;
95
+ const skullIdx = row - skullOffset;
96
+ const left =
97
+ textIdx >= 0 && textIdx < textLines.length
98
+ ? padVisible(textLines[textIdx], textWidth)
99
+ : " ".repeat(textWidth);
100
+ const right =
101
+ skullIdx >= 0 && skullIdx < skullLines.length ? skullLines[skullIdx] : "";
102
+ console.log(` ${left}${gap}${right}`);
103
+ }
104
+
105
+ console.log("");
106
+ console.log(
107
+ chalk.dim(" ") +
108
+ C.mid("Interactive backend project generator") +
109
+ chalk.dim(` · v${pkg.version}`)
110
+ );
111
+ console.log("");
112
+ }
113
+
114
+ module.exports = { printBanner };
@@ -13,6 +13,7 @@ const { readEntityFile } = require("../../parser/entity/parse");
13
13
  const { EntityValidationError } = require("../../parser/entity/errors");
14
14
  const { AliasCollisionError } = require("../../config/aliases");
15
15
  const { generate } = require("../../generators");
16
+ const { printBanner } = require("../banner");
16
17
 
17
18
  /**
18
19
  * Generates into a scratch directory first, only copying into `targetDir` once generation
@@ -71,6 +72,7 @@ async function resolveTargetDir(projectName) {
71
72
  }
72
73
 
73
74
  async function runInit() {
75
+ printBanner();
74
76
  const answers = await runPrompts();
75
77
 
76
78
  const targetDir = await resolveTargetDir(answers.projectName);
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ // Pre-rendered from assets/skull.png (half-block ANSI).
4
+ module.exports = [" \u001b[38;2;44;44;44m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;108;108;108m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;169;169;169m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;225;225;225m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;22;22;22m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;35;35;35m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;38;38;38m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;34;34;34m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;17;17;17m▄\u001b[0m\u001b[38;2;221;221;221m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;165;165;165m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;107;107;107m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;52;52;52m\u001b[48;2;0;0;0m▄\u001b[0m", " \u001b[38;2;35;35;35m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;242;242;242m\u001b[48;2;27;27;27m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;179;179;179m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;189;189;189m▄\u001b[0m\u001b[38;2;236;236;236m\u001b[48;2;27;27;27m▄\u001b[0m\u001b[38;2;41;41;41m\u001b[48;2;0;0;0m▄\u001b[0m", "\u001b[38;2;78;78;78m\u001b[48;2;16;16;16m▄\u001b[0m\u001b[38;2;226;226;226m\u001b[48;2;182;182;182m▄\u001b[0m\u001b[38;2;223;223;223m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;242;242;242m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;242;242;242m▄\u001b[0m\u001b[38;2;151;151;151m\u001b[48;2;26;26;26m▄\u001b[0m", "\u001b[38;2;75;75;75m\u001b[48;2;90;90;90m▄\u001b[0m\u001b[38;2;129;129;129m\u001b[48;2;202;202;202m▄\u001b[0m\u001b[38;2;250;250;250m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;254;254;254m\u001b[48;2;251;251;251m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;235;235;235m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;230;230;230m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;199;199;199m\u001b[48;2;254;254;254m▄\u001b[0m\u001b[38;2;132;132;132m\u001b[48;2;147;147;147m▄\u001b[0m", "\u001b[38;2;77;77;77m\u001b[48;2;87;87;87m▄\u001b[0m\u001b[38;2;91;91;91m\u001b[48;2;110;110;110m▄\u001b[0m\u001b[38;2;192;192;192m\u001b[48;2;192;192;192m▄\u001b[0m\u001b[38;2;153;153;153m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;214;214;214m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;197;197;197m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;193;193;193m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;243;243;243m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;240;240;240m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;193;193;193m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;214;214;214m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;244;244;244m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;149;149;149m\u001b[48;2;153;153;153m▄\u001b[0m\u001b[38;2;92;92;92m\u001b[48;2;135;135;135m▄\u001b[0m\u001b[38;2;21;21;21m\u001b[48;2;1;1;1m▄\u001b[0m", "\u001b[38;2;41;41;41m\u001b[48;2;30;30;30m▄\u001b[0m\u001b[38;2;76;76;76m\u001b[48;2;58;58;58m▄\u001b[0m\u001b[38;2;81;81;81m\u001b[48;2;118;118;118m▄\u001b[0m\u001b[38;2;6;6;6m\u001b[48;2;31;31;31m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;53;53;53m▄\u001b[0m\u001b[38;2;5;5;5m\u001b[48;2;38;38;38m▄\u001b[0m\u001b[38;2;27;27;27m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;49;49;49m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;131;131;131m▄\u001b[0m\u001b[38;2;63;63;63m\u001b[48;2;175;176;176m▄\u001b[0m\u001b[38;2;185;185;185m\u001b[48;2;143;143;143m▄\u001b[0m\u001b[38;2;133;133;133m\u001b[48;2;123;123;123m▄\u001b[0m\u001b[38;2;36;36;36m\u001b[48;2;126;126;126m▄\u001b[0m\u001b[38;2;4;4;4m\u001b[48;2;67;67;67m▄\u001b[0m\u001b[38;2;31;31;31m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;3;3;3m\u001b[48;2;24;24;24m▄\u001b[0m\u001b[38;2;2;2;2m\u001b[48;2;49;49;49m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;88;88;88m▄\u001b[0m\u001b[38;2;71;71;71m\u001b[48;2;129;129;129m▄\u001b[0m\u001b[38;2;98;98;98m\u001b[48;2;96;96;96m▄\u001b[0m\u001b[38;2;23;23;23m\u001b[48;2;57;57;57m▄\u001b[0m\u001b[38;2;1;1;1m\u001b[48;2;6;6;6m▄\u001b[0m", "\u001b[38;2;41;41;41m\u001b[48;2;23;23;23m▄\u001b[0m\u001b[38;2;116;116;116m\u001b[48;2;167;167;167m▄\u001b[0m\u001b[38;2;184;184;184m\u001b[48;2;131;131;131m▄\u001b[0m\u001b[38;2;82;82;82m\u001b[48;2;79;79;79m▄\u001b[0m\u001b[38;2;113;113;113m\u001b[48;2;59;59;59m▄\u001b[0m\u001b[38;2;69;69;69m\u001b[48;2;41;41;41m▄\u001b[0m\u001b[38;2;94;94;94m\u001b[48;2;52;52;52m▄\u001b[0m\u001b[38;2;125;125;125m\u001b[48;2;56;56;56m▄\u001b[0m\u001b[38;2;247;247;247m\u001b[48;2;125;125;125m▄\u001b[0m\u001b[38;2;136;136;136m\u001b[48;2;215;215;215m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;200;200;200m▄\u001b[0m\u001b[38;2;26;26;26m\u001b[48;2;230;230;230m▄\u001b[0m\u001b[38;2;141;141;141m\u001b[48;2;185;185;185m▄\u001b[0m\u001b[38;2;156;156;156m\u001b[48;2;71;71;71m▄\u001b[0m\u001b[38;2;129;129;129m\u001b[48;2;85;85;85m▄\u001b[0m\u001b[38;2;133;133;133m\u001b[48;2;89;89;89m▄\u001b[0m\u001b[38;2;92;92;92m\u001b[48;2;103;103;103m▄\u001b[0m\u001b[38;2;109;109;109m\u001b[48;2;94;94;94m▄\u001b[0m\u001b[38;2;141;141;141m\u001b[48;2;85;85;85m▄\u001b[0m\u001b[38;2;177;177;177m\u001b[48;2;204;204;204m▄\u001b[0m\u001b[38;2;90;90;90m\u001b[48;2;24;24;24m▄\u001b[0m", "\u001b[38;2;17;17;17m\u001b[48;2;85;85;85m▄\u001b[0m\u001b[38;2;74;74;74m\u001b[48;2;71;71;71m▄\u001b[0m\u001b[38;2;211;211;211m\u001b[48;2;180;180;180m▄\u001b[0m\u001b[38;2;156;156;156m\u001b[48;2;177;177;177m▄\u001b[0m\u001b[38;2;125;125;125m\u001b[48;2;160;160;160m▄\u001b[0m\u001b[38;2;135;135;135m\u001b[48;2;189;189;189m▄\u001b[0m\u001b[38;2;223;223;223m\u001b[48;2;240;240;240m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;203;203;203m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;70;70;70m\u001b[48;2;56;56;56m▄\u001b[0m\u001b[38;2;208;208;208m\u001b[48;2;110;110;110m▄\u001b[0m\u001b[38;2;85;85;85m\u001b[48;2;30;30;30m▄\u001b[0m\u001b[38;2;123;123;123m\u001b[48;2;164;164;164m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;233;233;233m▄\u001b[0m\u001b[38;2;191;191;191m\u001b[48;2;204;204;204m▄\u001b[0m\u001b[38;2;191;191;191m\u001b[48;2;197;197;197m▄\u001b[0m\u001b[38;2;200;200;200m\u001b[48;2;221;221;221m▄\u001b[0m\u001b[38;2;224;224;224m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;131;131;131m\u001b[48;2;113;113;113m▄\u001b[0m\u001b[38;2;20;20;20m\u001b[48;2;81;81;81m▄\u001b[0m", " \u001b[38;2;0;0;0m\u001b[48;2;32;32;32m▄\u001b[0m \u001b[38;2;0;0;0m\u001b[48;2;17;17;17m▄\u001b[0m \u001b[38;2;107;107;107m\u001b[48;2;154;154;154m▄\u001b[0m\u001b[38;2;245;245;245m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;248;248;248m\u001b[48;2;215;215;215m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;121;121;121m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;226;226;226m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;180;180;180m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;198;198;198m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;187;187;187m\u001b[48;2;180;180;180m▄\u001b[0m\u001b[38;2;2;2;2m\u001b[48;2;54;54;54m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;25;25;25m▄\u001b[0m \u001b[38;2;0;0;0m\u001b[48;2;27;27;27m▄\u001b[0m", " \u001b[38;2;50;50;50m\u001b[48;2;19;19;19m▄\u001b[0m\u001b[38;2;46;46;46m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;44;44;44m\u001b[48;2;88;88;88m▄\u001b[0m\u001b[38;2;89;89;89m\u001b[48;2;112;112;112m▄\u001b[0m\u001b[38;2;123;123;123m\u001b[48;2;145;145;145m▄\u001b[0m\u001b[38;2;178;178;178m\u001b[48;2;199;199;199m▄\u001b[0m\u001b[38;2;221;221;221m\u001b[48;2;208;208;208m▄\u001b[0m\u001b[38;2;186;186;186m\u001b[48;2;186;186;186m▄\u001b[0m\u001b[38;2;126;126;126m\u001b[48;2;181;181;181m▄\u001b[0m\u001b[38;2;145;145;145m\u001b[48;2;147;147;147m▄\u001b[0m\u001b[38;2;88;88;88m\u001b[48;2;113;113;113m▄\u001b[0m\u001b[38;2;23;23;23m\u001b[48;2;15;15;15m▄\u001b[0m\u001b[38;2;31;31;31m\u001b[48;2;1;1;1m▄\u001b[0m", " \u001b[38;2;66;66;66m\u001b[48;2;36;36;36m▄\u001b[0m\u001b[38;2;135;135;135m\u001b[48;2;71;71;71m▄\u001b[0m\u001b[38;2;135;135;135m\u001b[48;2;101;101;101m▄\u001b[0m\u001b[38;2;116;116;116m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;6;6;6m\u001b[48;2;38;38;38m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;30;30;30m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;44;44;44m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;57;57;57m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;61;61;61m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;35;35;35m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;63;63;63m▄\u001b[0m\u001b[38;2;69;69;69m\u001b[48;2;28;28;28m▄\u001b[0m\u001b[38;2;102;102;102m\u001b[48;2;88;88;88m▄\u001b[0m\u001b[38;2;75;75;75m\u001b[48;2;36;36;36m▄\u001b[0m\u001b[38;2;31;31;31m\u001b[48;2;6;6;6m▄\u001b[0m", " \u001b[38;2;136;136;136m\u001b[48;2;142;142;142m▄\u001b[0m\u001b[38;2;235;235;235m\u001b[48;2;191;191;191m▄\u001b[0m\u001b[38;2;164;164;164m\u001b[48;2;167;167;167m▄\u001b[0m\u001b[38;2;109;109;109m\u001b[48;2;88;88;88m▄\u001b[0m\u001b[38;2;131;131;131m\u001b[48;2;27;27;27m▄\u001b[0m\u001b[38;2;136;136;136m\u001b[48;2;4;4;4m▄\u001b[0m\u001b[38;2;113;113;113m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;109;109;109m\u001b[48;2;4;4;4m▄\u001b[0m\u001b[38;2;112;112;112m\u001b[48;2;20;20;20m▄\u001b[0m\u001b[38;2;180;180;180m\u001b[48;2;41;41;41m▄\u001b[0m\u001b[38;2;242;242;242m\u001b[48;2;189;189;189m▄\u001b[0m\u001b[38;2;151;151;151m\u001b[48;2;137;137;137m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;48;48;48m▄\u001b[0m", " \u001b[38;2;0;0;0m\u001b[48;2;21;21;21m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;103;103;103m▄\u001b[0m\u001b[38;2;147;147;147m\u001b[48;2;191;191;191m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;93;93;93m▄\u001b[0m\u001b[38;2;115;115;115m\u001b[48;2;34;34;34m▄\u001b[0m\u001b[38;2;163;163;163m\u001b[48;2;45;45;45m▄\u001b[0m\u001b[38;2;125;125;125m\u001b[48;2;50;50;50m▄\u001b[0m\u001b[38;2;114;114;114m\u001b[48;2;47;47;47m▄\u001b[0m\u001b[38;2;255;255;255m\u001b[48;2;134;134;134m▄\u001b[0m\u001b[38;2;180;180;180m\u001b[48;2;255;255;255m▄\u001b[0m\u001b[38;2;6;6;6m\u001b[48;2;168;168;168m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;57;57;57m▄\u001b[0m", " \u001b[38;2;0;0;0m\u001b[48;2;130;130;130m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;223;223;223m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;225;225;225m▄\u001b[0m\u001b[38;2;5;5;5m\u001b[48;2;254;254;254m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;243;243;243m▄\u001b[0m\u001b[38;2;0;0;0m\u001b[48;2;115;115;115m▄\u001b[0m", " \u001b[38;2;25;25;25m\u001b[48;2;0;0;0m▄\u001b[0m\u001b[38;2;25;25;25m\u001b[48;2;0;0;0m▄\u001b[0m"];
@@ -18,7 +18,7 @@ async function ask(fn, opts) {
18
18
  }
19
19
 
20
20
  async function runPrompts(defaults = {}) {
21
- p.intro("GAZAN backend project initializer");
21
+ p.intro("Let's scaffold your backend.");
22
22
 
23
23
  const projectName = await ask(p.text, {
24
24
  message: "Project name/path",