Portfolio-Necromancer

Portfolio Necromancer 🧟

Resurrect your portfolio from the digital wreckage of your hustle

Portfolio Necromancer is an automated tool that scrapes your inbox, Google Drive, Docs, Figma links, Slack threads, and old screenshots to auto-build a stunning portfolio site. Perfect for freelancers and creators who are too busy actually doing great work to maintain a portfolio.

🌐 View Landing Page 📚 Integration Guide Quick Start 🔌 API Guide

✨ Features

🚀 Quick Start

Installation

# Clone the repository
git clone https://github.com/jmenichole/Portfolio-Necromancer.git
cd Portfolio-Necromancer

# Install dependencies
pip install -r requirements.txt

# Or install as a package
pip install -e .

Initial Setup

  1. Start the web server:
    python -m portfolio_necromancer.api.server
    
  2. Open your browser to:
    http://localhost:5000
    
  3. Use the interactive dashboard to:
    • Enter your information and projects
    • Generate portfolios instantly
    • Preview and download results

Option 2: Command Line Interface

  1. Create your configuration file:
    portfolio-necromancer --init
    
  2. Edit config.yaml with your credentials and preferences: ```yaml user: name: “Your Name” email: “your.email@example.com” title: “Freelancer / Developer / Designer” bio: “Short bio about yourself”

ai: api_key: “your-openai-api-key” # For AI categorization and summaries

Configure your data sources

google: credentials_file: “credentials.json”

slack: token: “xoxb-your-slack-bot-token”

figma: access_token: “your-figma-access-token”


3. Set up data source credentials:
   - **Google**: Follow [Google API setup guide](https://developers.google.com/workspace/guides/create-credentials)
   - **Slack**: Create a Slack app and get a bot token
   - **Figma**: Get your personal access token from Figma settings
   - **OpenAI**: Get an API key from [OpenAI](https://platform.openai.com/api-keys)
   
   📖 **See [INTEGRATIONS.md](/Portfolio-Necromancer/INTEGRATIONS.html) for detailed setup instructions for all integrations**

### Generate Your Portfolio

#### Via Web Dashboard

Access the dashboard at `http://localhost:5000` and follow the interactive interface.

#### Via Command Line

```bash
# Generate with default settings
portfolio-necromancer

# Use custom config
portfolio-necromancer --config my-config.yaml

# Custom output directory name
portfolio-necromancer --output awesome-portfolio

The generated portfolio will be in ./generated_portfolios/ by default.

Deploy Your Portfolio

Once generated, deploy your portfolio to the web:

Note: demo.py generates portfolios locally. The output (HTML/CSS files) can be deployed anywhere, but Python is only needed to generate the files, not to host them.

📖 Usage

Basic Usage

from portfolio_necromancer import PortfolioNecromancer

# Initialize
necromancer = PortfolioNecromancer('config.yaml')

# Generate portfolio
output_path = necromancer.resurrect()

print(f"Portfolio generated at: {output_path}")

Advanced Usage

from portfolio_necromancer import PortfolioNecromancer, Portfolio, Project
from portfolio_necromancer.models import ProjectCategory, ProjectSource

# Create custom project
project = Project(
    title="My Awesome Project",
    description="A groundbreaking application",
    category=ProjectCategory.CODE,
    source=ProjectSource.MANUAL,
    tags=["python", "web", "api"]
)

# Initialize and add custom projects
necromancer = PortfolioNecromancer()
portfolio = Portfolio(
    owner_name="Your Name",
    owner_email="you@example.com",
    owner_title="Developer",
    owner_bio="I build cool things",
    projects=[project]
)

# Generate with custom portfolio
from portfolio_necromancer.generator import PortfolioGenerator
generator = PortfolioGenerator({'output_dir': './my-portfolio'})
generator.generate(portfolio, 'custom-name')

🎨 Customization

Themes and Colors

Supported themes:

Supported color schemes:

Configure in config.yaml:

portfolio:
  theme: "modern"
  color_scheme: "blue"

Custom Templates

Templates are in src/portfolio_necromancer/templates/. You can:

  1. Modify existing templates (HTML/CSS)
  2. Add new themes
  3. Customize styling in assets/style.css

🔧 Configuration

Data Source Settings

scraping:
  email:
    enabled: true
    max_messages: 100
    date_range_days: 365
  
  drive:
    enabled: true
    max_files: 50
  
  slack:
    enabled: true
    max_messages: 100
  
  figma:
    enabled: true
    max_projects: 20
  
  screenshots:
    enabled: true
    folder_path: "./screenshots"

Feature Flags

features:
  custom_domain: false          # Pro feature
  custom_branding: false        # Pro feature
  remove_watermark: false       # Pro feature
  unlimited_projects: false     # Free tier: 20 projects
  advanced_analytics: false     # Pro feature

💰 Monetization Model

Portfolio Necromancer supports a freemium model:

Free Tier:

Pro Tier:

Enable pro features in config.yaml:

features:
  unlimited_projects: true
  custom_branding: true
  remove_watermark: true
  custom_domain: "yourdomain.com"

🎯 Target Audience

Perfect for:

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📝 License

MIT License - see LICENSE file for details

🙏 Acknowledgments


Remember: You’re not lazy, you’re just too busy being awesome. Let Portfolio Necromancer handle the portfolio. 🚀