# A Developer CLI Portfolio That Lives Inside Your Terminal | npx vishalrmahajan

### Introduction

Imagine a world where your developer portfolio isn’t just another web page, but an experience that comes to life right inside the terminal , a familiar environment for every coder. That’s exactly the idea behind **npx vishalrmahajan**: my personal CLI-based portfolio, accessible to anyone, anywhere, with a simple command.

In this post, I’m sharing the journey, technical architecture, creative ideas, and a step-by-step approach. Whether you love tinkering with Node.js or just want your portfolio to stand out, this guide will help you craft an unforgettable, interactive command-line narrative.

### Why Build a Terminal Portfolio?

**Authentic for developers**  
 It tells your story in a space where developers naturally spend time.

**Instant access**  
Anyone can type `npx vishalrmahajan` and dive in. No browser needed.

**Interactive**  
Supports real commands, navigation, and links that actually work.

**Unusual in the best way**  
Most portfolios live on the web. This one lives in the command line

### The Technical Architecture

### 1\. Terminal UI with `terminal-kit`

The interface uses [terminal kit](https://www.npmjs.com/package/terminal-kit), a powerful library for building terminal applications. It helps create a smooth user experience with features like:

* Section navigation (Home, Skills, Experience, Projects)
    
* Layouts that adjust when the terminal is resized
    
* Bold headings, ASCII art, and visual structure
    

### 2\. Modular Section Design

Each part of the portfolio is kept in its own file to make things easy to maintain and extend.

* `home.js` contains the welcome message and profile links
    
* `skills.js` lists the languages, tools, and frameworks
    
* `experience.js` shows your work history and key highlights
    
* `projects.js` walks through your favorite work with links and short descriptions
    

You can also include hidden content, such as fun easter eggs, an “about me” story, or a simple terminal game.

### 3\. Command input and navigation

The terminal isn’t just for reading. It’s interactive. Users can:

* Type `help` to view available commands
    
* Jump between sections by typing their names
    
* Use commands like `github` or `linkedin` to open links
    

A custom command handler listens for input, maps commands, and even launches external URLs using the `[open](https://www.npmjs.com/package/open)` package.

### 4\. Visual touches and animations

On startup and exit, simple animations like spinners and progress bars make the experience smoother and more personal. Libraries like `[chalk](https://www.npmjs.com/package/chalk)` and `[cfonts](https://www.npmjs.com/package/cfonts)` let you add colors and large text fonts that feel polished and fun without going over the top.

### 5\. Clean formatting and edge case handling

To make sure your output looks great on every terminal:

* Add `terminal link` to make links clickable in supported environments
    
* Watch for screen size changes and redraw the layout to keep everything clean and readable
    

<iframe src="https://www.youtube.com/embed/aqoyMsZe2K0?feature=oembed" width="700" height="393"></iframe>

### Initalizing Your Own: Step-by-Step Guide

You don’t need much to get started. Here’s a basic walkthrough to set up your own terminal-based portfolio.

### 1\. Project Bootstrap

mkdir my-terminal-portfolio  
cd my-terminal-portfolio  
npm init -y

### 2\. Entry Point

Create `index.js`

#!/usr/bin/env

console.log("This is terminal portfolio");

Update your `package.json` :

"bin": {  
"myportfolio": "./index.js"  
}

### 3\. Run and Publish

* Test locally: `node index.js`
    
* Make your script executable: `chmod +x index.js`
    
* Publish on npm: `npm publish`
    

Anyone can now do:

npx myportfolio

### 4\. Libraries You Can Use to Build and Polish It

You can use the following libraries to build your own terminal-based portfolio with structure, interactivity, and style:

* [terminal-kit](https://www.npmjs.com/package/terminal-kit) : For building responsive terminal UIs
    
* [chalk](https://www.npmjs.com/package/chalk) : For adding color and emphasis to your output
    
* [cfonts](https://www.npmjs.com/package/cfonts) : To display stylish ASCII headers and banners
    
* [open](https://www.npmjs.com/package/open) : To open links and external apps directly from your terminal
    
* [terminal-link](https://www.npmjs.com/package/terminal-link) : For clickable links in supported terminals
    

### Conclusion

A terminal-based portfolio is more than just a cool trick. It’s a creative way to express your personality, show off your skills, and spark curiosity. `npx vishalrmahajan` reflects who I am and how I think   in a way a static page never could.

If this sounds fun, build your own. Experiment. Tell your story in the terminal. You might just surprise yourself and the next person who runs your command.

Want to connect, try out `npx vishalrmahajan`, or share your own? Reach out on [Twitter](https://X.com/VishalRMahajan), or just type **chat** on `npx vishalrmahajan`.

Happy hacking.
