Overview
Discover what makes Manage My Damn Life powerful
Manage My Damn Life (MMDL) is a **self‑hosted, web‑based front end** that consumes CalDAV endpoints to provide a unified interface for tasks and calendar events. Built in **React** with **Next.js**, the application exposes a set of RESTful endpoints that translate CalDAV `VTODO` and `VEVENT` resources into JSON objects for the client. Internally it uses **Node.js** to perform CalDAV authentication (basic or OAuth) and to cache responses via a lightweight in‑memory store. The UI is largely **desktop‑first**, leveraging responsive design patterns to adapt to various screen sizes, while leaving mobile‑centric clients (e.g., JTX Boards) as optional complements.
Frontend
Backend
Data Persistence
Containerization
Overview
Manage My Damn Life (MMDL) is a self‑hosted, web‑based front end that consumes CalDAV endpoints to provide a unified interface for tasks and calendar events. Built in React with Next.js, the application exposes a set of RESTful endpoints that translate CalDAV VTODO and VEVENT resources into JSON objects for the client. Internally it uses Node.js to perform CalDAV authentication (basic or OAuth) and to cache responses via a lightweight in‑memory store. The UI is largely desktop‑first, leveraging responsive design patterns to adapt to various screen sizes, while leaving mobile‑centric clients (e.g., JTX Boards) as optional complements.
Architecture
- Frontend: React 18 with Next.js 13, using the App Router and server‑side rendering to reduce initial load times. Styling is handled with Tailwind CSS, enabling rapid component customization.
- Backend: A Node.js/Express middleware layer that proxies CalDAV requests, performs authentication, and normalizes RFC 5545 properties into JSON. The middleware supports OAuth 2.0 via the
passport-oauth2strategy, though basic authentication remains the default. - Data Persistence: MMDL does not maintain its own database; it relies entirely on the CalDAV server for persistence. A small SQLite file is used only for user session tokens and plugin metadata.
- Containerization: A Dockerfile exposes a multi‑stage build, allowing the application to run in any container runtime (Docker, Podman). The image is lightweight (~120 MB) and can be deployed behind a reverse proxy such as Nginx or Traefik.
Core Capabilities
- Task Management: CRUD operations on
VTODOobjects, with support for nested subtasks, recurrence rules (RRULE), and status transitions. The API surface mirrors CalDAV’sREPORToperations, enabling server‑side filtering. - Calendar Events: Full CRUD for
VEVENT, including recurrence handling and attendee lists. The UI renders events in a Gantt‑style timeline, leveraging D3.js for drag‑and‑drop editing. - Multi‑Account & Multi‑User: The backend maintains a per‑user CalDAV credential store, allowing simultaneous access to multiple servers (Nextcloud, Baikal, ownCloud). User sessions are isolated via JWTs stored in HTTP‑Only cookies.
- Filtering & Views: Users can define custom filters (e.g., “Due today”, “High priority”) that are persisted in the SQLite store. The API exposes a
/filtersendpoint to create, update, or delete these definitions. - Extensibility: A plugin system based on the Node.js
requiremechanism allows developers to drop JavaScript modules into a/pluginsdirectory. Plugins can register new API routes, modify the rendering pipeline, or inject WebSocket listeners for real‑time updates.
Deployment & Infrastructure
MMDL is designed for self‑hosting in a variety of environments:
- Docker Compose: A single
docker-compose.ymlcan spin up the app, a reverse proxy, and an optional SQLite database. - Kubernetes: The image can be deployed as a Deployment with ConfigMaps for environment variables (
CALDAV_URL,OAUTH_CLIENT_ID). Horizontal Pod Autoscaling is supported thanks to the stateless nature of the Node.js process. - Scalability: Because all state lives in the CalDAV server, scaling MMDL horizontally is straightforward—each pod can serve a subset of users without shared session stores. Redis can be introduced for caching if needed.
Integration & Extensibility
- Webhooks: The application exposes
/webhookendpoints that can be configured in the CalDAV server to push updates. Plugins can listen on these hooks for custom logic (e.g., sync with external task trackers). - OAuth: The OAuth module supports standard flows (Authorization Code, PKCE). Developers can extend it to integrate with SSO providers such as Azure AD or Google Workspace.
- API Documentation: Swagger UI is auto‑generated from OpenAPI annotations in the Node.js codebase, making it easy for third‑party developers to consume MMDL’s endpoints.
Developer Experience
- Configuration: All runtime options are exposed via environment variables or a
config.jsonfile. The project ships with comprehensive docs on GitHub and readthedocs.io, including migration guides for upgrading from older versions. - Community & Support: The repository maintains an active issue tracker and a Discord channel for real‑time support. Contributions are encouraged, especially around plugin development and UI theme customizations.
- Licensing: The application is released under the MIT license, allowing unrestricted use in commercial or private projects.
Use Cases
- Enterprise Task Management – A company can deploy MMDL to replace disparate task tools, centralizing all CalDAV‑based workloads behind a single UI.
- Personal Productivity – Hobbyists can self‑host MMDL to keep their calendars and tasks off public services while still leveraging powerful web interfaces.
- Developer Toolchain – CI/CD pipelines can expose MMDL as a dashboard for monitoring build tasks and deployment schedules via CalDAV.
- Hybrid Mobile/Desktop – Developers can pair MMDL with mobile clients like JTX Boards, offering a rich desktop experience while keeping the mobile footprint minimal.
Advantages
Open SourceReady to get started?
Join the community and start self-hosting Manage My Damn Life today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Kong Gateway
Fast, flexible API gateway for hybrid and multi‑cloud environments
Otter Wiki
Minimalist Markdown Wiki Powered by Git
ntfy
Send push notifications via HTTP scripts
ZOT OCI Registry
Self‑hosted, vendor‑neutral OCI image registry
Hi.Events
Sell tickets, manage events, and grow audiences all in one
URL to PNG
Generate web page screenshots via HTTP API
