Skip to main content

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

Project description

planmyday

CI Version Python License

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

# From PyPI (when released)
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.0.tar.gz (217.1 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.0-py3-none-any.whl (99.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: planmyday-0.1.0.tar.gz
  • Upload date:
  • Size: 217.1 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.0.tar.gz
Algorithm Hash digest
SHA256 2635c587e388bd84e3c5e6bb5b98b7216db97d977fb8d9d341ce66340a1e8a78
MD5 64ae38673a918e62bb9882d8f556f80e
BLAKE2b-256 2ea046296654fcb50ca6514587cccd36ae3802b40a4a630f72f0628a177b1c6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for planmyday-0.1.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: planmyday-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 99.4 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1e48ff48d872e90430c74897ed60d50745aac12e7b4523d0a347eb905246a1c3
MD5 5aca90b6e5ad71be277659397aa8a3c3
BLAKE2b-256 774994af45b6db4e6cde40e2beb9bea0e628ff67e78d9b67e77d8a5a1ce3f82a

See more details on using hashes here.

Provenance

The following attestation bundles were made for planmyday-0.1.0-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