MCPSERV.CLUB
Manage My Damn Life

Manage My Damn Life

Self-Hosted

Self-hosted CalDAV task and calendar manager

Active(82)
452stars
0views
Updated 24 days ago
Manage My Damn Life screenshot 1
1 / 4

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-oauth2 strategy, 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 VTODO objects, with support for nested subtasks, recurrence rules (RRULE), and status transitions. The API surface mirrors CalDAV’s REPORT operations, 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 /filters endpoint to create, update, or delete these definitions.
  • Extensibility: A plugin system based on the Node.js require mechanism allows developers to drop JavaScript modules into a /plugins directory. 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.yml can 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 /webhook endpoints 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.json file. 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

  1. Enterprise Task Management – A company can deploy MMDL to replace disparate task tools, centralizing all CalDAV‑based workloads behind a single UI.
  2. Personal Productivity – Hobbyists can self‑host MMDL to keep their calendars and tasks off public services while still leveraging powerful web interfaces.
  3. Developer Toolchain – CI/CD pipelines can expose MMDL as a dashboard for monitoring build tasks and deployment schedules via CalDAV.
  4. 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