arvind 1.0.0

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/README.md ADDED
@@ -0,0 +1,73 @@
1
+ # Arvind โ€” Interactive CLI Portfolio
2
+
3
+ > An AI-powered, interactive developer portfolio that runs directly in your terminal.
4
+
5
+ ```bash
6
+ npx arvind
7
+ ```
8
+
9
+ ## โœจ Features
10
+
11
+ | Command | Description |
12
+ |---|---|
13
+ | ๐Ÿ‘ค About Me | Profile, bio & social links |
14
+ | ๐Ÿ› ๏ธ Skills | Tech stack with visual progress bars |
15
+ | ๐Ÿš€ Projects | GitHub projects with stars & links |
16
+ | ๐Ÿ’ผ Experience | Work history with highlights |
17
+ | ๐Ÿค– ML Simulation | Live model training simulation |
18
+ | ๐Ÿ“ฌ Contact | How to reach out |
19
+
20
+ ## ๐Ÿš€ Quick Start
21
+
22
+ ```bash
23
+ # Run directly with npx (no install needed)
24
+ npx arvind
25
+
26
+ # Or install globally
27
+ npm install -g arvind
28
+ arvind
29
+ ```
30
+
31
+ ## ๐Ÿ› ๏ธ Local Development
32
+
33
+ ```bash
34
+ git clone https://github.com/arvind8162/portfolio-cli
35
+ cd portfolio-cli
36
+ npm install
37
+ npm start
38
+ ```
39
+
40
+ ## ๐Ÿ“ Project Structure
41
+
42
+ ```
43
+ src/
44
+ โ”œโ”€โ”€ index.js # Entry point & main menu
45
+ โ”œโ”€โ”€ commands/
46
+ โ”‚ โ”œโ”€โ”€ about.js # About section
47
+ โ”‚ โ”œโ”€โ”€ skills.js # Skills with progress bars
48
+ โ”‚ โ”œโ”€โ”€ projects.js # Projects showcase
49
+ โ”‚ โ”œโ”€โ”€ experience.js # Work experience
50
+ โ”‚ โ”œโ”€โ”€ ml.js # ML training simulation
51
+ โ”‚ โ””โ”€โ”€ contact.js # Contact info
52
+ โ”œโ”€โ”€ data/
53
+ โ”‚ โ””โ”€โ”€ portfolio.js # All your portfolio data
54
+ โ””โ”€โ”€ utils/
55
+ โ””โ”€โ”€ display.js # Helpers: colors, boxes, bars
56
+ ```
57
+
58
+ ## ๐ŸŽจ Built With
59
+
60
+ - **chalk** โ€” Terminal colors & styling
61
+ - **inquirer** โ€” Interactive CLI prompts
62
+ - **ora** โ€” Elegant spinners
63
+ - **boxen** โ€” Beautiful terminal boxes
64
+ - **figlet** โ€” ASCII art banners
65
+ - **gradient-string** โ€” Gradient text effects
66
+
67
+ ## ๐Ÿ“ Customise
68
+
69
+ Edit `src/data/portfolio.js` to update all your info โ€” name, bio, projects, skills, experience โ€” everything in one place.
70
+
71
+ ## ๐Ÿ“„ License
72
+
73
+ MIT ยฉ Arvind
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "arvind",
3
+ "version": "1.0.0",
4
+ "description": "AI-powered interactive CLI portfolio of Arvind",
5
+ "main": "src/index.js",
6
+ "bin": {
7
+ "arvind": "./src/index.js"
8
+ },
9
+ "scripts": {
10
+ "start": "node src/index.js"
11
+ },
12
+ "keywords": ["portfolio", "cli", "ai", "interactive"],
13
+ "author": "Arvind",
14
+ "license": "MIT",
15
+ "dependencies": {
16
+ "chalk": "^5.3.0",
17
+ "inquirer": "^9.2.15",
18
+ "ora": "^8.0.1",
19
+ "boxen": "^7.1.1",
20
+ "gradient-string": "^2.0.2",
21
+ "figlet": "^1.7.0",
22
+ "cli-spinners": "^2.9.2"
23
+ }
24
+ }
@@ -0,0 +1,21 @@
1
+ import chalk from "chalk";
2
+ import { profile } from "../data/portfolio.js";
3
+ import { box, header } from "../utils/display.js";
4
+
5
+ export async function showAbout() {
6
+ header("๐Ÿ‘ค About Me");
7
+
8
+ const content = [
9
+ chalk.bold.white(profile.name) + " " + chalk.cyan(profile.title),
10
+ "",
11
+ chalk.gray(profile.bio),
12
+ "",
13
+ chalk.yellow("๐Ÿ“") + " " + chalk.white(profile.location),
14
+ chalk.yellow("๐Ÿ“ง") + " " + chalk.white(profile.email),
15
+ chalk.yellow("๐ŸŒ") + " " + chalk.cyan(profile.website),
16
+ chalk.yellow("๐Ÿ™") + " " + chalk.cyan(profile.github),
17
+ chalk.yellow("๐Ÿ’ผ") + " " + chalk.cyan(profile.linkedin),
18
+ ].join("\n");
19
+
20
+ console.log(box(content, "โœฆ Arvind"));
21
+ }
@@ -0,0 +1,18 @@
1
+ import chalk from "chalk";
2
+ import { profile } from "../data/portfolio.js";
3
+ import { box } from "../utils/display.js";
4
+
5
+ export async function showContact() {
6
+ const content = [
7
+ chalk.bold.white("Let's build something amazing together! ๐Ÿš€"),
8
+ "",
9
+ chalk.yellow("๐Ÿ“ง Email ") + chalk.cyan(profile.email),
10
+ chalk.yellow("๐Ÿ™ GitHub ") + chalk.cyan(profile.github),
11
+ chalk.yellow("๐Ÿ’ผ LinkedIn ") + chalk.cyan(profile.linkedin),
12
+ chalk.yellow("๐ŸŒ Website ") + chalk.cyan(profile.website),
13
+ "",
14
+ chalk.gray("Open to: Full-time roles, Freelance, Collab & OSS"),
15
+ ].join("\n");
16
+
17
+ console.log("\n" + box(content, "๐Ÿ“ฌ Contact Arvind"));
18
+ }
@@ -0,0 +1,21 @@
1
+ import chalk from "chalk";
2
+ import { experience } from "../data/portfolio.js";
3
+ import { header, sleep } from "../utils/display.js";
4
+
5
+ export async function showExperience() {
6
+ header("๐Ÿ’ผ Work Experience");
7
+
8
+ for (const job of experience) {
9
+ console.log(
10
+ `\n ${chalk.bold.white(job.role)} ${chalk.gray("@")} ${chalk.cyan(job.company)} ${chalk.gray(job.period)}`
11
+ );
12
+ console.log(chalk.gray(" " + "โ”€".repeat(46)));
13
+
14
+ for (const h of job.highlights) {
15
+ console.log(chalk.green(" โ€บ ") + chalk.white(h));
16
+ await sleep(80);
17
+ }
18
+ }
19
+
20
+ console.log();
21
+ }
@@ -0,0 +1,69 @@
1
+ import chalk from "chalk";
2
+ import ora from "ora";
3
+ import { mlModels } from "../data/portfolio.js";
4
+ import { header, progressBar, randomBetween, sleep } from "../utils/display.js";
5
+
6
+ async function simulateTraining(modelName) {
7
+ console.log("\n" + chalk.bold.cyan(` ๐Ÿง  Training: ${modelName}`) + "\n");
8
+
9
+ const epochs = 6;
10
+ let loss = randomBetween(2.4, 3.0);
11
+ let acc = randomBetween(30, 45);
12
+
13
+ for (let e = 1; e <= epochs; e++) {
14
+ const spinner = ora({
15
+ text: chalk.gray(`Epoch ${e}/${epochs} โ€” Processing batches...`),
16
+ color: "cyan",
17
+ }).start();
18
+
19
+ await sleep(randomBetween(300, 600));
20
+
21
+ loss -= randomBetween(0.2, 0.5);
22
+ acc += randomBetween(7, 15);
23
+ if (acc > 97) acc = randomBetween(93, 97.8);
24
+ if (loss < 0.08) loss = randomBetween(0.05, 0.15);
25
+
26
+ spinner.stop();
27
+ console.log(
28
+ ` ${chalk.bold.white(`Epoch ${String(e).padStart(2, "0")}/${epochs}`)}` +
29
+ ` ${chalk.gray("loss:")} ${chalk.red(loss.toFixed(4))}` +
30
+ ` ${chalk.gray("acc:")} ${chalk.green(acc.toFixed(2) + "%")}` +
31
+ ` ${progressBar(Math.round(acc), 100, 16)}`
32
+ );
33
+ }
34
+
35
+ console.log("\n " + chalk.bgGreen.black(" โœ“ TRAINING COMPLETE ") + "\n");
36
+ }
37
+
38
+ export async function runMLDemo() {
39
+ header("๐Ÿค– ML Simulation Lab");
40
+
41
+ console.log(chalk.gray(" Sannidhya's trained models:\n"));
42
+
43
+ mlModels.forEach((m, i) => {
44
+ console.log(
45
+ ` ${chalk.cyan((i + 1) + ".")} ${chalk.bold.white(m.name.padEnd(22))}` +
46
+ `${chalk.gray(m.type.padEnd(10))}` +
47
+ `Accuracy: ${progressBar(m.accuracy, 100, 16)}`
48
+ );
49
+ });
50
+
51
+ console.log("\n" + chalk.gray(" โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€"));
52
+ console.log(" " + chalk.bold.yellow("โšก Live Training Simulation") + "\n");
53
+
54
+ const spinner = ora({ text: "Initializing GPU environment...", color: "magenta" }).start();
55
+ await sleep(1200);
56
+ spinner.succeed(chalk.green("GPU ready [CUDA 12.1 | 4 ร— A100]"));
57
+
58
+ const spinner2 = ora({ text: "Loading dataset...", color: "cyan" }).start();
59
+ await sleep(900);
60
+ spinner2.succeed(chalk.green("Dataset loaded [128k samples | 512-dim embeddings]"));
61
+
62
+ const spinner3 = ora({ text: "Compiling model graph...", color: "blue" }).start();
63
+ await sleep(700);
64
+ spinner3.succeed(chalk.green("Model compiled [Transformer 12L | 124M params]"));
65
+
66
+ await simulateTraining("NeuralChat-v2 (GPT-style)");
67
+
68
+ console.log(chalk.gray(" Final model saved โ†’ ") + chalk.cyan("./models/neuralchat-v2.pt\n"));
69
+ }
@@ -0,0 +1,30 @@
1
+ import chalk from "chalk";
2
+ import { projects } from "../data/portfolio.js";
3
+ import { header, tag, sleep } from "../utils/display.js";
4
+ import boxen from "boxen";
5
+
6
+ export async function showProjects() {
7
+ header("๐Ÿš€ Projects");
8
+
9
+ for (const p of projects) {
10
+ const content = [
11
+ chalk.bold.white(p.name) + " " + chalk.yellow(`โญ ${p.stars}`),
12
+ chalk.gray(p.description),
13
+ "",
14
+ " " + p.tech.map(t => tag(t)).join(" "),
15
+ "",
16
+ chalk.cyan(" ๐Ÿ”— " + p.link),
17
+ ].join("\n");
18
+
19
+ console.log(
20
+ boxen(content, {
21
+ padding: { top: 0, bottom: 0, left: 1, right: 1 },
22
+ margin: { top: 0, bottom: 1, left: 2, right: 2 },
23
+ borderStyle: "round",
24
+ borderColor: "blue",
25
+ })
26
+ );
27
+
28
+ await sleep(150);
29
+ }
30
+ }
@@ -0,0 +1,47 @@
1
+ import chalk from "chalk";
2
+ import { skills } from "../data/portfolio.js";
3
+ import { header, box, tag, progressBar, sleep } from "../utils/display.js";
4
+ import ora from "ora";
5
+
6
+ export async function showSkills() {
7
+ header("๐Ÿ› ๏ธ Skills & Tech Stack");
8
+
9
+ const spinner = ora({ text: "Loading skill matrix...", color: "cyan" }).start();
10
+ await sleep(900);
11
+ spinner.succeed(chalk.green("Skill matrix loaded"));
12
+
13
+ const sections = [
14
+ { label: "Languages", emoji: "๐Ÿ’ฌ", items: skills.languages },
15
+ { label: "ML / DL", emoji: "๐Ÿง ", items: skills.ml_dl },
16
+ { label: "AI & LLMs", emoji: "๐Ÿค–", items: skills.ai_llm },
17
+ { label: "Data Science", emoji: "๐Ÿ“Š", items: skills.data_science },
18
+ { label: "MLOps", emoji: "๐Ÿš€", items: skills.mlops },
19
+ { label: "Cloud & Data", emoji: "โ˜๏ธ", items: skills.cloud_data },
20
+ ];
21
+
22
+ for (const section of sections) {
23
+ const line =
24
+ chalk.bold.yellow(` ${section.emoji} ${section.label.padEnd(12)}`) +
25
+ " " +
26
+ section.items.map(s => tag(s)).join(" ");
27
+ console.log(line);
28
+ await sleep(120);
29
+ }
30
+
31
+ console.log("\n" + chalk.bold.cyan(" โšก Proficiency Highlights") + "\n");
32
+
33
+ const proficiencies = [
34
+ { name: "Python / ML libs ", val: 96 },
35
+ { name: "Deep Learning ", val: 92 },
36
+ { name: "LLMs & RAG ", val: 89 },
37
+ { name: "Data Science / EDA", val: 91 },
38
+ { name: "MLOps / Cloud ", val: 82 },
39
+ ];
40
+
41
+ for (const p of proficiencies) {
42
+ console.log(` ${chalk.white(p.name)} ${progressBar(p.val)}`);
43
+ await sleep(100);
44
+ }
45
+
46
+ console.log();
47
+ }
@@ -0,0 +1,94 @@
1
+ export const profile = {
2
+ name: "Arvind",
3
+ title: "AI ML/ Data Science & AI Engineer",
4
+ location: "India ๐Ÿ‡ฎ๐Ÿ‡ณ",
5
+ email: "arvindhadiyal8162@gmail.com",
6
+ github: "https://github.com/Arvind8162",
7
+ linkedin: "linkedin.com/in/arvindhadiyal8162",
8
+ website: "arvind.dev",
9
+ bio: "AI/ML Engineer passionate about building intelligent systems, training deep learning models, and turning raw data into real-world impact. Specialised in NLP, computer vision, and scalable ML pipelines. Open source contributor and AI researcher"
10
+ };
11
+
12
+ export const skills = {
13
+ languages: ["JavaScript", "TypeScript", "Python", "C++", "Rust", "Bash"],
14
+ ml_dl: ["PyTorch", "TensorFlow", "Keras", "Scikit-learn", "XGBoost", "LightGBM"],
15
+ ai_llm: ["LangChain", "LlamaIndex", "OpenAI API", "Hugging Face", "PEFT", "vLLM"],
16
+ data_science:["Pandas", "NumPy", "Matplotlib", "Seaborn", "Plotly", "PySpark"],
17
+ mlops: ["MLflow", "Weights & Biases", "DVC", "Docker", "Airflow", "FastAPI"],
18
+ devops: ["Docker", "GitHub Actions", "AWS", "Vercel", "Redis"],
19
+ cloud_data: ["AWS SageMaker", "GCP Vertex AI", "BigQuery", "Pinecone", "PostgreSQL"]
20
+ };
21
+
22
+ export const projects = [
23
+ {
24
+ name: "VisionGuard",
25
+ description: "Real-time object detection & anomaly system for industrial safety",
26
+ tech: ["PyTorch", "YOLOv9", "FastAPI", "OpenCV"],
27
+ stars: 521,
28
+ link: "github.com/sannidhya/visionguard"
29
+ },
30
+ {
31
+ name: "DataLens",
32
+ description: "Automated EDA & ML pipeline generator from raw CSV/JSON datasets",
33
+ tech: ["Python", "Pandas", "Scikit-learn", "Streamlit"],
34
+ stars: 384,
35
+ link: "github.com/sannidhya/datalens"
36
+ },
37
+ {
38
+ name: "RAGForge",
39
+ description: "Production-grade Retrieval-Augmented Generation engine with multi-source indexing",
40
+ tech: ["LangChain", "Pinecone", "GPT-4o", "FastAPI"],
41
+ stars: 693,
42
+ link: "github.com/sannidhya/ragforge"
43
+ },
44
+ {
45
+ name: "This CLI Portfolio",
46
+ description: "AI-powered interactive developer portfolio running in your terminal",
47
+ tech: ["Node.js", "Inquirer", "Chalk", "Figlet"],
48
+ stars: 112,
49
+ link: "github.com/sannidhya/portfolio-cli"
50
+ }
51
+ ];
52
+
53
+ export const experience = [
54
+ {
55
+ company: "TechStartup XYZ",
56
+ role: "Senior Full Stack Developer",
57
+ period: "2023 โ€“ Present",
58
+ highlights: [
59
+ "Built AI-driven recommendation engine (โ†‘40% engagement)",
60
+ "Led team of 5 devs across 3 microservices",
61
+ "Reduced API latency by 60% via Redis caching"
62
+ ]
63
+ },
64
+ {
65
+ company: "OpenSource Inc.",
66
+ role: "Core Contributor",
67
+ period: "2022 โ€“ 2023",
68
+ highlights: [
69
+ "Contributed 120+ PRs to popular OSS projects",
70
+ "Maintained Node.js CLI toolkit with 3k+ weekly downloads",
71
+ "Wrote technical docs used by 10k+ developers"
72
+ ]
73
+ },
74
+ {
75
+ company: "Freelance",
76
+ role: "Full Stack Developer",
77
+ period: "2020 โ€“ 2022",
78
+ highlights: [
79
+ "Delivered 15+ client projects end-to-end",
80
+ "Built e-commerce platforms with payment integrations",
81
+ "Created custom AI chatbots for businesses"
82
+ ]
83
+ }
84
+ ];
85
+
86
+ export const mlModels = [
87
+ { name: "Sentiment Analyzer", accuracy: 94.2, type: "NLP" },
88
+ { name: "Image Classifier", accuracy: 97.8, type: "Vision" },
89
+ { name: "Code Completion", accuracy: 88.5, type: "LLM" },
90
+ { name: "Anomaly Detector", accuracy: 91.3, type: "Tabular" },
91
+ { name: "LLaMA-3 Fine-tune", accuracy: 96.4, type: "LLM" },
92
+ { name: "Crop Disease Detector", accuracy: 97.8, type: "Vision" },
93
+ { name: "Fraud Detector", accuracy: 93.1, type: "Tabular" },
94
+ ];
package/src/index.js ADDED
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env node
2
+
3
+ import chalk from "chalk";
4
+ import figlet from "figlet";
5
+ import gradient from "gradient-string";
6
+ import inquirer from "inquirer";
7
+ import { sleep } from "./utils/display.js";
8
+ import { showAbout } from "./commands/about.js";
9
+ import { showSkills } from "./commands/skills.js";
10
+ import { showProjects } from "./commands/projects.js";
11
+ import { showExperience } from "./commands/experience.js";
12
+ import { runMLDemo } from "./commands/ml.js";
13
+ import { showContact } from "./commands/contact.js";
14
+
15
+ const MENU = [
16
+ { name: "๐Ÿ‘ค About Me", value: "about" },
17
+ { name: "๐Ÿ› ๏ธ Skills & Stack", value: "skills" },
18
+ { name: "๐Ÿš€ Projects", value: "projects" },
19
+ { name: "๐Ÿ’ผ Experience", value: "experience" },
20
+ { name: "๐Ÿค– ML Simulation Lab", value: "ml" },
21
+ { name: "๐Ÿ“ฌ Contact", value: "contact" },
22
+ { name: "โŒ Exit", value: "exit" },
23
+ ];
24
+
25
+ async function banner() {
26
+ console.clear();
27
+ const art = figlet.textSync("Arvind", { font: "Slant", horizontalLayout: "default" });
28
+ console.log(gradient.pastel.multiline(art));
29
+ console.log(
30
+ chalk.gray(" ") +
31
+ chalk.bold.white("AI Engineer") +
32
+ chalk.gray(" ยท ") +
33
+ chalk.cyan("AI ML / data scientist") +
34
+ chalk.gray(" ยท ") +
35
+ chalk.yellow("Open Source Contributor")
36
+ );
37
+ console.log(chalk.gray(" โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n"));
38
+ }
39
+
40
+ async function main() {
41
+ await banner();
42
+
43
+ while (true) {
44
+ const { choice } = await inquirer.prompt([
45
+ {
46
+ type: "list",
47
+ name: "choice",
48
+ message: chalk.bold.cyan("What would you like to explore?"),
49
+ choices: MENU,
50
+ pageSize: 10,
51
+ },
52
+ ]);
53
+
54
+ if (choice === "exit") {
55
+ console.log("\n" + chalk.bold.cyan("Thanks for visiting Arvind's portfolio! ๐Ÿ‘‹ Let's connect.\n"));
56
+ process.exit(0);
57
+ }
58
+
59
+ console.clear();
60
+ await banner();
61
+
62
+ if (choice === "about") await showAbout();
63
+ if (choice === "skills") await showSkills();
64
+ if (choice === "projects") await showProjects();
65
+ if (choice === "experience") await showExperience();
66
+ if (choice === "ml") await runMLDemo();
67
+ if (choice === "contact") await showContact();
68
+
69
+ await sleep(400);
70
+ }
71
+ }
72
+
73
+ main().catch(err => {
74
+ console.error(chalk.red("\n Error: ") + err.message);
75
+ process.exit(1);
76
+ });
@@ -0,0 +1,50 @@
1
+ import chalk from "chalk";
2
+ import boxen from "boxen";
3
+
4
+ export function header(text) {
5
+ console.log("\n" + chalk.bold.cyan("โ”".repeat(50)));
6
+ console.log(chalk.bold.white(` ${text}`));
7
+ console.log(chalk.cyan("โ”".repeat(50)));
8
+ }
9
+
10
+ export function success(msg) {
11
+ console.log(chalk.green(" โœ“ ") + chalk.white(msg));
12
+ }
13
+
14
+ export function info(msg) {
15
+ console.log(chalk.blue(" โ„น ") + chalk.gray(msg));
16
+ }
17
+
18
+ export function badge(text, color = "cyan") {
19
+ return chalk[color].bold(`[${text}]`);
20
+ }
21
+
22
+ export function tag(text) {
23
+ return chalk.bgBlue.white(` ${text} `);
24
+ }
25
+
26
+ export function progressBar(value, max = 100, width = 20) {
27
+ const filled = Math.round((value / max) * width);
28
+ const bar = chalk.cyan("โ–ˆ".repeat(filled)) + chalk.gray("โ–‘".repeat(width - filled));
29
+ return `${bar} ${chalk.yellow(value + "%")}`;
30
+ }
31
+
32
+ export function sleep(ms) {
33
+ return new Promise(r => setTimeout(r, ms));
34
+ }
35
+
36
+ export function box(content, title = "") {
37
+ return boxen(content, {
38
+ padding: { top: 1, bottom: 1, left: 2, right: 2 },
39
+ margin: { top: 0, bottom: 1, left: 2, right: 2 },
40
+ borderStyle: "round",
41
+ borderColor: "cyan",
42
+ width: 70,
43
+ title: title ? chalk.bold.cyan(title) : undefined,
44
+ titleAlignment: "center"
45
+ });
46
+ }
47
+
48
+ export function randomBetween(min, max) {
49
+ return Math.random() * (max - min) + min;
50
+ }