theneovimmer 1.0.0 ā 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.
- package/README.md +71 -48
- package/assets/banner.png +0 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +74 -67
- package/dist/ui.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,79 +1,102 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="assets/banner.png" alt="TheNeovimmer CLI Banner" width="100%" />
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
[](https://opensource.org/licenses/MIT)
|
|
4
|
+
# TheNeovimmer CLI
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
**Your Interactive Terminal Portfolio Experience**
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
[](https://opensource.org/licenses/MIT)
|
|
9
|
+
[](https://www.npmjs.com/package/theneovimmer)
|
|
10
|
+
[](https://nodejs.org)
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
<p>
|
|
13
|
+
An immersive, terminal-based portfolio interface designed for developers who live in the CLI.<br/>
|
|
14
|
+
Built with ā¤ļø and ā by <strong>TheNeovimmer</strong>.
|
|
15
|
+
</p>
|
|
16
|
+
</div>
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## š Quick Start
|
|
17
21
|
|
|
18
|
-
Run the CLI
|
|
22
|
+
Run the CLI instantly without installation:
|
|
19
23
|
|
|
20
|
-
|
|
24
|
+
```bash
|
|
21
25
|
npx theneovimmer
|
|
22
|
-
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## ⨠Features
|
|
29
|
+
|
|
30
|
+
Experience a fully interactive TUI (Text User Interface) with:
|
|
23
31
|
|
|
24
|
-
|
|
32
|
+
- **š View Top Projects**: Explore my latest and greatest showcased projects.
|
|
33
|
+
- **š Visit Portfolio**: Seamlessly open my web portfolio in your default browser.
|
|
34
|
+
- **š¤ About Me**: Get to know the developer behind the code.
|
|
35
|
+
- **š§ Send Email**: Quick action to open your mail client and get in touch.
|
|
36
|
+
- **š» GitHub Profile**: Direct access to my GitHub contributions and repositories.
|
|
37
|
+
- **šØ Premium UI**: Beautiful gradients, ASCII art, and smooth interactions.
|
|
25
38
|
|
|
26
|
-
|
|
39
|
+
## š¦ Installation
|
|
40
|
+
|
|
41
|
+
For frequent use, you can install the CLI globally:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
27
44
|
npm install -g theneovimmer
|
|
45
|
+
# or
|
|
46
|
+
yarn global add theneovimmer
|
|
47
|
+
# or
|
|
48
|
+
pnpm add -g theneovimmer
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Then run it from anywhere:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
28
54
|
theneovimmer
|
|
29
|
-
|
|
55
|
+
```
|
|
30
56
|
|
|
31
|
-
## š®
|
|
57
|
+
## š® Usage
|
|
32
58
|
|
|
33
|
-
|
|
59
|
+
Navigate the menu using your arrow keys `ā` `ā` and press `Enter` to select an option.
|
|
34
60
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
61
|
+
```
|
|
62
|
+
? What would you like to do?
|
|
63
|
+
⯠š View Top Projects
|
|
64
|
+
š¤ About Me
|
|
65
|
+
š Visit Portfolio
|
|
66
|
+
š§ Send Email
|
|
67
|
+
š» GitHub Profile
|
|
68
|
+
š Exit
|
|
69
|
+
```
|
|
41
70
|
|
|
42
71
|
## š ļø Tech Stack
|
|
43
72
|
|
|
44
|
-
This CLI is built
|
|
73
|
+
This CLI is built using a modern Node.js stack:
|
|
45
74
|
|
|
46
|
-
- **
|
|
47
|
-
- **Chalk
|
|
48
|
-
- **
|
|
49
|
-
- **
|
|
50
|
-
- **Gradient String
|
|
51
|
-
- **Open** - Open URLs in the browser
|
|
75
|
+
- **[Inquirer.js](https://github.com/SBoudrias/Inquirer.js)**: Interactive command line user interface.
|
|
76
|
+
- **[Chalk](https://github.com/chalk/chalk)**: Terminal string styling.
|
|
77
|
+
- **[Boxen](https://github.com/sindresorhus/boxen)**: Creating boxes in the terminal.
|
|
78
|
+
- **[Figlet](https://github.com/patorjk/figlet.js)**: ASCII art text.
|
|
79
|
+
- **[Gradient String](https://github.com/bokub/gradient-string)**: Beautiful color gradients.
|
|
52
80
|
|
|
53
|
-
##
|
|
81
|
+
## š¤ Contributing
|
|
54
82
|
|
|
55
|
-
|
|
83
|
+
Contributions are welcome! If you have suggestions or find issues:
|
|
56
84
|
|
|
57
|
-
|
|
58
|
-
git
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
npm link
|
|
63
|
-
theneovimmer
|
|
64
|
-
\`\`\`
|
|
85
|
+
1. Fork the repository.
|
|
86
|
+
2. Create your feature branch (`git checkout -b feature/AmazingFeature`).
|
|
87
|
+
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`).
|
|
88
|
+
4. Push to the branch (`git push origin feature/AmazingFeature`).
|
|
89
|
+
5. Open a Pull Request.
|
|
65
90
|
|
|
66
91
|
## š License
|
|
67
92
|
|
|
68
|
-
MIT
|
|
93
|
+
Distributed under the MIT License. See `LICENSE` for more information.
|
|
69
94
|
|
|
70
|
-
##
|
|
95
|
+
## āļø Author
|
|
96
|
+
|
|
97
|
+
**Ilyes Bouzayen**
|
|
71
98
|
|
|
72
99
|
- š Portfolio: [ilyes-bouzayen.vercel.app](https://ilyes-bouzayen.vercel.app)
|
|
73
100
|
- š¼ GitHub: [@TheNeovimmer](https://github.com/TheNeovimmer)
|
|
74
101
|
- š§ Email: ilyesbouzayen@hotmail.com
|
|
75
102
|
- š LinkedIn: [ilyes-bouzayen](https://linkedin.com/in/ilyes-bouzayen)
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
āļø If you like this project, give it a star on GitHub!
|
|
Binary file
|
package/dist/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AA2BA,wBAAgB,oBAAoB,SAkCnC;AAED,wBAAgB,eAAe,SAgC9B;AAED,wBAAgB,YAAY,SAiD3B;AAED,wBAAgB,cAAc,SA0B7B"}
|
package/dist/ui.js
CHANGED
|
@@ -1,89 +1,96 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import boxen from 'boxen';
|
|
3
3
|
import gradient from 'gradient-string';
|
|
4
|
+
import figlet from 'figlet';
|
|
4
5
|
import { profile, topProjects, techStack } from './data.js';
|
|
5
|
-
// Color themes
|
|
6
|
+
// Color themes - Premium Palette
|
|
6
7
|
const colors = {
|
|
7
|
-
primary: chalk.hex('#4FC08D'),
|
|
8
|
-
secondary: chalk.hex('#61DAFB'),
|
|
9
|
-
accent: chalk.hex('#FF6B6B'),
|
|
8
|
+
primary: chalk.hex('#4FC08D'), // Neovim Green
|
|
9
|
+
secondary: chalk.hex('#61DAFB'), // React/Cyan
|
|
10
|
+
accent: chalk.hex('#FF6B6B'), // Salmon
|
|
10
11
|
success: chalk.hex('#51CF66'),
|
|
11
12
|
info: chalk.hex('#339AF0'),
|
|
12
13
|
warning: chalk.hex('#FFD43B'),
|
|
13
|
-
muted: chalk.gray
|
|
14
|
+
muted: chalk.hex('#6c757d'), // Better gray
|
|
15
|
+
highlight: chalk.hex('#f093fb'),
|
|
16
|
+
white: chalk.hex('#ffffff')
|
|
14
17
|
};
|
|
15
18
|
const gradients = {
|
|
16
19
|
rainbow: gradient(['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FFEAA7']),
|
|
17
20
|
ocean: gradient(['#667eea', '#764ba2', '#f093fb']),
|
|
18
21
|
sunset: gradient(['#fa709a', '#fee140']),
|
|
19
|
-
cool: gradient(['#4facfe', '#00f2fe'])
|
|
22
|
+
cool: gradient(['#4facfe', '#00f2fe']),
|
|
23
|
+
neon: gradient(['#ff00cc', '#3333ff'])
|
|
20
24
|
};
|
|
21
25
|
export function displayWelcomeBanner() {
|
|
22
|
-
const banner = `
|
|
23
|
-
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
24
|
-
ā ā
|
|
25
|
-
ā āāāāāāāāāāāā āāāāāāāāāāāāāāā āāāāāāāāāāā āāāāāāā ā
|
|
26
|
-
ā āāāāāāāāāāāā āāāāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāā ā
|
|
27
|
-
ā āāā āāāāāāāāāāāāāā āāāāāā āāāāāāāāā āāā āāā ā
|
|
28
|
-
ā āāā āāāāāāāāāāāāāā āāāāāāāāāāāāāāāā āāā āāā ā
|
|
29
|
-
ā āāā āāā āāāāāāāāāāāāāā āāāāāāāāāāāāāāāāāāāāāāā ā
|
|
30
|
-
ā āāā āāā āāāāāāāāāāāāāā āāāāāāāāāāāāā āāāāāāā ā
|
|
31
|
-
ā ā
|
|
32
|
-
ā āāāā āāāāāāāāāāā āāāāāāā āāā āāāāāāāāāā āāāāāāāā āāāāāāāāāāāāāāāāāāā ā
|
|
33
|
-
ā āāāāā āāāāāāāāāāāāāāāāāāāāāāā āāāāāāāāāāā āāāāāāāāāā āāāāāāāāāāāāāāāāāāāāā ā
|
|
34
|
-
ā āāāāāā āāāāāāāāā āāā āāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāā ā
|
|
35
|
-
ā āāāāāāāāāāāāāāāā āāā āāāāāāā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā āāāāāāāā ā
|
|
36
|
-
ā āāā āāāāāāāāāāāāāāāāāāāāāāā āāāāāāā āāāāāā āāā āāāāāā āāā āāāāāāāāāāāāāā āāā ā
|
|
37
|
-
ā āāā āāāāāāāāāāāāā āāāāāāā āāāāā āāāāāā āāāāāā āāāāāāāāāāāāāā āāā ā
|
|
38
|
-
ā ā
|
|
39
|
-
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
40
|
-
`;
|
|
41
26
|
console.clear();
|
|
42
|
-
|
|
27
|
+
// Keep the original ascii but updated to TheNeovimmer using figlet for a cleaner look
|
|
28
|
+
// or use a custom "Standard" font if available, but let's stick to what we can control reliably
|
|
29
|
+
const bannerText = figlet.textSync('TheNeovimmer', {
|
|
30
|
+
font: 'Standard',
|
|
31
|
+
horizontalLayout: 'fitted',
|
|
32
|
+
verticalLayout: 'default',
|
|
33
|
+
width: 100,
|
|
34
|
+
whitespaceBreak: true
|
|
35
|
+
});
|
|
36
|
+
console.log(gradients.ocean(bannerText));
|
|
43
37
|
console.log();
|
|
44
|
-
|
|
38
|
+
const welcomeBox = boxen(`${colors.primary.bold('Welcome to my Terminal Portfolio!')}\n\n` +
|
|
39
|
+
`${colors.white(profile.name)}\n` +
|
|
40
|
+
`${colors.secondary(profile.role)}\n\n` +
|
|
41
|
+
`${colors.info('š ' + profile.location)}`, {
|
|
45
42
|
padding: 1,
|
|
46
43
|
margin: 1,
|
|
47
44
|
borderStyle: 'round',
|
|
48
45
|
borderColor: 'cyan',
|
|
49
|
-
textAlignment: 'center'
|
|
50
|
-
|
|
46
|
+
textAlignment: 'center',
|
|
47
|
+
title: 'š HELLO WORLD',
|
|
48
|
+
titleAlignment: 'center'
|
|
49
|
+
});
|
|
50
|
+
console.log(welcomeBox);
|
|
51
51
|
console.log();
|
|
52
52
|
}
|
|
53
53
|
export function displayProjects() {
|
|
54
54
|
console.clear();
|
|
55
|
-
console.log(gradients.
|
|
55
|
+
console.log(gradients.neon(figlet.textSync('Projects', { font: 'Small' })));
|
|
56
56
|
console.log(colors.muted('ā'.repeat(80)));
|
|
57
57
|
console.log();
|
|
58
58
|
topProjects.forEach((project, index) => {
|
|
59
59
|
const techBadges = project.tech.map(t => colors.info(`[${t}]`)).join(' ');
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
// Create a more distinct header for each project
|
|
61
|
+
const header = colors.primary.bold(`${index + 1}. ${project.name}`);
|
|
62
|
+
const link = colors.accent(`š ${project.url}`);
|
|
63
|
+
const projectContent = `${header}\n` +
|
|
64
|
+
`${colors.muted('ā'.repeat(project.name.length + 3))}\n` +
|
|
65
|
+
`${colors.white(project.description)}\n\n` +
|
|
66
|
+
`${colors.highlight('Technologies:')}\n${techBadges}\n\n` +
|
|
67
|
+
`${link}`;
|
|
68
|
+
const projectBox = boxen(projectContent, {
|
|
64
69
|
padding: 1,
|
|
65
70
|
margin: { top: 0, bottom: 1, left: 2, right: 2 },
|
|
66
|
-
borderStyle: '
|
|
67
|
-
borderColor: 'magenta'
|
|
71
|
+
borderStyle: 'bold',
|
|
72
|
+
borderColor: 'magenta',
|
|
73
|
+
dimBorder: true
|
|
68
74
|
});
|
|
69
75
|
console.log(projectBox);
|
|
70
76
|
});
|
|
71
|
-
console.log(colors.muted('ā'.repeat(80)));
|
|
72
77
|
console.log();
|
|
73
78
|
}
|
|
74
79
|
export function displayAbout() {
|
|
75
80
|
console.clear();
|
|
76
|
-
console.log(gradients.sunset('
|
|
81
|
+
console.log(gradients.sunset(figlet.textSync('About Me', { font: 'Small' })));
|
|
77
82
|
console.log(colors.muted('ā'.repeat(80)));
|
|
78
83
|
console.log();
|
|
79
84
|
const aboutBox = boxen(`${colors.primary.bold(profile.name)}\n` +
|
|
80
|
-
`${colors.secondary(profile.role)}\n
|
|
81
|
-
`${
|
|
82
|
-
`${colors.
|
|
83
|
-
`${colors.
|
|
84
|
-
`${colors.info('
|
|
85
|
-
`${colors.info('
|
|
86
|
-
`${colors.info('
|
|
85
|
+
`${colors.secondary(profile.role)}\n` +
|
|
86
|
+
`${colors.muted('ā'.repeat(30))}\n\n` +
|
|
87
|
+
`${colors.white(profile.bio)}\n\n` +
|
|
88
|
+
`${colors.highlight('CONTACT & SOCIALS')}\n` +
|
|
89
|
+
`${colors.info('š Location :')} ${profile.location}\n` +
|
|
90
|
+
`${colors.info('š§ Email :')} ${profile.email}\n` +
|
|
91
|
+
`${colors.info('š Website :')} ${profile.portfolio}\n` +
|
|
92
|
+
`${colors.info('š¼ GitHub :')} ${profile.github}\n` +
|
|
93
|
+
`${colors.info('š LinkedIn :')} ${profile.linkedin}`, {
|
|
87
94
|
padding: 1,
|
|
88
95
|
margin: 1,
|
|
89
96
|
borderStyle: 'double',
|
|
@@ -92,40 +99,40 @@ export function displayAbout() {
|
|
|
92
99
|
});
|
|
93
100
|
console.log(aboutBox);
|
|
94
101
|
console.log();
|
|
95
|
-
// Tech Stack
|
|
96
|
-
console.log(gradients.cool('
|
|
102
|
+
// Tech Stack with improved layout
|
|
103
|
+
console.log(gradients.cool('š ļø TECHNICAL SKILLS'));
|
|
104
|
+
console.log(colors.muted('āāāāāāāāāāāāāāāāāāāā'));
|
|
105
|
+
console.log();
|
|
97
106
|
const displayTechCategory = (title, techs) => {
|
|
98
|
-
console.log(` ${colors.accent.bold(title)}`);
|
|
99
|
-
|
|
107
|
+
console.log(` ${colors.accent.bold('āŗ ' + title)}`);
|
|
108
|
+
// Wrap techs if too long? For now, join is fine.
|
|
109
|
+
console.log(` ${techs.map(t => colors.success(t)).join(colors.muted(' ⢠'))}`);
|
|
100
110
|
console.log();
|
|
101
111
|
};
|
|
102
112
|
displayTechCategory('Frontend', techStack.frontend);
|
|
103
|
-
displayTechCategory('Backend
|
|
104
|
-
displayTechCategory('AI
|
|
105
|
-
displayTechCategory('DevOps
|
|
106
|
-
displayTechCategory('
|
|
113
|
+
displayTechCategory('Backend', techStack.backend);
|
|
114
|
+
displayTechCategory('AI/ML', techStack.ai);
|
|
115
|
+
displayTechCategory('DevOps', techStack.devops);
|
|
116
|
+
displayTechCategory('Others', techStack.other);
|
|
107
117
|
console.log(colors.muted('ā'.repeat(80)));
|
|
108
118
|
console.log();
|
|
109
119
|
}
|
|
110
120
|
export function displayGoodbye() {
|
|
111
121
|
console.clear();
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
ā ā
|
|
119
|
-
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
120
|
-
`;
|
|
121
|
-
console.log(gradients.rainbow(goodbye));
|
|
122
|
+
const goodbyeText = figlet.textSync('Goodbye!', {
|
|
123
|
+
font: 'Standard',
|
|
124
|
+
horizontalLayout: 'default',
|
|
125
|
+
verticalLayout: 'default'
|
|
126
|
+
});
|
|
127
|
+
console.log(gradients.rainbow(goodbyeText));
|
|
122
128
|
console.log();
|
|
123
|
-
console.log(boxen(`${colors.
|
|
124
|
-
`${colors.
|
|
125
|
-
`${colors.
|
|
129
|
+
console.log(boxen(`${colors.white('Thanks for dropping by! Let\'s connect:')}\n\n` +
|
|
130
|
+
`${colors.primary('š§ ' + profile.email)}\n` +
|
|
131
|
+
`${colors.secondary('š ' + profile.portfolio)}\n` +
|
|
132
|
+
`${colors.info('š» ' + profile.github)}`, {
|
|
126
133
|
padding: 1,
|
|
127
134
|
margin: 1,
|
|
128
|
-
borderStyle: '
|
|
135
|
+
borderStyle: 'classic',
|
|
129
136
|
borderColor: 'yellow',
|
|
130
137
|
textAlignment: 'center'
|
|
131
138
|
}));
|
package/dist/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE5D,
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|