A Flask web application that provides an enhanced interface for Google Tasks with additional features like custom metadata, advanced filtering, and task recommendations.
- Google Tasks Integration: Seamlessly syncs with your Google Tasks account
- Multi-User Support: Individual user sessions with OAuth authentication
- Enhanced Task Metadata: Track start dates, due dates, priority (1-3), difficulty (1-3), and time estimates
- Smart Filtering: Filter tasks by various criteria including dates and priority
- Task Recommendations: Get task suggestions based on available time and priorities
- Subtask Support: Create and manage hierarchical task structures
- Repeating Tasks: Support for recurring tasks with custom repeat patterns
- Python 3.10 or newer
- Google Cloud Console project with Tasks API enabled
- OAuth credentials configured
-
Set up Python virtual environment:
python3 -m venv ~/python/venv source ~/python/venv/bin/activate
-
Install dependencies:
python3 -m pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib flask pytest
-
Configure Google OAuth:
- Create a project in Google Cloud Console
- Enable the Google Tasks API
- Create OAuth 2.0 credentials (Web application)
- Set redirect URI to
http://localhost:5001/oauth/callback - Download credentials and save as
credentials.jsonin the project root
-
Set environment variables:
export SECRET_KEY="your-secret-key-here"
-
Activate virtual environment:
source ~/python/venv/bin/activate
-
Start the application:
python3 app.py
-
Access the application: Open your browser to
https://localhost:5001
- Visit the application URL
- You'll be redirected to Google OAuth for authentication
- Grant permissions to access your Google Tasks
- You'll be redirected back to the main interface
Run the test suite:
pytest .Run with coverage:
pytest --cov .The application supports multiple users through session-based authentication. Each user's credentials and tasks are stored separately in their session.
app.py: Main Flask application with routesauth.py: OAuth authentication handlingsession.py: Session management and user data storagetask.py: Task model and form handlingtasklist.py: Google Tasks API integrationfilter.py: Task filtering logicsort.py: Task sorting and recommendations
If you try to access the app via 127.0.0.1 it won't ever find the session oauth state. You have to connect via localhost. No idea why.