Architecture

All docs

A high-level tour for people reading or extending the code. For the full detail, see the README in the repository.

Stack

  • PHP on Symfony, organized into domain modules under src/Module/.
  • CalDAV served via sabre/dav through a dedicated entry point, public/caldav.php.
  • PostgreSQL with Doctrine ORM and Migrations.
  • Tailwind CSS + DaisyUI for the UI, with Symfony UX (Stimulus and Turbo) for interactivity.

Modules

Each feature lives in its own module under src/Module/ with a consistent layout — Controller/, Entity/, Form/, Repository/ — and its templates mirrored under templates/Module/. Modules are kept independent of one another; cross-module coupling is treated as a structural defect.

The CalDAV entry point

CalDAV requests are handled by a separate front controller (public/caldav.php) that boots the kernel per request, rather than going through the standard web firewall. This keeps standards-compliant CalDAV clients working alongside the web application.