whois-vijay 1.0.2 → 1.0.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.
Files changed (2) hide show
  1. package/bin/index.js +172 -407
  2. package/package.json +1 -1
package/bin/index.js CHANGED
@@ -3,419 +3,184 @@
3
3
  import chalk from "chalk";
4
4
  import boxen from "boxen";
5
5
  import figlet from "figlet";
6
- import inquirer from "inquirer";
7
- import { createSpinner } from "nanospinner";
8
- import { Command } from "commander";
9
6
  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, {
7
+ import ora from "ora";
8
+
9
+ const sleep = (ms) => new Promise(r => setTimeout(r, ms));
10
+
11
+ console.clear();
12
+
13
+ /* =========================
14
+ SOFT BOOT
15
+ ========================= */
16
+
17
+ const boot = ora({
18
+ text: chalk.gray("Initializing identity layer"),
19
+ spinner: "line"
20
+ }).start();
21
+
22
+ await sleep(1200);
23
+ boot.text = chalk.gray("Aligning distributed systems profile");
24
+ await sleep(900);
25
+ boot.succeed(chalk.gray("Ready\n"));
26
+
27
+ /* =========================
28
+ SIGNATURE HEADER
29
+ ========================= */
30
+
31
+ const name = figlet.textSync("VIJAY", {
32
+ font: "ANSI Shadow",
33
+ horizontalLayout: "fitted"
34
+ });
35
+
36
+ console.log(gradient.mind(name));
37
+
38
+ console.log(
39
+ chalk.hex("#C9A24D").bold("Backend & Systems Engineering\n") +
40
+ chalk.gray(
41
+ "Designing reliable, observable, and scalable backend systems\n" +
42
+ "for real-world production environments.\n"
43
+ )
44
+ );
45
+
46
+ await sleep(600);
47
+
48
+ /* =========================
49
+ EXECUTIVE SUMMARY
50
+ ========================= */
51
+
52
+ console.log(
53
+ boxen(
54
+ chalk.hex("#C9A24D").bold("DISTRIBUTED SYSTEMS ENGINEER\n\n") +
55
+ chalk.white(
56
+ "I build backend systems with a focus on longevity, correctness,\n" +
57
+ "and graceful failure under pressure.\n\n" +
58
+ "My work centers around machine-to-machine communication,\n" +
59
+ "event-driven architectures, and production reliability."
60
+ ),
61
+ {
126
62
  padding: 1,
127
- margin: 1,
128
63
  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);
64
+ borderColor: "yellow",
65
+ margin: 1
225
66
  }
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([
67
+ )
68
+ );
69
+
70
+ await sleep(700);
71
+
72
+ /* =========================
73
+ CAPABILITY COMPOSITION
74
+ ========================= */
75
+
76
+ console.log(
77
+ boxen(
78
+ chalk.bold.hex("#6FA3A8")("CORE CAPABILITIES\n\n") +
79
+ chalk.white(
80
+ "• Distributed system design\n" +
81
+ "• Event-driven messaging\n" +
82
+ "• Failure handling & recovery\n" +
83
+ "• Observability & diagnostics\n" +
84
+ "• System design trade-offs\n\n"
85
+ ) +
86
+ chalk.bold.hex("#8FA87F")("ARCHITECTURE\n\n") +
87
+ chalk.white(
88
+ "• API gateways & service boundaries\n" +
89
+ "• Load balancing & auto-scaling\n" +
90
+ "• Kafka, RabbitMQ, async workflows\n" +
91
+ "• Circuit breakers & backpressure\n\n"
92
+ ) +
93
+ chalk.bold.hex("#B89B5E")("TECH STACK\n\n") +
94
+ chalk.white(
95
+ "• Node.js, TypeScript, NestJS\n" +
96
+ "• PostgreSQL, MongoDB, Redis\n" +
97
+ " Docker, CI/CD pipelines\n" +
98
+ "• AWS (ECS, EC2, RDS, WAF)"
99
+ ),
339
100
  {
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
- ]
101
+ padding: 1,
102
+ borderStyle: "round",
103
+ borderColor: "cyan",
104
+ margin: 1
352
105
  }
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([
106
+ )
107
+ );
108
+
109
+ await sleep(700);
110
+
111
+ /* =========================
112
+ SYSTEM SIGNATURE
113
+ ========================= */
114
+
115
+ console.log(
116
+ boxen(
117
+ chalk.bold("SYSTEM FLOW\n\n") +
118
+ chalk.bgHex("#3A3A3A").white(" API-GATEWAY ") +
119
+ chalk.gray(" → ") +
120
+ chalk.bgHex("#2E5EAA").white(" SERVICES ") +
121
+ chalk.gray(" → ") +
122
+ chalk.bgHex("#2E7D32").white(" EVENT BUS ") +
123
+ chalk.gray(" → ") +
124
+ chalk.bgHex("#8D6E63").white(" WORKERS ") +
125
+ chalk.gray(" → ") +
126
+ chalk.bgHex("#455A64").white(" CACHE "),
377
127
  {
378
- type: "confirm",
379
- name: "continue",
380
- message: "Explore another section?",
381
- default: true
128
+ padding: 1,
129
+ borderStyle: "round",
130
+ borderColor: "white",
131
+ margin: 1
382
132
  }
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();
133
+ )
134
+ );
135
+
136
+ await sleep(600);
137
+
138
+ /* =========================
139
+ SIGNAL STATUS
140
+ ========================= */
141
+
142
+ const signals = [
143
+ chalk.bgHex("#2E7D32").white(" STABLE "),
144
+ chalk.bgHex("#0277BD").white(" OBSERVABLE "),
145
+ chalk.bgHex("#6A1B9A").white(" SCALABLE "),
146
+ chalk.bgHex("#F9A825").black(" RESILIENT ")
147
+ ].join(" ");
148
+
149
+ console.log("\n " + signals + "\n");
150
+
151
+ /* =========================
152
+ CONTACT
153
+ ========================= */
154
+
155
+ console.log(
156
+ boxen(
157
+ chalk.bold("CONTACT\n\n") +
158
+ chalk.white("Email: ") + chalk.hex("#C9A24D")("vijayguhan10@gmail.com") + "\n" +
159
+ chalk.white("Location: ") + chalk.gray("Salem, Tamil Nadu, India\n\n") +
160
+ chalk.white("Phone: ") + chalk.gray("8438434868\n\n") +
161
+
162
+ chalk.bold("LINKS\n\n") +
163
+ chalk.white("LinkedIn: ") + chalk.gray("linkedin.com/in/vijay-guhan-728299283") + "\n" +
164
+ chalk.white("LeetCode: ") + chalk.gray("leetcode.com/u/vijayguhan12\n\n") +
165
+
166
+ chalk.bold("SELECTED WORK\n\n") +
167
+ chalk.gray("• revozen-partner.vercel.app — Partner Platform\n") +
168
+ chalk.gray("• acs-lead.vercel.app — Lead Management System"),
169
+ {
170
+ padding: 1,
171
+ borderStyle: "round",
172
+ borderColor: "yellow",
173
+ margin: 1
418
174
  }
419
- });
420
-
421
- program.parse();
175
+ )
176
+ );
177
+
178
+ /* =========================
179
+ CLOSING MARK
180
+ ========================= */
181
+
182
+ console.log(
183
+ chalk.hex("#C9A24D").bold(
184
+ "\nReliable • Observable • Scalable • Resilient\n"
185
+ )
186
+ );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "whois-vijay",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Terminal profile of Vijay — backend, systems, distributed thinking",
5
5
  "type": "module",
6
6
  "bin": {