subhadip-a063 1.0.2 → 1.0.4
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 +70 -0
- package/index.js +5 -16
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# 🚀 Subhadip's CLI Portfolio
|
|
2
|
+
|
|
3
|
+
> An interactive command-line portfolio showcasing projects, skills, and professional experience.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## ⚡ Quick Start
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npx subhadip-a063
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
No installation required! Run the command above to explore the portfolio directly in your terminal.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## ✨ Features
|
|
17
|
+
|
|
18
|
+
- **Interactive CLI Experience** – Navigate through portfolio sections with simple commands
|
|
19
|
+
- **Project Showcase** – View projects with live demos and GitHub repositories
|
|
20
|
+
- **Professional Profile** – Access skills, experience, hackathons, and education details
|
|
21
|
+
- **Styled Terminal UI** – Beautiful, centered layouts with gradient text and bordered boxes
|
|
22
|
+
- **Direct Links** – Click-through links to portfolio, GitHub, and LinkedIn profiles
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 🎯 Available Commands
|
|
27
|
+
|
|
28
|
+
Once launched, use these commands to explore:
|
|
29
|
+
|
|
30
|
+
| Command | Description |
|
|
31
|
+
|---------|-------------|
|
|
32
|
+
| `projects` | View all projects with live and GitHub links |
|
|
33
|
+
| `skills` | Browse technical skills and expertise |
|
|
34
|
+
| `experience` | See professional experience and roles |
|
|
35
|
+
| `hackathons` | Check hackathon achievements and wins |
|
|
36
|
+
| `education` | View educational background |
|
|
37
|
+
| `help` | Display all available commands |
|
|
38
|
+
| `home` | Return to the main screen |
|
|
39
|
+
| `exit` | Close the portfolio |
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 🔗 Connect
|
|
44
|
+
|
|
45
|
+
- **Portfolio**: [a063.xyz](https://a063.xyz)
|
|
46
|
+
- **GitHub**: [@Subhadipjana95](https://github.com/Subhadipjana95)
|
|
47
|
+
- **LinkedIn**: [subhadipjana095](https://linkedin.com/in/subhadipjana095)
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 🛠️ Tech Stack
|
|
52
|
+
|
|
53
|
+
Built with Node.js and powered by:
|
|
54
|
+
- `chalk` – Terminal string styling
|
|
55
|
+
- `boxen` – Bordered boxes
|
|
56
|
+
- `cfonts` – ASCII art text
|
|
57
|
+
- `gradient-string` – Gradient colors
|
|
58
|
+
- `terminal-link` – Clickable links
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 📝 License
|
|
63
|
+
|
|
64
|
+
MIT © [Subhadip Jana](https://github.com/Subhadipjana95)
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
<div align="center">
|
|
69
|
+
<sub>Made with ❤️ by Subhadip Jana</sub>
|
|
70
|
+
</div>
|
package/index.js
CHANGED
|
@@ -156,20 +156,8 @@ function render() {
|
|
|
156
156
|
|
|
157
157
|
console.log(centeredBox);
|
|
158
158
|
|
|
159
|
-
// renderFooter();
|
|
160
159
|
}
|
|
161
160
|
|
|
162
|
-
// ----------------------
|
|
163
|
-
// FOOTER
|
|
164
|
-
// ----------------------
|
|
165
|
-
|
|
166
|
-
// function renderFooter() {
|
|
167
|
-
// const width = cliWidth();
|
|
168
|
-
// const footer = "Type commands to get more info | Type 'help' for commands";
|
|
169
|
-
// const padding = Math.max(0, Math.floor((width - footer.length) / 2));
|
|
170
|
-
// console.log(" ".repeat(padding) + chalk.gray(footer));
|
|
171
|
-
// }
|
|
172
|
-
|
|
173
161
|
// ----------------------
|
|
174
162
|
// INTERACTIVE MODE
|
|
175
163
|
// ----------------------
|
|
@@ -189,19 +177,20 @@ function startInteractiveMode() {
|
|
|
189
177
|
// Draw top border and hint
|
|
190
178
|
console.log("");
|
|
191
179
|
console.log(indent + b("╭" + "─".repeat(boxWidth - 2) + "╮"));
|
|
192
|
-
console.log(indent + b("│") + chalk.gray(" Type: help
|
|
180
|
+
console.log(indent + b("│") + chalk.gray(" Type: 'help' to know all commands".padEnd(boxWidth - 2)) + b("│"));
|
|
193
181
|
console.log(indent + b("├" + "─".repeat(boxWidth - 2) + "┤"));
|
|
194
182
|
console.log(indent + b("│") + " ".repeat(boxWidth - 2) + b("│"));
|
|
195
183
|
console.log(indent + b("╰" + "─".repeat(boxWidth - 2) + "╯"));
|
|
196
184
|
|
|
197
|
-
// Move cursor up
|
|
198
|
-
process.stdout.write("\x1B[
|
|
185
|
+
// Move cursor up to the empty input row
|
|
186
|
+
process.stdout.write("\x1B[2F");
|
|
187
|
+
process.stdout.write("\r");
|
|
199
188
|
|
|
200
189
|
// Prompt with left border character
|
|
201
190
|
const promptPrefix = indent + b("│ ") + chalk.green("❯ ");
|
|
202
191
|
|
|
203
192
|
rl.question(promptPrefix, (answer) => {
|
|
204
|
-
// Move cursor
|
|
193
|
+
// Move cursor past the box before clearing
|
|
205
194
|
process.stdout.write("\n\n");
|
|
206
195
|
handleCommand(answer.trim().toLowerCase());
|
|
207
196
|
});
|