NeemaMwende/Terminal-portfolio
If you are the rightful owner of Terminal-portfolio and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The AI-Powered Terminal Portfolio is an interactive terminal-style portfolio website that leverages AI technologies to provide intelligent responses and a unique user experience.
🖥️ AI-Powered Terminal Portfolio
An interactive, terminal-style portfolio website built with Streamlit, featuring AI-powered responses using RAG (Retrieval-Augmented Generation) and Google's Gemini AI.
✨ Features
- 🎨 Retro Terminal UI - Authentic terminal experience with typing animations
- 🤖 AI-Powered Responses - Intelligent answers using RAG + Gemini 2.5
- ⚡ Fast Loading - Optimized with persistent ChromaDB storage
- 📄 PDF Resume Integration - Automatically extracts info from your resume
- 💾 Smart Caching - Embeddings cached for instant subsequent loads
- 🎯 Interactive Commands - Navigate through skills, projects, experience, and more
🎥 Demo
neema@portfolio:~$ welcome
Hi, I'm Neema Mwende, a Software & AI Engineer.
Welcome to my interactive 'AI powered' portfolio terminal!
Type 'help' to see available commands.
neema@portfolio:~$ help
Available commands:
about - Learn about me
projects - View my projects
skills - See my technical skills
experience - My work experience
contact - How to reach me
education - My educational background
certifications - View my certifications
leadership - Leadership and community involvement
clear - Clear the terminal
📋 Prerequisites
Before you begin, ensure you have the following installed:
- Python 3.12+ (or Python 3.8+)
- pip (Python package manager)
- Git (for cloning the repository)
API Keys Required
You'll need the following API keys:
- OpenAI API Key - For embeddings (Get it here)
- Google Gemini API Key - For AI responses (Get it here)
🚀 Installation
1. Clone the Repository
git clone https://github.com/yourusername/terminal-portfolio.git
cd terminal-portfolio
2. Create Virtual Environment
# Create virtual environment
python3 -m venv venv
# Activate virtual environment
# On Linux/Mac:
source venv/bin/activate
# On Windows:
venv\Scripts\activate
3. Install Dependencies
pip install -r requirements.txt
Required packages:
streamlit>=1.28.0
python-dotenv>=1.0.0
google-generativeai>=0.3.0
chromadb>=0.4.0
langchain>=0.1.0
langchain-community>=0.0.10
langchain-openai>=0.0.5
openai>=1.0.0
pypdf>=3.17.0
4. Set Up Environment Variables
Create a .env file in the project root:
touch .env
Add your API keys:
# OpenAI API Key (for embeddings)
OPENAI_API_KEY=your_openai_api_key_here
# Google Gemini API Key (for AI responses)
GEMINI_API_KEY=your_gemini_api_key_here
# Resume PDF path (optional, defaults to resume.pdf)
RESUME_PDF_PATH=resume.pdf
# Terminal customization (optional)
TERMINAL_PROMPT=neema@portfolio:~$
TERMINAL_COLOR=#00ff99
PROMPT_COLOR=#00aaff
5. Add Your Resume
Place your resume PDF in the project root:
# Make sure your resume is named resume.pdf
# Or update RESUME_PDF_PATH in .env
cp /path/to/your/resume.pdf ./resume.pdf
🎮 Usage
Run the Application
streamlit run ui.py
The terminal will open in your browser at http://localhost:8501
First Run (Slower - Embedding)
On the first run, the application will:
- Load your resume PDF
- Split it into chunks
- Generate embeddings using OpenAI
- Store them in ChromaDB
Expected time: 15-30 seconds
🚀 Initializing MCP Server...
📄 Loading and embedding resume (first time or updated)...
🔄 Generating embeddings...
💾 Storing in database...
✓ Resume embedded and stored (5 chunks)
✓ MCP Server cached and ready!
Subsequent Runs (Fast - Cached)
After the first run, embeddings are cached:
Expected time: 1-2 seconds ⚡
✓ Resume already loaded (5 chunks) - skipping embedding
✓ MCP Server cached and ready!
📁 Project Structure
terminal-portfolio/
├── ui.py # Main Streamlit UI with terminal interface
├── mcp_server.py # MCP server handling commands
├── rag_engine.py # RAG engine with ChromaDB
├── tools.py # Command handlers and AI tools
├── ai_engine.py # AI-powered command suggestions
├── config.py # Configuration management
├── requirements.txt # Python dependencies
├── .env # Environment variables (create this)
├── resume.pdf # Your resume PDF (add this)
├── chroma_db/ # ChromaDB persistent storage (auto-created)
│ └── ...
├── README.md # This file
└── .gitignore # Git ignore file
🎨 Available Commands
| Command | Description |
|---|---|
welcome | Display welcome message |
help | Show all available commands |
about | Learn about your background |
skills | View technical skills |
experience | Display work experience |
projects | Show your projects |
education | Educational background |
certifications | List certifications |
leadership | Leadership and community involvement |
contact | Contact information |
clear | Clear the terminal screen |
You can also ask custom questions like:
- "What programming languages do you know?"
- "Tell me about your AI projects"
- "What's your most recent job?"
🔧 Troubleshooting
Issue: "OPENAI_API_KEY not found"
Solution: Make sure .env file exists and contains valid API keys:
cat .env # Check if file exists and has keys
👨💻 Author
Neema Mwende
- Email: neemamwende009@gmail.com
- GitHub: @neemamwende
- LinkedIn: Neema Mwende
🙏 Acknowledgments
- Built with Streamlit
- AI powered by Google Gemini
- Embeddings by OpenAI
- Vector storage by ChromaDB
- RAG framework by LangChain
📊 Performance
- First Load: 15-30 seconds (embedding generation)
- Subsequent Loads: 1-2 seconds (cached)
- Response Time: < 1 second (cached queries)
- Memory Usage: ~200-300 MB
- Storage: ~50 MB (ChromaDB cache)