
📖 Documentation • 🚀 Quick Start • 💡 Features • 🔧 Development • 🤝 Contributing
FreeTodo is an AI-powered intelligent todo management application that helps you efficiently manage tasks, boost productivity, and achieve your goals. Through conversational AI interaction and smart task breakdown, FreeTodo transforms complex projects into actionable steps.
FreeTodo adopts a frontend-backend separation architecture:
lifetrace/ directory)free-todo-frontend/ directory)Backend:
Frontend:
This project uses uv for fast and reliable dependency management.
Install uv:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
Note: After installation,
uvmay not be immediately available in the current terminal. To activate it in the current session:
- Windows (PowerShell): Run
$env:Path = "$env:USERPROFILE\.local\bin;$env:Path"to refresh PATH- macOS/Linux: Run
exec $SHELLto reinitialize your shell session, or restart your terminalAlternatively, you can simply open a new terminal window and
uvwill be available automatically.
Install dependencies and sync environment:
# Sync dependencies from pyproject.toml and uv.lock
uv sync
# Activate the virtual environment
# macOS/Linux
source .venv/bin/activate
# Windows
.venv\Scripts\activate
Note: On first run, the system will automatically create
config.yamlfromdefault_config.yamlif it doesn't exist. You can customize your settings by editinglifetrace/config/config.yaml.
Start the server:
python -m lifetrace.server
Customize Prompts: If you want to modify AI prompts for different features, you can edit
lifetrace/config/prompt.yaml.
The backend service will automatically find an available port starting from 8001 (or 8100 for build version). If the default port is occupied, it will automatically use the next available port and display the actual port in the console.
http://localhost:8001http://localhost:8001/docs)The frontend is required to use FreeTodo. Start the frontend development server:
cd free-todo-frontend
pnpm install
pnpm dev
The frontend development server will:
- Automatically find an available port starting from 3001 (default port for development)
- Automatically detect the running FreeTodo backend port by checking the /health endpoint
- Set up API proxy to the detected backend port
The actual frontend URL and backend connection status will be displayed in the console. Once both services are running, open your browser and navigate to the displayed frontend URL (typically http://localhost:3001) to enjoy FreeTodo! 🎉
Note: If ports are occupied, both frontend and backend will automatically find the next available ports. The console will show the actual ports being used.
For more details, see: free-todo-frontend/README.md
📖 Full Roadmap: Check out the detailed Project Roadmap to learn about the complete vision and development plan of the FreeU project.
Goal: Collect as much information as possible from users' daily lives and gather it as Todos
☐ Provide convenient windows to access Todo list and conversation interface
🤖 Agent Development
Free Todo's panel switch bar contains some panels that are currently under development. These panels showcase our future feature directions for community reference and understanding.
🤝 Community Participation: We warmly welcome community members to participate! - 🎨 Panel Contributions: Contribute your own panel designs or propose improvement suggestions - 🤖 Agent Algorithm Contributions: Contribute new Agent algorithms, we actively merge them!
💡 Want to contribute? Check out our Contributing Guidelines and pick up any TODO item that interests you!
This repo uses a shared .githooks/ directory. Run the setup script once per clone/worktree:
# macOS/Linux
bash scripts/setup_hooks_here.sh
# Windows (PowerShell)
powershell -ExecutionPolicy Bypass -File scripts/setup_hooks_here.ps1
Note: Do not run
pre-commit installhere. The repo usescore.hooksPathandpre-commit installwill refuse when it is set.
For details, see: .github/PRE_COMMIT_GUIDE.md
├── .github/ # GitHub repository assets
│ ├── assets/ # Static assets (images for README)
│ ├── BACKEND_GUIDELINES.md # Backend development guidelines
│ ├── FRONTEND_GUIDELINES.md # Frontend development guidelines
│ ├── CONTRIBUTING.md # Contributing guidelines
│ └── ... # Other GitHub repository files
├── .githooks/ # Repo-local git hooks (pre-commit, post-checkout)
├── lifetrace/ # Backend modules (FastAPI)
│ ├── server.py # Web API service entry point
│ ├── config/ # Configuration files
│ │ ├── config.yaml # Main configuration (auto-generated)
│ │ ├── default_config.yaml # Default configuration template
│ │ ├── prompt.yaml # AI prompt templates
│ │ └── rapidocr_config.yaml# OCR configuration
│ ├── routers/ # API route handlers
│ │ ├── chat.py # Chat interface endpoints
│ │ ├── todo.py # Todo endpoints
│ │ ├── task.py # Task management endpoints
│ │ └── ... # Other endpoints
│ ├── schemas/ # Pydantic data models
│ ├── services/ # Business logic service layer
│ ├── repositories/ # Data access layer
│ ├── storage/ # Data storage layer
│ ├── llm/ # LLM and AI services
│ ├── jobs/ # Background jobs
│ ├── util/ # Utility functions
│ └── data/ # Runtime data (generated)
│ ├── lifetrace.db # SQLite database
│ ├── vector_db/ # Vector database storage
│ └── logs/ # Application logs
├── free-todo-frontend/ # Frontend application (Next.js) ⭐
│ ├── app/ # Next.js app directory
│ ├── apps/ # Feature modules
│ │ ├── todo-list/ # Todo list module
│ │ ├── todo-detail/ # Todo detail module
│ │ ├── chat/ # AI chat module
│ │ ├── calendar/ # Calendar module
│ │ ├── settings/ # Settings module
│ │ └── ... # Other modules
│ ├── components/ # React components
│ ├── lib/ # Utilities and services
│ ├── electron/ # Electron desktop app
│ ├── package.json # Frontend dependencies
│ └── README.md # Frontend documentation
├── pyproject.toml # Python project configuration
├── uv.lock # uv lock file
├── LICENSE # FreeU Community License
├── README.md # This file (English)
└── README_CN.md # Chinese README
The FreeTodo community is possible thanks to thousands of kind volunteers like you. We welcome all contributions to the community and are excited to welcome you aboard.
Recent Contributions:
We have comprehensive contributing guidelines to help you get started:
git checkout -b feature/amazing-featuregit commit -m 'feat: add some amazing feature'$ claude mcp add FreeTodo \
-- python -m otcore.mcp_server <graph>