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.
Visit: ankan.in
- Authentic Terminal Feel: Full xterm.js integration with smooth scrolling, cursor blinking, and proper key handling
- Tab Autocomplete: Press
Tabto autocomplete commands or see available options - Command History: Use
βandβarrow keys to navigate through command history - Keyboard Shortcuts:
Ctrl+Lto clear screen,Ctrl+Cto cancel
| 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 |
| 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 |
| Command | Description |
|---|---|
help |
Show all available commands |
clear |
Clear terminal screen |
exit |
Exit terminal session |
Try running: sudo, rm -rf, vim, nano, curl, and more!
- 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
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
- Node.js 18.x or higher
- npm, yarn, or pnpm
-
Clone the repository
git clone https://github.com/AnkanSaha/Portfolio.git cd Portfolio/frontend -
Install dependencies
npm install
-
Run development server
npm run dev
-
Open in browser Navigate to http://localhost:3000
# Login to Cloudflare
npm run login:cf
# Build for Cloudflare
npm run build:cf
# Deploy
npm run deploy:cfnpm run build
npm run startEdit 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
};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 to the commands object:
const commands = {
mycommand: () => {
writeLine('\r\n\x1b[1;36mMy custom output\x1b[0m');
},
// ... more commands
};| 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 |
This project is licensed under the MIT License - see the LICENSE file for details.
Ankan Saha
- Full Stack Developer at Hoichoi Technologies
- GitHub: @AnkanSaha
- LinkedIn: theankansaha
- Email: ankansahaofficial@gmail.com
- xterm.js - The terminal emulator that powers this project
- Next.js - The React framework
- Tailwind CSS - For styling
- OpenNext - For Cloudflare Workers deployment
Made with π and lots of β by Ankan Saha