Skip to main content

AI-powered daily planning assistant - Plan your day with conversational AI

Project description

planmyday

PyPI Python License CI

planmyday (pday) - An AI-powered daily planning assistant that helps you create realistic daily plans through interactive conversation. Built with clean architecture, async-first design, and extensibility in mind.

Current version: v0.1.0 - First public release. See CHANGELOG.md for detailed history.

Features

  • Interactive planning with clarifying questions
  • Structured daily plans (schedule, priorities, notes)
  • Multi-turn conversation for plan refinement
  • Session persistence and resume capability
  • Expanded user profiles (10 categories)
  • Auto-learning system that improves with every session
  • Beautiful terminal UI with colors and tables
  • Time tracking with interactive check-ins
  • Progress monitoring and analytics
  • Export to Markdown
  • Template system for recurring schedules

Quick Start

Installation

pipx (Recommended)

# Install pipx if you don't have it
brew install pipx  # macOS
# or: pip install --user pipx

# Install planmyday
pipx install planmyday

pip

pip install planmyday

From Source (development)

git clone https://github.com/ibtisamdev/planmyday.git
cd planmyday
pip install -e .

First-Time Setup

# Run the setup wizard
pday setup

This will:

  1. Prompt for your OpenAI API key
  2. Create configuration directories
  3. Set up data storage

Usage

Tip: Use pday for quick access, or planmyday for the full command.

# Create or resume today's plan
pday start

# Start plan for specific date
pday start 2026-01-23

# List all saved sessions
pday list

# Revise an existing plan
pday revise

# View a saved plan
pday show 2026-01-19

# Time tracking
pday checkin                      # Interactive check-in
pday checkin --start "Task name"  # Quick start task
pday checkin --complete "Task"    # Quick complete task
pday checkin --status             # View progress

# Export commands
pday export                       # Export today's plan to Markdown
pday summary                      # Export end-of-day summary
pday export-all                   # Export both files

# Profile management
pday profile                      # Full guided setup
pday profile productivity         # Edit specific section
pday show-profile                 # View current profile

# Templates
pday template list                # List saved templates
pday template save work-day       # Save current plan as template
pday template apply work-day      # Create plan from template

# Statistics
pday stats                        # Today's stats
pday stats --week                 # This week's summary
pday stats --month                # This month's summary

# Session management
pday delete 2026-01-19            # Delete a session
pday info 2026-01-19              # Show session details

# Configuration
pday config --path                # Show config file locations
pday setup                        # Re-run setup wizard

# Get help
pday --help
pday --version

The agent will:

  1. Ask clarifying questions about your goals
  2. Generate a structured daily plan
  3. Allow iterative refinement based on feedback
  4. Save your session automatically

Configuration

planmyday stores configuration and data in standard locations:

Type Location
Config ~/.config/planmyday/
Data ~/.local/share/planmyday/

For development, use --local flag to store data in the current directory:

pday --local start

Requirements

  • Python 3.12+
  • OpenAI API key
  • macOS or Linux

Architecture

Clean Architecture Layers

src/
├── domain/          # Pure business logic (no I/O)
│   ├── models/      # Domain entities
│   ├── services/    # Business logic
│   └── protocols/   # Interfaces
│
├── infrastructure/  # External dependencies
│   ├── llm/         # LLM providers (OpenAI)
│   ├── storage/     # Storage backends (JSON, SQLite)
│   └── io/          # User I/O
│
├── application/     # Use cases & orchestration
│   ├── config.py    # Configuration
│   ├── container.py # Dependency injection
│   └── use_cases/   # Business workflows
│
└── cli/             # Command-line interface

Key Principles

  • Async-first: All I/O operations are async for better performance
  • Protocol-based: Easy to swap implementations (LLM providers, storage)
  • Testable: Clear dependency injection and mocking
  • Extensible: Add features without modifying existing code
  • Type-safe: Comprehensive type hints and Pydantic validation

Testing

# Run all tests
uv run pytest

# Run with coverage
uv run pytest --cov=src --cov-report=html

# Run specific test file
uv run pytest tests/unit/domain/test_state_machine.py

Documentation

License

MIT License - see LICENSE for details.


Built with: Python 3.12 | OpenAI | Pydantic | Click | Rich | asyncio

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

planmyday-0.1.1.tar.gz (202.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

planmyday-0.1.1-py3-none-any.whl (99.5 kB view details)

Uploaded Python 3

File details

Details for the file planmyday-0.1.1.tar.gz.

File metadata

  • Download URL: planmyday-0.1.1.tar.gz
  • Upload date:
  • Size: 202.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for planmyday-0.1.1.tar.gz
Algorithm Hash digest
SHA256 284f16f28f1daa0804e8dcfa811986f1f5ff0191406f34682f4c37b3a0556038
MD5 4b7553ab90ff7d2bb2e7abecbd92079a
BLAKE2b-256 d7f17b34d8d123810bb1705c72348b3673ccea0967556fb2eb169d3b73956b70

See more details on using hashes here.

Provenance

The following attestation bundles were made for planmyday-0.1.1.tar.gz:

Publisher: release.yml on ibtisamdev/planmyday

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file planmyday-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: planmyday-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 99.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for planmyday-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ed58b68401097a09bba7d9f20a95af58cb3a6fe35af14e966ff5bdbef0fc17e1
MD5 fd4e6574a83e12bfbf8a651b9e53b4be
BLAKE2b-256 d9359612326950ba199592f4532bb8274c3f3c66705edc493bfb53b4b34173cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for planmyday-0.1.1-py3-none-any.whl:

Publisher: release.yml on ibtisamdev/planmyday

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page