AI-powered daily planning assistant - Plan your day with conversational AI
Project description
planmyday
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:
- Prompt for your OpenAI API key
- Create configuration directories
- Set up data storage
Usage
Tip: Use
pdayfor quick access, orplanmydayfor 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:
- Ask clarifying questions about your goals
- Generate a structured daily plan
- Allow iterative refinement based on feedback
- 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
- CHANGELOG.md - Development history
- ROADMAP.md - Development roadmap
- AGENTS.md - Developer guide for AI coding agents
- docs/user-profiles.md - User profile system
- docs/configuration.md - Configuration guide
License
MIT License - see LICENSE for details.
Built with: Python 3.12 | OpenAI | Pydantic | Click | Rich | asyncio
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
284f16f28f1daa0804e8dcfa811986f1f5ff0191406f34682f4c37b3a0556038
|
|
| MD5 |
4b7553ab90ff7d2bb2e7abecbd92079a
|
|
| BLAKE2b-256 |
d7f17b34d8d123810bb1705c72348b3673ccea0967556fb2eb169d3b73956b70
|
Provenance
The following attestation bundles were made for planmyday-0.1.1.tar.gz:
Publisher:
release.yml on ibtisamdev/planmyday
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
planmyday-0.1.1.tar.gz -
Subject digest:
284f16f28f1daa0804e8dcfa811986f1f5ff0191406f34682f4c37b3a0556038 - Sigstore transparency entry: 863439861
- Sigstore integration time:
-
Permalink:
ibtisamdev/planmyday@6c37c0f9fb1269008516e4e946fab7a28336c935 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/ibtisamdev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6c37c0f9fb1269008516e4e946fab7a28336c935 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed58b68401097a09bba7d9f20a95af58cb3a6fe35af14e966ff5bdbef0fc17e1
|
|
| MD5 |
fd4e6574a83e12bfbf8a651b9e53b4be
|
|
| BLAKE2b-256 |
d9359612326950ba199592f4532bb8274c3f3c66705edc493bfb53b4b34173cf
|
Provenance
The following attestation bundles were made for planmyday-0.1.1-py3-none-any.whl:
Publisher:
release.yml on ibtisamdev/planmyday
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
planmyday-0.1.1-py3-none-any.whl -
Subject digest:
ed58b68401097a09bba7d9f20a95af58cb3a6fe35af14e966ff5bdbef0fc17e1 - Sigstore transparency entry: 863439909
- Sigstore integration time:
-
Permalink:
ibtisamdev/planmyday@6c37c0f9fb1269008516e4e946fab7a28336c935 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/ibtisamdev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6c37c0f9fb1269008516e4e946fab7a28336c935 -
Trigger Event:
release
-
Statement type: