Skip to content

AnkanSaha/Portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

189 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Terminal Portfolio

A unique, interactive terminal-based portfolio website built with Next.js and xterm.js. Experience my portfolio through a fully functional Linux-like terminal interface.

Terminal Portfolio Next.js TypeScript xterm.js

πŸ–₯️ Live Demo

Visit: ankan.in

✨ Features

Interactive Terminal Experience

  • Authentic Terminal Feel: Full xterm.js integration with smooth scrolling, cursor blinking, and proper key handling
  • Tab Autocomplete: Press Tab to autocomplete commands or see available options
  • Command History: Use ↑ and ↓ arrow keys to navigate through command history
  • Keyboard Shortcuts: Ctrl+L to clear screen, Ctrl+C to cancel

Portfolio Commands

Command Description
about Display information about me
skills List technical skills and expertise
experience Show work experience
projects Display portfolio projects
education Show educational background
achievements List achievements and badges
contact Display contact information
social Show social media links
github Open GitHub profile
linkedin Open LinkedIn profile

Linux-Like Commands

Command Description
ls List directory contents
ll / ls -la Detailed file listing
pwd Print working directory
cd <dir> Change directory
cat <file> Display file contents
echo <text> Print text to terminal
whoami Display current user
hostname Show system hostname
date Display current date/time
uptime Show system uptime
uname -a System information
neofetch Display system info with ASCII art
history Show command history
top / htop Display running processes
ps Process status
df Disk space usage
free Memory usage
id User identity
ping Network connectivity test

System Commands

Command Description
help Show all available commands
clear Clear terminal screen
exit Exit terminal session

Easter Eggs πŸ₯š

Try running: sudo, rm -rf, vim, nano, curl, and more!

πŸš€ Tech Stack

  • Framework: Next.js 15.3.4 with App Router
  • Terminal: xterm.js 6.0 with FitAddon and WebLinksAddon
  • Language: TypeScript 5.0
  • Styling: Tailwind CSS 4.0
  • Deployment: Cloudflare Workers via OpenNext
  • Analytics: Vercel Analytics

πŸ“¦ Project Structure

Portfolio/
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   └── Terminal/
β”‚   β”‚   β”‚       └── TerminalPortfolio.tsx  # Main terminal component
β”‚   β”‚   β”œβ”€β”€ globals.css                     # Global styles
β”‚   β”‚   β”œβ”€β”€ layout.tsx                      # Root layout
β”‚   β”‚   β”œβ”€β”€ page.tsx                        # Home page
β”‚   β”‚   β”œβ”€β”€ not-found.tsx                   # 404 page
β”‚   β”‚   β”œβ”€β”€ robots.ts                       # SEO robots
β”‚   β”‚   └── sitemap.ts                      # SEO sitemap
β”‚   β”œβ”€β”€ public/
β”‚   β”‚   β”œβ”€β”€ patterns/                       # Background patterns
β”‚   β”‚   └── social/                         # Social icons
β”‚   β”œβ”€β”€ package.json
β”‚   β”œβ”€β”€ next.config.ts
β”‚   β”œβ”€β”€ tsconfig.json
β”‚   └── wrangler.toml                       # Cloudflare config
β”œβ”€β”€ config/
β”‚   └── ankan.conf                          # Nginx configuration
β”œβ”€β”€ LICENSE
└── README.md

πŸ› οΈ Installation

Prerequisites

  • Node.js 18.x or higher
  • npm, yarn, or pnpm

Quick Start

  1. Clone the repository

    git clone https://github.com/AnkanSaha/Portfolio.git
    cd Portfolio/frontend
  2. Install dependencies

    npm install
  3. Run development server

    npm run dev
  4. Open in browser Navigate to http://localhost:3000

πŸš€ Deployment

Cloudflare Workers

# Login to Cloudflare
npm run login:cf

# Build for Cloudflare
npm run build:cf

# Deploy
npm run deploy:cf

Vercel / Other Platforms

npm run build
npm run start

🎨 Customization

Update Portfolio Data

Edit the portfolioData object in frontend/app/components/Terminal/TerminalPortfolio.tsx:

const portfolioData = {
  name: "Your Name",
  title: "Your Title",
  email: "your@email.com",
  // ... add your information
};

Customize Terminal Theme

Modify the theme in the Terminal initialization:

theme: {
  background: '#0a0e27',      // Terminal background
  foreground: '#e0e0e0',      // Text color
  cursor: '#00ff00',          // Cursor color
  // ... customize colors
}

Add New Commands

Add new commands to the commands object:

const commands = {
  mycommand: () => {
    writeLine('\r\n\x1b[1;36mMy custom output\x1b[0m');
  },
  // ... more commands
};

🎯 ANSI Color Codes Reference

Code Color
\x1b[1;31m Bold Red
\x1b[1;32m Bold Green
\x1b[1;33m Bold Yellow
\x1b[1;34m Bold Blue
\x1b[1;35m Bold Magenta
\x1b[1;36m Bold Cyan
\x1b[1;37m Bold White
\x1b[90m Gray
\x1b[0m Reset

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘¨β€πŸ’» Author

Ankan Saha

πŸ™ Acknowledgments


Made with πŸ’š and lots of β˜• by Ankan Saha

About

A full-stack portfolio application built as a monorepo containing three main components: a Next.js frontend, a Fastify backend, and an Expo mobile admin application.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors

Languages