whois-vijay 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +205 -0
  2. package/bin/index.js +421 -0
  3. package/package.json +34 -0
package/README.md ADDED
@@ -0,0 +1,205 @@
1
+ # whois-vijay
2
+
3
+ > Terminal profile of Vijay — Backend & Systems Engineer
4
+ > **Interactive CLI with multiple modes, system diagrams, and GitHub integration**
5
+
6
+ ## šŸš€ Quick Start
7
+
8
+ Run anywhere with npx:
9
+
10
+ ```bash
11
+ npx whois-vijay
12
+ ```
13
+
14
+ ## ✨ Features
15
+
16
+ ### šŸ“± Interactive Mode (Default)
17
+
18
+ Run without flags to get an interactive menu:
19
+
20
+ ```bash
21
+ npx whois-vijay
22
+ ```
23
+
24
+ Choose from:
25
+
26
+ - šŸš€ **Tech Stack & Skills** - Complete technology overview
27
+ - šŸ—ļø **System Architecture Diagrams** - ASCII art of distributed systems
28
+ - šŸ’­ **Engineering Philosophy** - Systems thinking & principles
29
+ - šŸ“Š **Full Profile + GitHub Stats** - Everything with live GitHub data
30
+ - ⚔ **Quick Overview** - Fast summary
31
+
32
+ ### šŸŽÆ Command Flags
33
+
34
+ Run specific modes directly:
35
+
36
+ ```bash
37
+ npx whois-vijay --short # Quick overview
38
+ npx whois-vijay --tech # Tech stack & skills
39
+ npx whois-vijay --systems # System architecture diagrams
40
+ npx whois-vijay --philosophy # Engineering philosophy
41
+ npx whois-vijay --full # Complete profile + GitHub stats
42
+ ```
43
+
44
+ ### šŸŽØ What's Included
45
+
46
+ 1. **Animated ASCII Art** - Gradient & animated title
47
+ 2. **Interactive Menus** - Navigate through different sections
48
+ 3. **System Diagrams** - Visual ASCII representations of:
49
+ - Microservices architecture
50
+ - AWS infrastructure
51
+ - Message queue patterns
52
+ - Data flow diagrams
53
+ 4. **GitHub Integration** - Live stats from GitHub API
54
+ 5. **Loading Spinners** - Smooth animations
55
+ 6. **Multiple Display Modes** - Tech, Philosophy, Systems, Full
56
+ 7. **Philosophy Section** - Engineering principles & mindset
57
+
58
+ ## šŸ› ļø Local Development
59
+
60
+ 1. **Install dependencies:**
61
+
62
+ ```bash
63
+ npm install
64
+ ```
65
+
66
+ 2. **Test locally:**
67
+
68
+ ```bash
69
+ node bin/index.js
70
+ ```
71
+
72
+ 3. **Link globally:**
73
+
74
+ ```bash
75
+ npm link
76
+ whois-vijay
77
+ ```
78
+
79
+ 4. **Configure GitHub username** (optional):
80
+ - Edit `bin/index.js`
81
+ - Find `fetchGitHubStats("vijay-username")`
82
+ - Replace with your GitHub username
83
+
84
+ ## šŸ“¦ Publishing to npm
85
+
86
+ 1. **Login to npm:**
87
+
88
+ ```bash
89
+ npm login
90
+ ```
91
+
92
+ 2. **Update version** (if republishing):
93
+
94
+ ```bash
95
+ npm version patch
96
+ ```
97
+
98
+ 3. **Publish:**
99
+
100
+ ```bash
101
+ npm publish
102
+ ```
103
+
104
+ **Note:** If `whois-vijay` is taken, try:
105
+
106
+ - `whois-vijay-dev`
107
+ - `whois-vijay-systems`
108
+ - `@yourusername/whois-vijay` (scoped package)
109
+
110
+ ## šŸŽÆ What You'll Experience
111
+
112
+ ### Interactive Mode
113
+
114
+ - Gradient animated title
115
+ - Menu-driven navigation
116
+ - Smooth transitions
117
+ - Loading animations
118
+ - Multiple exploration paths
119
+
120
+ ### Tech Mode
121
+
122
+ - Complete tech stack breakdown
123
+ - Categorized by: Backend, Messaging, Cloud, Databases, Observability
124
+ - Animated display with icons
125
+
126
+ ### Systems Mode
127
+
128
+ - **Microservices Architecture** - Service mesh, load balancers, Kafka
129
+ - **AWS Infrastructure** - WAF, ALB, ECS, RDS
130
+ - **Message Queue Patterns** - Producer/Consumer with DLQ
131
+
132
+ ### Philosophy Mode
133
+
134
+ - 6 core engineering principles
135
+ - Animated rainbow display
136
+ - Systems thinking approach
137
+ - Reliability-first mindset
138
+
139
+ ### Full Mode
140
+
141
+ - Everything combined
142
+ - Live GitHub statistics
143
+ - Complete profile
144
+ - System diagrams
145
+
146
+ ## 🧰 Tech Stack
147
+
148
+ - **Node.js** (ES Modules)
149
+ - **chalk** - Terminal colors
150
+ - **boxen** - Terminal boxes
151
+ - **figlet** - ASCII art
152
+ - **inquirer** - Interactive prompts
153
+ - **nanospinner** - Loading spinners
154
+ - **commander** - CLI argument parsing
155
+ - **axios** - GitHub API calls
156
+ - **gradient-string** - Gradient text
157
+ - **chalk-animation** - Animated text
158
+
159
+ ## šŸŽ­ Examples
160
+
161
+ ```bash
162
+ # Interactive mode (recommended first experience)
163
+ npx whois-vijay
164
+
165
+ # Quick check
166
+ npx whois-vijay --short
167
+
168
+ # See the architecture thinking
169
+ npx whois-vijay --systems
170
+
171
+ # Understand the philosophy
172
+ npx whois-vijay --philosophy
173
+
174
+ # Get everything + GitHub stats
175
+ npx whois-vijay --full
176
+ ```
177
+
178
+ ## šŸš€ Advanced Usage
179
+
180
+ Chain with other commands:
181
+
182
+ ```bash
183
+ npx whois-vijay --short && npm init
184
+ ```
185
+
186
+ Use in CI/CD pipelines to show developer info:
187
+
188
+ ```bash
189
+ npx whois-vijay --tech > TECH_STACK.txt
190
+ ```
191
+
192
+ ## šŸ“ Customization
193
+
194
+ Fork and customize:
195
+
196
+ 1. Update the profile data in `bin/index.js`
197
+ 2. Modify ASCII diagrams in `systemDiagrams` object
198
+ 3. Add your own sections to `displayModes`
199
+ 4. Change colors and styling
200
+ 5. Add your GitHub username for stats
201
+
202
+ ---
203
+
204
+ **Systems thinking meets developer branding** šŸš€
205
+ **v2.0 - Now with full interactivity!**
package/bin/index.js ADDED
@@ -0,0 +1,421 @@
1
+ #!/usr/bin/env node
2
+
3
+ import chalk from "chalk";
4
+ import boxen from "boxen";
5
+ import figlet from "figlet";
6
+ import inquirer from "inquirer";
7
+ import { createSpinner } from "nanospinner";
8
+ import { Command } from "commander";
9
+ import gradient from "gradient-string";
10
+ import chalkAnimation from "chalk-animation";
11
+ import axios from "axios";
12
+
13
+ const program = new Command();
14
+
15
+ // ASCII Art Diagrams
16
+ const systemDiagrams = {
17
+ microservices: `
18
+ ╔════════════════════════════════════════════════════════╗
19
+ ā•‘ DISTRIBUTED SYSTEMS ARCHITECTURE ā•‘
20
+ ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•
21
+
22
+ ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
23
+ │ API GW │ ← Load Balancer
24
+ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
25
+ │
26
+ ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”“ā”€ā”€ā”€ā”€ā”€ā”€ā”
27
+ │ │
28
+ ā”Œā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā” ā”Œā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”
29
+ │Service│ │Service│
30
+ │ A │ │ B │
31
+ ā””ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”˜ ā””ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”˜
32
+ │ │
33
+ ā””ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
34
+ │
35
+ ā”Œā”€ā”€ā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”€ā”€ā”
36
+ │ Kafka │ ← Event Bus
37
+ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
38
+ │
39
+ ā”Œā”€ā”€ā”€ā”€ā”€ā”“ā”€ā”€ā”€ā”€ā”€ā”
40
+ │ │
41
+ ā”Œā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā” ā”Œā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”€ā”
42
+ │Worker │ │Worker │
43
+ │ 1 │ │ 2 │
44
+ ā””ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”˜ ā””ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”˜
45
+ │ │
46
+ ā””ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”˜
47
+ │
48
+ ā”Œā”€ā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”€ā”
49
+ │ Redis │ ← Cache Layer
50
+ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
51
+ `,
52
+
53
+ awsInfra: `
54
+ ╔════════════════════════════════════════════════════════╗
55
+ ā•‘ AWS INFRASTRUCTURE ā•‘
56
+ ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•
57
+
58
+ Internet
59
+ │
60
+ ā”Œā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”€ā”
61
+ │ WAF │ ← Security Layer
62
+ ā””ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”˜
63
+ │
64
+ ā”Œā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”€ā”
65
+ │ ALB │ ← Application Load Balancer
66
+ ā””ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”˜
67
+ │
68
+ ā”Œā”€ā”€ā”€ā”“ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
69
+ │ │
70
+ ā”Œā”€ā”€ā–¼ā”€ā”€ā” ā”Œā”€ā”€ā–¼ā”€ā”€ā”
71
+ │ ECS │ │ ECS │ ← Container Services
72
+ │Task │ │Task │
73
+ ā””ā”€ā”€ā”¬ā”€ā”€ā”˜ ā””ā”€ā”€ā”¬ā”€ā”€ā”˜
74
+ │ │
75
+ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
76
+ │
77
+ ā”Œā”€ā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”€ā”
78
+ │ RDS │ ← Database
79
+ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
80
+ `,
81
+
82
+ dataFlow: `
83
+ ╔════════════════════════════════════════════════════════╗
84
+ ā•‘ MESSAGE QUEUE ARCHITECTURE ā•‘
85
+ ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•
86
+
87
+ Producer Queue Consumer
88
+ │ │ │
89
+ ā”œā”€ā”€[Message]──────────►│ │
90
+ │ │ │
91
+ │ ā”Œā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”€ā” │
92
+ │ │ Kafka │ │
93
+ │ │ Topic │ │
94
+ │ ā””ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”˜ │
95
+ │ │ │
96
+ │ ā”œā”€ā”€[Poll]───────────►│
97
+ │ │ │
98
+ │ │ ā”Œā”€ā”€ā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”€ā”€ā”
99
+ │ │ │ Process │
100
+ │ │ │ & Handle │
101
+ │ │ ā””ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”˜
102
+ │ │ │
103
+ │ │◄──[ACK]────────────┤
104
+ │ │ │
105
+ │ ā”Œā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”€ā” │
106
+ │ │ DLQ │ ← Dead Letter Queue
107
+ │ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ │
108
+ `
109
+ };
110
+
111
+ // Display Modes
112
+ const displayModes = {
113
+ async short() {
114
+ console.clear();
115
+ const title = gradient.pastel.multiline(
116
+ figlet.textSync("VIJAY", { horizontalLayout: "full" })
117
+ );
118
+ console.log(title);
119
+
120
+ const content = `
121
+ ${chalk.bold.cyan("Backend & Systems Engineer")}
122
+ ${chalk.gray("Node.js • Distributed Systems • AWS • Docker")}
123
+ ${chalk.gray("Focus: Building resilient, observable systems")}
124
+ `;
125
+ console.log(boxen(content, {
126
+ padding: 1,
127
+ margin: 1,
128
+ borderStyle: "round",
129
+ borderColor: "cyan"
130
+ }));
131
+ },
132
+
133
+ async tech() {
134
+ console.clear();
135
+ const spinner = createSpinner("Loading tech stack...").start();
136
+ await sleep(1500);
137
+ spinner.success({ text: "Tech profile loaded!" });
138
+
139
+ console.log("\n" + chalk.bold.cyan("━".repeat(60)));
140
+ console.log(chalk.bold.yellow(" TECH STACK & EXPERTISE"));
141
+ console.log(chalk.bold.cyan("━".repeat(60)) + "\n");
142
+
143
+ const techStack = [
144
+ { category: "Backend Frameworks", items: ["Node.js", "NestJS", "Express"], icon: "šŸš€" },
145
+ { category: "Message Queues", items: ["Kafka", "RabbitMQ", "AWS SQS"], icon: "šŸ“Ø" },
146
+ { category: "Cloud & Infrastructure", items: ["AWS (ECS, EC2, WAF)", "Docker", "Kubernetes"], icon: "ā˜ļø" },
147
+ { category: "Databases", items: ["PostgreSQL", "MongoDB", "Redis"], icon: "šŸ—„ļø" },
148
+ { category: "Observability", items: ["Prometheus", "Grafana", "ELK Stack"], icon: "šŸ“Š" },
149
+ { category: "Languages", items: ["JavaScript/TypeScript", "Python", "Go"], icon: "šŸ’»" }
150
+ ];
151
+
152
+ for (const tech of techStack) {
153
+ console.log(chalk.bold(`${tech.icon} ${tech.category}`));
154
+ console.log(chalk.gray(` └─ ${tech.items.join(", ")}\n`));
155
+ await sleep(300);
156
+ }
157
+ },
158
+
159
+ async systems() {
160
+ console.clear();
161
+ const spinner = createSpinner("Loading system architectures...").start();
162
+ await sleep(1500);
163
+ spinner.success({ text: "Architecture diagrams loaded!" });
164
+
165
+ console.log(chalk.cyan(systemDiagrams.microservices));
166
+ await sleep(1000);
167
+
168
+ console.log(chalk.yellow(systemDiagrams.awsInfra));
169
+ await sleep(1000);
170
+
171
+ console.log(chalk.green(systemDiagrams.dataFlow));
172
+
173
+ console.log("\n" + boxen(
174
+ chalk.bold("Systems Thinking:\n\n") +
175
+ "• Design for failure, not success\n" +
176
+ "• Observability > Debugging\n" +
177
+ "• Async communication patterns\n" +
178
+ "• Circuit breakers & retry strategies\n" +
179
+ "• Event-driven architectures",
180
+ { padding: 1, borderColor: "cyan", borderStyle: "double" }
181
+ ));
182
+ },
183
+
184
+ async philosophy() {
185
+ console.clear();
186
+ const rainbow = chalkAnimation.rainbow("SYSTEMS PHILOSOPHY");
187
+ await sleep(2000);
188
+ rainbow.stop();
189
+
190
+ console.log("\n" + chalk.bold.magenta("━".repeat(60)));
191
+ console.log(chalk.bold.yellow(" ENGINEERING PHILOSOPHY"));
192
+ console.log(chalk.bold.magenta("━".repeat(60)) + "\n");
193
+
194
+ const philosophy = [
195
+ {
196
+ title: "šŸŽÆ Reliability First",
197
+ text: "Systems fail. Design for graceful degradation, not perfection."
198
+ },
199
+ {
200
+ title: "šŸ” Observability Over Debugging",
201
+ text: "You can't fix what you can't see. Metrics, logs, traces—always."
202
+ },
203
+ {
204
+ title: "⚔ Async by Default",
205
+ text: "Synchronous calls create tight coupling. Events create resilience."
206
+ },
207
+ {
208
+ title: "šŸ›”ļø Defense in Depth",
209
+ text: "Rate limiting, circuit breakers, timeouts, retries—layer your defenses."
210
+ },
211
+ {
212
+ title: "šŸ“ˆ Measure Everything",
213
+ text: "If you can't measure it, you can't improve it. Data drives decisions."
214
+ },
215
+ {
216
+ title: "šŸ”„ Idempotency Matters",
217
+ text: "Distributed systems retry. Your operations must be safe to repeat."
218
+ }
219
+ ];
220
+
221
+ for (const item of philosophy) {
222
+ console.log(chalk.bold.cyan(item.title));
223
+ console.log(chalk.gray(` ${item.text}\n`));
224
+ await sleep(500);
225
+ }
226
+
227
+ console.log(boxen(
228
+ chalk.italic('"The best system is not the one that never fails,\nbut the one that fails gracefully and recovers quickly."'),
229
+ { padding: 1, borderColor: "magenta", borderStyle: "round", align: "center" }
230
+ ));
231
+ },
232
+
233
+ async full() {
234
+ console.clear();
235
+
236
+ // Animated title
237
+ const rainbow = chalkAnimation.rainbow(
238
+ figlet.textSync("VIJAY", { horizontalLayout: "full" })
239
+ );
240
+ await sleep(2000);
241
+ rainbow.stop();
242
+
243
+ // GitHub stats
244
+ console.log("\n");
245
+ const spinner = createSpinner("Fetching GitHub stats...").start();
246
+ try {
247
+ const githubData = await fetchGitHubStats("vijay-username"); // Replace with actual username
248
+ spinner.success({ text: "GitHub data loaded!" });
249
+ displayGitHubStats(githubData);
250
+ } catch (error) {
251
+ spinner.error({ text: "GitHub stats unavailable (set username in code)" });
252
+ }
253
+
254
+ // Full profile
255
+ console.log("\n" + chalk.bold.cyan("━".repeat(60)));
256
+ console.log(chalk.bold.yellow(" COMPLETE PROFILE"));
257
+ console.log(chalk.bold.cyan("━".repeat(60)) + "\n");
258
+
259
+ const profile = `
260
+ ${chalk.bold("Backend & Systems Engineer")}
261
+
262
+ ${chalk.cyan("Core Skills:")}
263
+ • Distributed Systems Architecture
264
+ • Event-Driven Design (Kafka, RabbitMQ)
265
+ • Cloud Infrastructure (AWS: ECS, EC2, WAF, Lambda)
266
+ • Container Orchestration (Docker, Kubernetes)
267
+ • API Design & Microservices
268
+ • Database Optimization (SQL & NoSQL)
269
+
270
+ ${chalk.yellow("Systems Mindset:")}
271
+ • Failure handling over happy paths
272
+ • Observability & monitoring first
273
+ • Machine-to-machine communication
274
+ • Circuit breakers & resilience patterns
275
+ • Performance under pressure
276
+
277
+ ${chalk.green("Tech Stack:")}
278
+ • Languages: TypeScript, JavaScript, Python, Go
279
+ • Backend: Node.js, NestJS, Express
280
+ • Messaging: Kafka, RabbitMQ, SQS
281
+ • Data: PostgreSQL, MongoDB, Redis
282
+ • Observability: Prometheus, Grafana, ELK
283
+
284
+ ${chalk.magenta("Focus Areas:")}
285
+ • Building systems that scale
286
+ • Designing for reliability
287
+ • Optimizing for observability
288
+ • Creating resilient architectures
289
+ `;
290
+
291
+ console.log(boxen(profile, {
292
+ padding: 1,
293
+ margin: 1,
294
+ borderStyle: "double",
295
+ borderColor: "cyan"
296
+ }));
297
+
298
+ // System diagram
299
+ console.log(chalk.cyan(systemDiagrams.microservices));
300
+ }
301
+ };
302
+
303
+ // Helper Functions
304
+ async function sleep(ms) {
305
+ return new Promise(resolve => setTimeout(resolve, ms));
306
+ }
307
+
308
+ async function fetchGitHubStats(username) {
309
+ const response = await axios.get(`https://api.github.com/users/${username}`);
310
+ return response.data;
311
+ }
312
+
313
+ function displayGitHubStats(data) {
314
+ const stats = `
315
+ ${chalk.bold("GitHub Stats:")}
316
+ • Public Repos: ${data.public_repos}
317
+ • Followers: ${data.followers}
318
+ • Following: ${data.following}
319
+ • Profile: ${chalk.cyan(data.html_url)}
320
+ `;
321
+ console.log(boxen(stats, {
322
+ padding: 1,
323
+ borderColor: "green",
324
+ borderStyle: "round"
325
+ }));
326
+ }
327
+
328
+ async function showInteractiveMenu() {
329
+ console.clear();
330
+
331
+ const title = gradient.pastel.multiline(
332
+ figlet.textSync("VIJAY", { horizontalLayout: "full" })
333
+ );
334
+ console.log(title);
335
+
336
+ console.log(chalk.gray("\n Backend & Systems Engineer\n"));
337
+
338
+ const answer = await inquirer.prompt([
339
+ {
340
+ type: "list",
341
+ name: "mode",
342
+ message: "What would you like to explore?",
343
+ choices: [
344
+ { name: "šŸš€ Tech Stack & Skills", value: "tech" },
345
+ { name: "šŸ—ļø System Architecture Diagrams", value: "systems" },
346
+ { name: "šŸ’­ Engineering Philosophy", value: "philosophy" },
347
+ { name: "šŸ“Š Full Profile + GitHub Stats", value: "full" },
348
+ { name: "⚔ Quick Overview", value: "short" },
349
+ { name: "šŸ”„ Show All (Sequential)", value: "all" },
350
+ { name: "āŒ Exit", value: "exit" }
351
+ ]
352
+ }
353
+ ]);
354
+
355
+ if (answer.mode === "exit") {
356
+ console.log(chalk.cyan("\nšŸ‘‹ See you later!\n"));
357
+ process.exit(0);
358
+ }
359
+
360
+ if (answer.mode === "all") {
361
+ await displayModes.short();
362
+ await sleep(2000);
363
+ await displayModes.tech();
364
+ await sleep(2000);
365
+ await displayModes.philosophy();
366
+ await sleep(2000);
367
+ await displayModes.systems();
368
+ await sleep(2000);
369
+ await displayModes.full();
370
+ } else {
371
+ await displayModes[answer.mode]();
372
+ }
373
+
374
+ // Ask if they want to continue
375
+ console.log("\n");
376
+ const continueAnswer = await inquirer.prompt([
377
+ {
378
+ type: "confirm",
379
+ name: "continue",
380
+ message: "Explore another section?",
381
+ default: true
382
+ }
383
+ ]);
384
+
385
+ if (continueAnswer.continue) {
386
+ await showInteractiveMenu();
387
+ } else {
388
+ console.log(chalk.cyan("\n✨ Thanks for visiting!\n"));
389
+ }
390
+ }
391
+
392
+ // CLI Setup
393
+ program
394
+ .name("whois-vijay")
395
+ .description("Terminal profile of Vijay - Backend & Systems Engineer")
396
+ .version("2.0.0");
397
+
398
+ program
399
+ .option("-s, --short", "Quick overview")
400
+ .option("-t, --tech", "Tech stack & skills")
401
+ .option("-y, --systems", "System architecture diagrams")
402
+ .option("-p, --philosophy", "Engineering philosophy")
403
+ .option("-f, --full", "Full profile with GitHub stats")
404
+ .action(async (options) => {
405
+ if (options.short) {
406
+ await displayModes.short();
407
+ } else if (options.tech) {
408
+ await displayModes.tech();
409
+ } else if (options.systems) {
410
+ await displayModes.systems();
411
+ } else if (options.philosophy) {
412
+ await displayModes.philosophy();
413
+ } else if (options.full) {
414
+ await displayModes.full();
415
+ } else {
416
+ // Default: Interactive mode
417
+ await showInteractiveMenu();
418
+ }
419
+ });
420
+
421
+ program.parse();
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "whois-vijay",
3
+ "version": "1.0.2",
4
+ "description": "Terminal profile of Vijay — backend, systems, distributed thinking",
5
+ "type": "module",
6
+ "bin": {
7
+ "whois-vijay": "./bin/index.js"
8
+ },
9
+ "keywords": [
10
+ "cli",
11
+ "backend",
12
+ "systems",
13
+ "developer",
14
+ "terminal",
15
+ "profile"
16
+ ],
17
+ "author": "Vijay",
18
+ "license": "MIT",
19
+ "dependencies": {
20
+ "chalk": "^5.3.0",
21
+ "boxen": "^7.1.1",
22
+ "figlet": "^1.7.0",
23
+ "inquirer": "^9.2.12",
24
+ "ora": "^8.0.1",
25
+ "commander": "^11.1.0",
26
+ "axios": "^1.6.2",
27
+ "gradient-string": "^2.0.2",
28
+ "chalk-animation": "^2.0.3",
29
+ "nanospinner": "^1.1.0"
30
+ },
31
+ "engines": {
32
+ "node": ">=18.0.0"
33
+ }
34
+ }