Deploying Manage My Damn Life
Introduction
Manage My Damn Life (MMDL) is a self-hosted CalDAV-based task and calendar management application that helps you organize your life while maintaining complete control over your data. It provides a beautiful, modern interface for managing tasks and events that syncs with any CalDAV server, making it compatible with existing calendar infrastructure.
Built with Node.js and Vue.js, MMDL offers a responsive web interface that works seamlessly across devices. Unlike proprietary task management apps, MMDL uses open standards (CalDAV), meaning your data is never locked into a specific platform and can sync with any CalDAV-compatible application.
Key highlights of Manage My Damn Life:
- CalDAV Integration: Works with any CalDAV server (Nextcloud, Radicale, Baikal, iCloud, etc.)
- Task Management: Create, organize, and track tasks with due dates and priorities
- Calendar Events: View and manage calendar events alongside your tasks
- Beautiful Interface: Modern, responsive design that works on desktop and mobile
- Keyboard Shortcuts: Efficient navigation with comprehensive keyboard support
- Multiple Calendars: Connect to and manage multiple CalDAV calendars
- Recurring Tasks: Support for repeating tasks and events
- Search and Filter: Quickly find tasks and events across all calendars
- Offline Support: Continue working even when temporarily disconnected
- Open Standards: Uses CalDAV, so your data works with any compatible app
This guide walks through deploying Manage My Damn Life on Klutch.sh using Docker, connecting it to your CalDAV server, and organizing your tasks and calendars.
Why Deploy Manage My Damn Life on Klutch.sh
Deploying MMDL on Klutch.sh provides several advantages:
Access Anywhere: Manage your tasks and calendar from any device with a web browser, whether at home or on the go.
HTTPS by Default: Automatic SSL certificates ensure secure communication between your browser and the application, protecting your personal data.
Always Available: Your task manager runs 24/7 without keeping your personal computer on.
Simple Deployment: Klutch.sh handles the infrastructure complexity, letting you focus on getting organized.
Custom Domains: Use a memorable domain for your personal productivity dashboard.
Persistent Storage: Your configuration persists across container restarts.
Prerequisites
Before deploying Manage My Damn Life on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your MMDL configuration
- A CalDAV server to connect to (such as Nextcloud, Radicale, Baikal, or a hosted service)
- Basic familiarity with Docker and CalDAV concepts
Understanding MMDL Architecture
Manage My Damn Life is designed as a lightweight client application:
Node.js Backend: The server component handles proxying requests to CalDAV servers and serving the web application.
Vue.js Frontend: The user interface is built with Vue.js, providing a smooth, reactive experience.
CalDAV Protocol: MMDL is a CalDAV client, not a server. It connects to existing CalDAV servers where your data is actually stored.
Browser-Based Storage: Some user preferences are stored locally in the browser.
Stateless Design: The MMDL container itself is largely stateless; your actual task and calendar data lives on your CalDAV server.
Preparing Your Repository
To deploy MMDL on Klutch.sh, create a GitHub repository containing your Dockerfile.
Repository Structure
mmdl-deploy/├── Dockerfile└── .dockerignoreCreating the Dockerfile
Create a Dockerfile in the root of your repository:
FROM ghcr.io/intri-in/manage-my-damn-life-nextjs:latest
# Set environment variablesENV NODE_ENV=productionENV PORT=3000
# Expose the web interface portEXPOSE 3000Alternative Dockerfile (Original Version)
If you prefer the original version:
FROM ghcr.io/intri-in/manage-my-damn-life:latest
# Environment configurationENV NODE_ENV=production
# Expose the application portEXPOSE 8080Creating the .dockerignore File
Create a .dockerignore file:
.git.github*.mdREADME.mdLICENSE.gitignore*.log.DS_Store.envnode_modules/Deploying MMDL on Klutch.sh
Once your repository is prepared, follow these steps to deploy:
- Select HTTP as the traffic type
- Set the internal port to 3000 (or 8080 for the original version)
- Detect your Dockerfile automatically
- Build the container image
- Start the MMDL container
- Provision an HTTPS certificate
Push Your Repository to GitHub
Initialize your repository and push to GitHub:
git initgit add Dockerfile .dockerignoregit commit -m "Initial MMDL deployment configuration"git remote add origin https://github.com/yourusername/mmdl-deploy.gitgit push -u origin mainCreate a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project. Give it a descriptive name like “mmdl” or “task-manager”.
Create a New App
Within your project, create a new app. Connect your GitHub account if you haven’t already, then select the repository containing your MMDL Dockerfile.
Configure HTTP Traffic
MMDL serves its web interface over HTTP. In the deployment settings:
Deploy Your Application
Click Deploy to start the build process. Klutch.sh will:
Access MMDL
Once deployment completes, access your MMDL instance at https://your-app-name.klutch.sh.
Initial Setup and Configuration
Connecting to Your CalDAV Server
When you first access MMDL:
- Click Add CalDAV Account or the settings icon
- Enter your CalDAV server details:
- Server URL: Your CalDAV server address (e.g.,
https://nextcloud.example.com/remote.php/dav) - Username: Your CalDAV account username
- Password: Your CalDAV account password
- Server URL: Your CalDAV server address (e.g.,
- Click Connect to authenticate
- Select which calendars and task lists to display
Common CalDAV Server URLs
| Service | CalDAV URL Format |
|---|---|
| Nextcloud | https://your-domain/remote.php/dav |
| Radicale | https://your-domain/username/ |
| Baikal | https://your-domain/dav.php/ |
| iCloud | https://caldav.icloud.com/ |
| FastMail | https://caldav.fastmail.com/dav/calendars/user/email/ |
https://apidata.googleusercontent.com/caldav/v2/ |
Adding Multiple Accounts
You can connect multiple CalDAV accounts:
- Open Settings
- Click Add Account
- Enter the credentials for each CalDAV server
- Choose which calendars to display from each account
Using Manage My Damn Life
Creating Tasks
- Click the + button or press N for a new task
- Enter the task title and description
- Set due date, priority, and category
- Select which task list/calendar to save to
- Click Save or press Enter
Managing Tasks
- Complete: Click the checkbox or press Space on a selected task
- Edit: Click the task or press Enter to open details
- Delete: Use the delete button or press Delete key
- Move: Drag tasks between lists or use the move menu
Calendar View
Switch between views:
- Day View: Detailed single-day schedule
- Week View: Weekly overview of tasks and events
- Month View: Monthly calendar with task indicators
- List View: Traditional task list format
Keyboard Shortcuts
MMDL supports extensive keyboard navigation:
| Shortcut | Action |
|---|---|
N | New task |
E | Edit selected task |
Space | Toggle task completion |
Delete | Delete selected task |
J / K | Navigate up/down |
T | Jump to today |
/ | Focus search |
CalDAV Server Options
If you don’t have a CalDAV server yet, consider these self-hosted options:
Nextcloud
A full-featured cloud platform with CalDAV support:
- Complete file, calendar, and contacts solution
- Large ecosystem of apps
- Deploy Nextcloud on Klutch.sh
Radicale
A lightweight CalDAV and CardDAV server:
- Minimal resource requirements
- Simple file-based storage
- Easy to set up and maintain
Baikal
A lightweight CalDAV/CardDAV server:
- SQLite or MySQL backend
- Web-based administration
- Good balance of features and simplicity
Production Best Practices
Security Recommendations
- Use Strong Passwords: Ensure your CalDAV account has a strong password
- HTTPS Everywhere: Make sure your CalDAV server also uses HTTPS
- Separate Accounts: Consider separate CalDAV accounts for different purposes
- Regular Password Rotation: Update your CalDAV credentials periodically
Data Management
- Backup Your CalDAV Server: MMDL is a client; ensure your CalDAV server is backed up
- Export Regularly: Export calendars in ICS format for portable backups
- Multiple Devices: Sync with other CalDAV clients for redundancy
Performance Tips
- Limit Calendars: Only connect calendars you actively use
- Archive Old Tasks: Move completed tasks to archive calendars
- Browser Cleanup: Clear MMDL’s local storage if experiencing issues
Troubleshooting Common Issues
Cannot Connect to CalDAV Server
Symptoms: Connection errors when adding CalDAV account.
Solutions:
- Verify the CalDAV URL is correct (check documentation for your server)
- Ensure your credentials are correct
- Check that your CalDAV server is accessible from the internet
- Verify CORS is properly configured on your CalDAV server
- Test the URL in a browser first
Tasks Not Syncing
Symptoms: Changes don’t appear in other CalDAV clients.
Solutions:
- Refresh the MMDL interface
- Check that you have write permissions on the calendar
- Verify your CalDAV server is accepting connections
- Look for sync errors in the browser console
Slow Performance
Symptoms: Interface is sluggish or unresponsive.
Solutions:
- Reduce the number of connected calendars
- Archive old completed tasks
- Clear browser cache and local storage
- Check network connection to CalDAV server
Authentication Errors
Symptoms: Repeated login prompts or “unauthorized” errors.
Solutions:
- Re-enter your credentials
- Check if your CalDAV password has changed
- Verify app-specific passwords if required (iCloud, Google)
- Ensure your account isn’t locked
Integrating with Other Apps
Mobile Apps
Your CalDAV data syncs with any CalDAV-compatible app:
iOS:
- Built-in Calendar and Reminders apps
- Fantastical
- Calendars 5
Android:
- DAVx5 for sync
- Tasks.org
- OpenTasks
Desktop Apps
- Thunderbird with Lightning
- GNOME Calendar
- macOS Calendar
- Windows Calendar (with third-party CalDAV sync)
Additional Resources
- Manage My Damn Life GitHub Repository
- CalDAV Protocol Information
- Radicale CalDAV Server
- Baikal CalDAV Server
- Klutch.sh Deployments
Conclusion
Deploying Manage My Damn Life on Klutch.sh gives you a beautiful, modern interface for managing your tasks and calendar while maintaining complete control over your data through CalDAV. The combination of MMDL’s intuitive interface and Klutch.sh’s reliable hosting means you can access your task manager from anywhere.
Because MMDL uses the open CalDAV standard, your data syncs seamlessly with any CalDAV-compatible application on any platform. Whether you’re using MMDL on your desktop, your phone’s native calendar app, or another CalDAV client, your tasks and events stay synchronized across all your devices.
Take control of your productivity with a self-hosted solution that respects your privacy and works with the tools you already use.