Skip to main content

SSH Portfolio

SSH Portfolio is a unique CLI tool that serves your professional portfolio over SSH using Go and Charm’s Bubble Tea framework. Instead of a traditional web portfolio, visitors connect via SSH to explore your projects, skills, and contact information through an elegant terminal user interface (TUI).

What Makes SSH Portfolio Special?

SSH Portfolio transforms the humble terminal into a beautiful, interactive showcase for your work. Built with modern Go tools and the Charm ecosystem, it offers:
  • Interactive Terminal UI: Navigate with arrow keys through a polished TUI powered by Bubble Tea
  • SSH Server Built-in: Uses Charm’s Wish library to handle SSH connections seamlessly
  • YAML Configuration: Simple, declarative config.yaml to define your entire portfolio
  • Lipgloss Styling: Beautiful color schemes and layouts using Catppuccin-inspired themes
  • Project Showcase: Display your projects with descriptions, tech stacks, and links
  • Skills Display: Organize skills by category with optional proficiency bars
  • Docker Support: Deploy anywhere with included Dockerfile and docker-compose.yml
  • Zero Dependencies: Visitors only need an SSH client (already on every system)

Key Features

Quickstart

Get SSH Portfolio running in under 5 minutes with Docker or Go

Installation

Detailed installation instructions for Docker, Go, and building from source

Configuration

Learn how to customize your portfolio with config.yaml

Deployment

Deploy your SSH portfolio to production servers

How It Works

  1. Configure: Edit config.yaml with your name, title, intro, skills, projects, and contact info
  2. Run: Start the SSH server on port 2222 (or any port you choose)
  3. Share: Give people your SSH connection string: ssh your-server.com -p 2222
  4. Impress: Visitors explore your portfolio through a beautiful terminal interface

Architecture Overview

SSH Portfolio is built with:
  • Go 1.24+: Modern Go with the latest features (go.mod:3)
  • Bubble Tea: Charm’s TUI framework for building interactive terminal apps (main.go:13)
  • Wish: SSH server middleware from Charm (main.go:14-18)
  • Lipgloss: Terminal styling with colors and layouts (ui/theme.go)
  • YAML: Human-friendly configuration format
The application consists of:
  • Main Server (main.go:24-77): Initializes the SSH server, loads config, handles connections
  • UI Package (ui/): Contains the Bubble Tea models for each page (Home, Skills, Projects, Contact)
  • Config Package (config/config.go): YAML parsing and data structures
  • Navigation: Tab-based interface with keyboard shortcuts (← → to switch pages, ↑ ↓ to scroll)

Example Portfolio View

When someone connects to your SSH portfolio, they’ll see:
  Home      Skills    Projects    Contact  
────────────────────────────────────────────

   ███████╗ █████╗ ████████╗████████╗ █████╗ ██████╗
   ██╔════╝██╔══██╗╚══██╔══╝╚══██╔══╝██╔══██╗██╔══██╗
   ███████╗███████║   ██║      ██║   ███████║██████╔╝
   ╚════██║██╔══██║   ██║      ██║   ██╔══██║██╔══██╗
   ███████║██║  ██║   ██║      ██║   ██║  ██║██║  ██║
   ╚══════╝╚═╝  ╚═╝   ╚═╝      ╚═╝   ╚═╝  ╚═╝╚═╝  ╚═╝

             Sr. Full-stack Developer

        Hi, I am Abdul Sattar!
        Passionate full-stack developer with over
        5 years of practical experience developing
        desktop, web, and mobile apps.

        Navigate with arrow keys and explore my projects.

  ← → pages  │  q quit

Who Is This For?

SSH Portfolio is perfect for:
  • Developers who want to stand out with a unique portfolio format
  • DevOps Engineers showcasing infrastructure and automation skills
  • CLI Enthusiasts who prefer terminal interfaces over web browsers
  • Anyone looking for a lightweight, zero-JavaScript portfolio solution

Next Steps

Quickstart

Get started in 5 minutes

Installation

Detailed setup guide

Configuration

Customize your portfolio

Build docs developers (and LLMs) love