A Flask-based web application for managing your Habitica tasks, habits, and dailies with an intuitive interface.
- 🔐 Secure API Integration - Connect to your Habitica account with API credentials
- 📝 Todo Management - View and clone your todo tasks with subtask support
- 🔄 Habits Tracking - Monitor your habits and streaks
- 📅 Daily Tasks - Keep track of your daily routines
- 📱 Responsive Design - Works perfectly on desktop, tablet, and mobile
- ⚡ Real-time Updates - Instant refresh after task operations
- 🎨 Modern UI - Clean, intuitive interface with visual feedback
- Desktop Layout: Three-column responsive grid showing todos, habits, and dailies side by side
- Task Cloning: One-click cloning of todos with all subtasks and properties
- Visual Notifications: Success/error feedback for all operations
- Python 3.12 or higher
- Habitica account with API credentials
-
Clone the repository
git clone https://github.com/yourusername/habitica-manager.git cd habitica-manager -
Create a virtual environment
python -m venv venv venv\Scripts\activate # Windows # or source venv/bin/activate # Linux/Mac
-
Install dependencies
pip install -r requirements.txt
-
Configure environment variables Create a
.envfile in the project root:HABITICA_USER_ID=your-user-id-here HABITICA_API_TOKEN=your-api-token-here HABITICA_API_URL=https://habitica.com/api/v3
Get your credentials from: https://habitica.com/user/settings/api
-
Run the application
Development:
start_dev.bat # Windows # or python run.py # Cross-platform
Production:
start_prod.bat # Windows # or gunicorn -c gunicorn.conf.py run:app
-
Open your browser Navigate to http://localhost:5000
- Test Connection - Verify your Habitica API credentials
- Load Data - Fetch your current tasks, habits, and dailies
- Clone Todos - Create copies of existing todos with all properties preserved
- Monitor Progress - View subtasks, streaks, and completion status
GET /api- API information and statusGET /api/test-connection- Test Habitica connectionGET /api/todos- Get all todo tasksGET /api/habits- Get all habitsGET /api/dailies- Get all daily tasksPOST /api/clone_todo- Clone a todo task
habitica-manager/
├── habitica_manager/ # Main application package
│ ├── __init__.py # Package initialization
│ ├── app.py # Flask application factory
│ ├── routes.py # API routes and endpoints
│ ├── habitica_service.py # Habitica API integration
│ ├── static/ # Static assets
│ │ ├── css/style.css # Application styles
│ │ └── js/app.js # Frontend JavaScript
│ └── templates/ # HTML templates
│ └── index.html # Main interface
├── .env # Environment configuration
├── requirements.txt # Python dependencies
├── gunicorn.conf.py # Production server config
├── run.py # Development server entry point
├── start_dev.bat # Windows development script
└── start_prod.bat # Windows production script
- Backend: Flask 3.0.0, Gunicorn 21.2.0
- Frontend: Vanilla JavaScript, CSS Grid, Responsive Design
- API: Habitica REST API v3
- Environment: python-dotenv, requests
- CORS: flask-cors for cross-origin support
# Add test commands when tests are implemented
python -m pytestThe project follows Python PEP 8 style guidelines.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
⚠️ Never commit your.envfile with real API credentials- 🔒 API credentials are validated on startup
- 🛡️ All API requests include proper authentication headers
This project is licensed under the MIT License - see the LICENSE file for details.
- Habitica for providing the excellent API
- Flask community for the robust web framework
- Contributors and users of this project
If you encounter any issues:
- Check that your API credentials are correct
- Ensure you have an active internet connection
- Verify that Habitica's API is accessible
- Check the console logs for detailed error messages
For bugs and feature requests, please open an issue on GitHub.
Habitica Manager - Making task management easier, one habit at a time! 🚀