Skip to content

AI-powered travel packing list generator with weather integration

Notifications You must be signed in to change notification settings

min-hsao/packmin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ’ PackMin

AI-powered minimalist packing list generator using capsule wardrobe principles.

PackMin uses AI (OpenAI, DeepSeek, GLM, Gemini, or Anthropic Claude) combined with weather data to generate smart, efficient packing lists that maximize versatility while minimizing what you carry.

Features

  • 🌀️ Weather-aware - Fetches real forecast data for your destinations
  • πŸ”„ Capsule wardrobe - Maximizes mix-and-match versatility
  • πŸ“ Multi-destination - Plan trips with multiple stops
  • 🧺 Laundry-aware - Adjusts quantities based on laundry access
  • πŸ“¦ Volume tracking - Estimates packing cube needs and luggage fit
  • πŸ’Ύ Multiple export formats - TXT, Markdown, CSV (for todo apps)
  • πŸ€– Multiple AI providers - Choose from OpenAI, DeepSeek, GLM, Gemini, or Anthropic
  • ✨ OAuth providers - Use Gemini CLI or Claude CLI without API keys
  • πŸ”§ Interactive setup - First-run wizard configures everything

Installation

From source

git clone https://github.com/minhsao/packmin.git
cd packmin
pip install -e .

Using pip

pip install -r requirements.txt
pip install -e .

Configuration

First-Time Setup (Recommended)

Just run packmin β€” if no configuration exists, it will launch an interactive setup wizard:

packmin
# πŸŽ’ PackMin - First Time Setup
# Choose AI provider, enter API keys, etc.

You can re-run setup anytime with:

packmin --setup

Configuration is saved to ~/.packmin/.env (or .env in the current directory).

AI Providers

PackMin supports two types of AI providers:

OAuth Providers (No API Key Needed) ✨

These use CLI tools that authenticate via your browser:

Provider Install Command Notes
gemini-cli npm install -g @google/gemini-cli Run gemini once to authenticate
claude-cli npm install -g @anthropic-ai/claude-code Run claude once to authenticate

API Key Providers πŸ”‘

Provider Environment Variable Get API Key
deepseek DEEPSEEK_API_KEY platform.deepseek.com
openai OPENAI_API_KEY platform.openai.com
gemini GEMINI_API_KEY aistudio.google.com
anthropic ANTHROPIC_API_KEY console.anthropic.com
glm GLM_API_KEY open.bigmodel.cn

Weather API (Optional)

For accurate weather forecasts, get a free API key from OpenWeatherMap:

OPENWEATHER_API_KEY=your_key_here

Without this, PackMin will use seasonal estimates based on historical data.

Manual Configuration

You can also manually create ~/.packmin/.env or ./.env:

AI_PROVIDER=gemini-cli
# OPENWEATHER_API_KEY=your_key  # optional

Or for API-key providers:

AI_PROVIDER=deepseek
DEEPSEEK_API_KEY=your_deepseek_api_key
ANTHROPIC_API_KEY=your_anthropic_api_key
ANTHROPIC_MODEL=claude-3-sonnet-20240229  # optional, this is the default

Optional Settings

# Defaults
DEFAULT_LUGGAGE_VOLUME=39  # liters
PACKING_CUBE_VOLUME=9      # liters

Getting API Keys

  1. OpenWeather: Sign up at openweathermap.org (free tier available)
  2. DeepSeek: Get key from platform.deepseek.com
  3. OpenAI: Get key from platform.openai.com
  4. GLM (ZhipuAI): Get key from open.bigmodel.cn
  5. Google Gemini: Get key from makersuite.google.com
  6. Anthropic: Get key from console.anthropic.com

Usage

Interactive Mode (default)

Simply run packmin and follow the prompts:

packmin

The interactive wizard will ask for:

  • Destinations with dates
  • Traveler info (gender, age, clothing size)
  • Activities and special events
  • Laundry availability
  • Luggage size

Command-Line Mode

For scripted or quick use, provide flags directly:

# Single destination
packmin \
  -d "Paris, France" \
  -s 2025-06-01 \
  -e 2025-06-07 \
  -g male \
  -a 30 \
  --activities "sightseeing, nice dinners" \
  --volume 39

# Multiple destinations
packmin \
  -d "Paris, France" -s 2025-06-01 -e 2025-06-03 \
  -d "Rome, Italy" -s 2025-06-04 -e 2025-06-07 \
  -g female \
  --laundry \
  --format md \
  -o my_trip.md

CLI Options

Options:
  -d, --destination TEXT    Destination (can be repeated)
  -s, --start-date TEXT     Start date YYYY-MM-DD (pairs with --destination)
  -e, --end-date TEXT       End date YYYY-MM-DD (pairs with --destination)
  -g, --gender TEXT         Traveler gender
  -a, --age INTEGER         Traveler age
  --size TEXT               Clothing size
  --shoe-size TEXT          Shoe size
  --activities TEXT         Activities (comma-separated)
  --laundry / --no-laundry  Laundry available
  -v, --volume FLOAT        Luggage volume in liters [default: 39.0]
  -n, --notes TEXT          Additional notes for AI
  -o, --output PATH         Output file path
  --format [txt|md|csv]     Output format
  --debug                   Enable debug output
  -i, --interactive         Force interactive mode
  --help                    Show this message and exit.

Output Formats

Text (.txt)

Plain text packing list with all details.

Markdown (.md)

Formatted markdown suitable for notes apps or documentation.

CSV (.csv)

Simple format for importing into:

  • Microsoft To Do
  • Apple Reminders
  • Any task manager that accepts CSV

Development

Setup

pip install -e ".[dev]"

Run Tests

pytest

Code Quality

ruff check .
ruff format .

Project Structure

packmin/
β”œβ”€β”€ packmin/
β”‚   β”œβ”€β”€ __init__.py     # Package exports
β”‚   β”œβ”€β”€ cli.py          # Click-based CLI
β”‚   β”œβ”€β”€ config.py       # Environment config
β”‚   β”œβ”€β”€ weather.py      # OpenWeather integration
β”‚   β”œβ”€β”€ ai.py           # AI providers (OpenAI/DeepSeek/GLM/Gemini/Anthropic)
β”‚   β”œβ”€β”€ prompts.py      # AI prompt templates
β”‚   └── models.py       # Pydantic data models
β”œβ”€β”€ tests/
β”‚   └── test_models.py  # Unit tests
β”œβ”€β”€ pyproject.toml      # Package config
β”œβ”€β”€ requirements.txt    # Dependencies
└── README.md

License

MIT

About

AI-powered travel packing list generator with weather integration

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published