Skip to content

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
└── .dockerignore

Creating the Dockerfile

Create a Dockerfile in the root of your repository:

FROM ghcr.io/intri-in/manage-my-damn-life-nextjs:latest
# Set environment variables
ENV NODE_ENV=production
ENV PORT=3000
# Expose the web interface port
EXPOSE 3000

Alternative Dockerfile (Original Version)

If you prefer the original version:

FROM ghcr.io/intri-in/manage-my-damn-life:latest
# Environment configuration
ENV NODE_ENV=production
# Expose the application port
EXPOSE 8080

Creating the .dockerignore File

Create a .dockerignore file:

.git
.github
*.md
README.md
LICENSE
.gitignore
*.log
.DS_Store
.env
node_modules/

Deploying MMDL on Klutch.sh

Once your repository is prepared, follow these steps to deploy:

    Push Your Repository to GitHub

    Initialize your repository and push to GitHub:

    Terminal window
    git init
    git add Dockerfile .dockerignore
    git commit -m "Initial MMDL deployment configuration"
    git remote add origin https://github.com/yourusername/mmdl-deploy.git
    git push -u origin main

    Create 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:

    • Select HTTP as the traffic type
    • Set the internal port to 3000 (or 8080 for the original version)

    Deploy Your Application

    Click Deploy to start the build process. Klutch.sh will:

    • Detect your Dockerfile automatically
    • Build the container image
    • Start the MMDL container
    • Provision an HTTPS certificate

    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:

  1. Click Add CalDAV Account or the settings icon
  2. 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
  3. Click Connect to authenticate
  4. Select which calendars and task lists to display

Common CalDAV Server URLs

ServiceCalDAV URL Format
Nextcloudhttps://your-domain/remote.php/dav
Radicalehttps://your-domain/username/
Baikalhttps://your-domain/dav.php/
iCloudhttps://caldav.icloud.com/
FastMailhttps://caldav.fastmail.com/dav/calendars/user/email/
Googlehttps://apidata.googleusercontent.com/caldav/v2/

Adding Multiple Accounts

You can connect multiple CalDAV accounts:

  1. Open Settings
  2. Click Add Account
  3. Enter the credentials for each CalDAV server
  4. Choose which calendars to display from each account

Using Manage My Damn Life

Creating Tasks

  1. Click the + button or press N for a new task
  2. Enter the task title and description
  3. Set due date, priority, and category
  4. Select which task list/calendar to save to
  5. 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:

ShortcutAction
NNew task
EEdit selected task
SpaceToggle task completion
DeleteDelete selected task
J / KNavigate up/down
TJump 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:

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

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.