Chat with your future self based on your GitHub journey using Groq AI, LangChain, and Redis Vector Search
Hey there! ๐ I'm Aziz Zoaib, and I built this Kubernetes-native app that analyzes your GitHub commit history, creates a vector database of your coding journey, and lets you chat with an AI about your future career trajectory.
An intelligent conversational AI that:
- ๐ Analyzes ALL your GitHub repositories and commit history
- ๐ง Builds a semantic vector database using Redis Stack + HuggingFace embeddings
- ๐ฌ Enables RAG-powered conversations with LangChain for context-aware responses
- ๐ค Uses Groq's ultra-fast Llama 3 for AI-powered career predictions
- ๐ฎ Predicts your future development trajectory based on actual coding patterns
- โก Delivers lightning-fast responses with session-based chat history
- ๐จ Modern dark-themed chat UI with real-time messaging and typing indicators
- ๐ง RAG Architecture - Redis Stack HNSW + HuggingFace embeddings (local, no API costs)
- ๐ Sub-second responses with Groq's optimized Llama 3 inference
- ๐ Smart retrieval - Top-K semantic search across your commit history
โโโโโโโโโโโโโโโโโโโโ
โ GitHub API โ
โ (All Repos + โ
โ Commit History)โ
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Data Ingestion Layer โ
โ โข Fetch all repos โ
โ โข Collect commits โ
โ โข Create documents โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HuggingFace Embeddings โ
โ (sentence-transformers) โ
โ โข Local processing โ
โ โข No external API โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Redis Stack โ
โ โข Vector storage โ
โ โข HNSW indexing โ
โ โข Semantic search โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ LangChain RAG โ
โ โข Context retrieval โ
โ โข Prompt engineering โ
โ โข Chat history mgmt โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Groq AI (Llama 3) โ
โ โข Ultra-fast inference โ
โ โข Career predictions โ
โ โข Contextual responses โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ FastAPI Backend โ
โ โข REST API โ
โ โข Session management โ
โ โข Static file serving โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Chat UI (HTML/JS) โ
โ โข Modern dark theme โ
โ โข Real-time messaging โ
โ โข Responsive design โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Frontend: HTML5/CSS3/JavaScript โข Backend: FastAPI โข AI: Groq (Llama 3 70B) + LangChain
Vector DB: Redis Stack โข Embeddings: HuggingFace Transformers โข Orchestration: Kubernetes
- Kubernetes cluster (Kind, minikube, GKE, EKS, AKS)
- Docker 20.10+ and kubectl configured
- 8GB+ RAM recommended
- Groq API Key (14,400 free requests/day)
- GitHub Personal Access Token (scopes:
repo,read:user)
git clone https://github.com/azizzoaib786/future-me.git
cd future-meNote: Feel free to fork this repo and customize it for your own GitHub analysis!
If you don't have a Kubernetes cluster, create one with Kind:
# Install Kind (if not already installed)
# macOS
brew install kind
# Linux
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
# Create cluster using provided config
kind create cluster --config cluster/future-me-cluster.yaml --name future-me
# Verify cluster is running
kubectl cluster-info --context kind-future-me
kubectl get nodesSkip this step if you're using an existing cluster (minikube, GKE, EKS, AKS, etc.)
# Build Docker image
cd app
docker build -t future-me/app:latest .
# For Kind cluster - load image locally (skip for cloud clusters)
kind load docker-image future-me/app:latest --name future-me
# For cloud clusters - push to your registry
# docker tag future-me/app:latest your-registry/future-me:latest
# docker push your-registry/future-me:latestEdit k8s/future-me-secrets.yaml with your API keys:
stringData:
groq-api-key: "your_groq_api_key_here"
github-token: "your_github_token_here"Alternatively, create secrets via kubectl:
kubectl create secret generic future-me-secrets \
--from-literal=groq-api-key="your_groq_api_key" \
--from-literal=github-token="your_github_token" \
--namespace=future-me# Deploy Redis Stack (vector database)
kubectl apply -f k8s/redis-stack.yaml
# Wait for Redis to be ready
kubectl wait --for=condition=ready pod -l app=redis-stack -n future-me --timeout=60s
# Deploy secrets
kubectl apply -f k8s/future-me-secrets.yaml
# Deploy main application
kubectl apply -f k8s/future-me-deployment.yaml
# Wait for application to be ready (this may take 2-3 minutes on first run)
kubectl wait --for=condition=ready pod -l app=future-me-app -n future-me --timeout=300s# Port forward to local machine
kubectl port-forward service/future-me-app 8000:8000 -n future-me
# Open in your browser:
# http://localhost:8000Ask questions like:
- "Based on my GitHub activity, what will I be working on in 1 year?"
- "What programming languages should I learn next?"
- "What are my strongest technical skills?"
Edit k8s/future-me-deployment.yaml to customize:
| Variable | Default | Description |
|---|---|---|
GROQ_API_KEY |
Required | Groq API key (from secrets) |
GITHUB_TOKEN |
Required | GitHub PAT (from secrets) |
GITHUB_MAX_COMMITS |
100 |
Max commits to analyze across all repos |
FUTURE_ME_NAME |
"Aziz" |
Your name (change this!) |
FUTURE_ME_YEARS_AHEAD |
1 |
Years to project into future |
Example customization:
env:
- name: GITHUB_MAX_COMMITS
value: "500"
- name: FUTURE_ME_NAME
value: "YourName"future-me/
โโโ ๐ app/ # Application source code
โ โโโ ๐ app.py # FastAPI app (GitHub API, LangChain RAG, Redis, Groq AI, Chat endpoints)
โ โโโ ๐ requirements.txt # Python dependencies (fastapi, langchain, sentence-transformers, redis, pygithub)
โ โโโ ๐ Dockerfile # Container build (python:3.11-slim, downloads embedding model)
โ โโโ ๐ static/
โ โโโ ๐ index.html # Chat UI (dark theme, real-time messaging, responsive)
โ
โโโ ๐ k8s/ # Kubernetes manifests
โ โโโ ๐ redis-stack.yaml # Redis deployment (vector storage, HNSW indexing)
โ โโโ ๐ future-me-deployment.yaml # App deployment (service, environment config, resource limits)
โ โโโ ๐ future-me-secrets.yaml # API credentials (Groq, GitHub)
โ
โโโ ๐ cluster/
โ โโโ ๐ future-me-cluster.yaml # Kind cluster config
โ
โโโ ๐ README.md # This file
- Fetches ALL repositories from your GitHub account
- Collects commits across all repos (up to
GITHUB_MAX_COMMITS) - Creates LangChain documents with commit metadata (message, author, date, repo, files)
- Generates embeddings using local HuggingFace model
- Indexes in Redis with HNSW algorithm for fast vector search
Note: This process runs on every startup. Expect 1-3 minutes depending on your commit count.
- Vector Search โ Your message is embedded and matched against commit history
- Context Retrieval โ Top-K most relevant commits are retrieved (K=8)
- Prompt Construction โ LangChain builds prompt with message + context + history
- LLM Inference โ Groq's Llama 3 generates contextual response
- History Update โ Conversation saved to session
- Response Delivery โ Answer streamed back to UI
RAG Benefits: Responses are grounded in your actual commit history, contextually aware of your projects, personalized to your journey, and accurate rather than generic.
- ๐ Dark theme with gradient accents โข ๐ฑ Fully responsive mobile design
- ๐ฌ Typing indicators and real-time updates โข ๐ Scrollable chat history
- โจ Message bubbles with timestamps and avatars โข โจ๏ธ Keyboard shortcuts (Enter to send)
- ๐ Session persistence maintains conversation context
Chat endpoint for conversational interactions.
Request:
{
"message": "What will I be working on in 1 year?",
"session_id": "optional-uuid-v4-string"
}Response:
{
"reply": "Based on your GitHub activity showing strong Python and Kubernetes work...",
"session_id": "uuid-v4-string"
}Features:
- Session management (returns new
session_idif not provided) - Conversation history maintained per session
- RAG-powered responses with commit context
Serves the chat UI (static HTML).
# Forward to localhost (most common for development)
kubectl port-forward service/future-me-app 8000:8000 -n future-me
# Access at: http://localhost:8000# Allow access from any network interface (useful for local network access)
kubectl port-forward --address 0.0.0.0 service/future-me-app 8000:8000 -n future-me
# Access from other devices on your network at: http://YOUR_IP:8000# Run port forward in background
kubectl port-forward service/future-me-app 8000:8000 -n future-me > /dev/null 2>&1 &
# Save the process ID
echo $! > /tmp/future-me-port-forward.pid
# Later, to stop it:
kill $(cat /tmp/future-me-port-forward.pid)# Create a script for persistent port forwarding
cat > port-forward.sh << 'EOF'
#!/bin/bash
while true; do
echo "Starting port forward..."
kubectl port-forward service/future-me-app 8000:8000 -n future-me
echo "Port forward stopped. Restarting in 5 seconds..."
sleep 5
done
EOF
chmod +x port-forward.sh
# Run in background
./port-forward.sh &If port 8000 is already in use:
# Use a different local port
kubectl port-forward service/future-me-app 8080:8000 -n future-me
# Access at: http://localhost:8080If port forward disconnects frequently:
# Use the persistent script (Option 4) above, or
# Check if pod is stable
kubectl get pods -n future-me -wTo find what's using port 8000:
# On macOS/Linux
lsof -i :8000
# Kill the process if needed
kill -9 <PID># View application logs
kubectl logs -f deployment/future-me-app -n future-me
# Check Redis logs
kubectl logs -f deployment/redis-stack -n future-me
# Check pod status
kubectl get pods -n future-meCheck logs:
kubectl logs deployment/future-me-app -n future-me --previousCommon causes:
- โ Invalid Groq API key
- โ Invalid GitHub token
- โ Redis not ready
- โ Out of memory (increase limits)
Fix:
# Verify secrets
kubectl get secret future-me-secrets -n future-me -o jsonpath='{.data.groq-api-key}' | base64 -d
# Check Redis connection
kubectl exec -it deployment/future-me-app -n future-me -- \
python -c "import redis; print(redis.Redis(host='redis').ping())"Problem: Pod crashes during embedding model download
Solution: Increase memory limits
resources:
limits:
memory: "2Gi" # Increase from 1GiProblem: Application can't access GitHub repos
Causes:
- Token doesn't have
reposcope - Repositories are all empty
- API rate limit exceeded
Fix:
# Check GitHub token permissions
curl -H "Authorization: token YOUR_TOKEN" https://api.github.com/user/repos
# Check rate limit
curl -H "Authorization: token YOUR_TOKEN" https://api.github.com/rate_limitProblem: Application can't connect to Redis
Solution:
# Check Redis pod status
kubectl get pods -n future-me -l app=redis-stack
# Check Redis service
kubectl get svc redis -n future-me
# Test connectivity
kubectl run redis-test --rm -it --image=redis:alpine -n future-me -- \
redis-cli -h redis pingProblem: Blank page or 404 errors
Causes:
- Static files not mounted correctly
- Port forward not working
- Pod not ready
Fix:
# Check if pod is running
kubectl get pods -n future-me
# Restart port forward
kubectl port-forward service/future-me-app 8000:8000 -n future-me
# Check if static files exist in pod
kubectl exec deployment/future-me-app -n future-me -- ls -la /app/staticEnable verbose logging by updating the deployment:
env:
- name: LOG_LEVEL
value: "DEBUG"- Career Planning - "What senior roles am I qualified for?" โข "Which technologies should I learn next?"
- Skill Assessment - "What are my strongest programming languages?" โข "How has my code quality improved?"
- Project Discovery - "What interesting side projects have I worked on?" โข "Show me my contribution patterns"
- Learning Guidance - "Based on my GitHub, what should I study next?" โข "Which frameworks align with my experience?"
- Resume Building - "Summarize my most significant contributions" โข "How can I describe my GitHub work on my resume?"
I'd love contributions from the community! Here's how:
Quick Setup:
git clone https://github.com/azizzoaib786/future-me.git && cd future-me/app
python -m venv venv && source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
export GROQ_API_KEY="your-key" GITHUB_TOKEN="your-token" REDIS_URL="redis://localhost:6379/0"
docker run -d -p 6379:6379 redis/redis-stack:latest
uvicorn app:app --reload --host 0.0.0.0 --port 8000Workflow: Fork โ Branch (feature/amazing-feature) โ Code (PEP 8, type hints, docstrings) โ Test โ Commit (feat: add feature) โ PR
Ideas: Bug fixes โข New chat features โข Analytics โข UI/UX โข Tests โข Docs โข Multi-language โข Performance โข Security
- Kubernetes Secrets for API keys (don't commit secrets to Git!)
- Local embedding processing (data stays in your cluster)
- No permanent storage of commit data
For personal use: Keep your API keys safe and use a read-only GitHub token
This project is licensed under the MIT License - see the LICENSE file for details.
Huge thanks to the open-source community and these amazing technologies: Groq (blazingly fast LLM inference) โข LangChain (Swiss Army knife for RAG) โข Redis Stack (vector search that scales) โข HuggingFace (democratizing AI) โข FastAPI (best Python web framework) โข PyGithub (painless GitHub API) โข Kubernetes (cloud-native orchestration)
Groq API Docs โข LangChain RAG Tutorial โข Redis Vector Search โข FastAPI Guide
๐ฎ Built with passion by Aziz Zoaib for developers who want to visualize their coding journey and discover their future potential!
Found this helpful? โญ Star the repo โข ๐ Report issues โข ๐ก Suggest features
Connect with me:
- GitHub: @azizzoaib786
- Email: azizzoaib786@gmail.com