PHPackages                             manuxi/sulu-appointment-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. manuxi/sulu-appointment-bundle

ActiveSulu-bundle[Admin Panels](/categories/admin)

manuxi/sulu-appointment-bundle
==============================

Sulu Appointment Bundle

v1.0.2(4mo ago)00MITPHPPHP ^8.2CI passing

Since Feb 9Pushed 4mo agoCompare

[ Source](https://github.com/manuxi/SuluAppointmentBundle)[ Packagist](https://packagist.org/packages/manuxi/sulu-appointment-bundle)[ RSS](/packages/manuxi-sulu-appointment-bundle/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (1)Dependencies (3)Versions (28)Used By (0)

SuluAppointmentBundle
=====================

[](#suluappointmentbundle)

[![License: MIT](https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667)](https://github.com/manuxi/SuluAppointmentBundle/blob/main/LICENSE)[![Supports Sulu 3.0 or later](https://camo.githubusercontent.com/1acd578889a1fbe054144d04f3f326418a78683e35a850c9d25cd5377502b6d4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53756c752d2533453d332e302d3030383863633f636f6c6f723d303062326466)](https://camo.githubusercontent.com/1acd578889a1fbe054144d04f3f326418a78683e35a850c9d25cd5377502b6d4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53756c752d2533453d332e302d3030383863633f636f6c6f723d303062326466)

A Sulu CMS bundle for appointment management with an integrated **calendar view** (FullCalendar) instead of the traditional list view.

**English** | [🇩🇪 Deutsch](README.de.md)

[![Overview](docs/img/overview.de.png)](docs/img/overview.de.png)

Features
--------

[](#features)

- 📅 **Calendar Overview** with month, week and day views (FullCalendar TimeGrid &amp; DayGrid)
- 🕒 **Split Business Hours**: Configurable morning/afternoon slots per weekday
- 📋 **Day View** with appointment list on day click
- 🔒 **Collision Detection** for resources (doctor/room/device)
- 🌍 **Multilingual** (Sulu DimensionContent)
- ✅ **Appointment Status**: scheduled, confirmed, arrived, cancelled, completed
- 🎨 **Configurable Status Colors** per status
- 📝 **Status Audit Log**: Every status change is tracked with timestamp and user
- 🏥 **Flexible Resources**: Doctor, room, device with JSON metadata
- 💡 **View Persistence**: Calendar remembers last view and date (localStorage)
- 🖱️ **Rich Tooltips**: Detailed appointment info on hover
- 🗂️ **Sub-Appointments**: Break appointments into multiple time slots with individual resources, statuses, and drag-and-drop reordering via a side drawer UI
- ⏱️ **Appointment Search (Availability Wizard)**: Smart time suggestions respecting business hours, preventing collisions, and automatically detecting the next available slot
- ✨ **Bulk Actions**: Update multiple appointments in the list view simultaneously (e.g., mark as "Arrived")

---

Installation
------------

[](#installation)

**Requirement:** Sulu CMS 3.0+

### 1. Add Bundle as Local Path

[](#1-add-bundle-as-local-path)

In your project `composer.json`:

```
{
    "repositories": [
        {
            "type": "path",
            "url": "../SuluAppointmentBundle"
        }
    ],
    "require": {
        "manuxi/sulu-appointment-bundle": "*"
    }
}
```

Then:

```
composer update manuxi/sulu-appointment-bundle
```

### 2. Register Bundle

[](#2-register-bundle)

In `config/bundles.php`:

```
return [
    // ...
    Manuxi\SuluAppointmentBundle\SuluAppointmentBundle::class => ['all' => true],
];
```

### 3. Import Routes

[](#3-import-routes)

Create `config/routes/sulu_appointment.yaml`:

```
sulu_appointment:
    resource: "@SuluAppointmentBundle/Resources/config/routes.yaml"
```

### 4. Create Database Schema

[](#4-create-database-schema)

```
php bin/console doctrine:schema:update --force
```

Or with migrations:

```
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate
```

### 5. Admin Assets

[](#5-admin-assets)

Add the bundle to `assets/admin/package.json`:

```
{
    "dependencies": {
        "sulu-appointment-bundle": "../../vendor/manuxi/sulu-appointment-bundle/src/Resources"
    }
}
```

**Important**: Add the import to `assets/admin/app.js`:

```
import 'sulu-appointment-bundle';
```

Install FullCalendar dependencies and build:

```
cd assets/admin
npm install @fullcalendar/react @fullcalendar/core @fullcalendar/daygrid @fullcalendar/interaction @fullcalendar/timegrid @fullcalendar/multimonth
npm install
npm run build
```

### 6. Clear Cache

[](#6-clear-cache)

```
php bin/console cache:clear
```

---

Security Context
----------------

[](#security-context)

For permissions in the admin area:

```
sulu.appointments.appointments

```

Assign permissions under **Settings → Roles**.

---

Database Tables
---------------

[](#database-tables)

The bundle creates the following tables:

TableDescription`app_appointments`Main entity (UUID)`app_appointment_dimension_contents`Multilingual content (title, start/end, status)`app_appointment_resources`Resources (doctor, room, device with color + locale-independent fields)`app_appointment_resource_dimension_contents`Multilingual resource content (title, description, image)`app_appointment_settings`Calendar and display settings`app_appointment_status_log`Status change audit trail`app_sub_appointments`Sub-appointments with resource assignment and status---

Usage
-----

[](#usage)

After installation, a new **"Appointments"** entry (calendar icon) appears in the admin menu.

- **Month View**: Overview of all appointments with configurable display (dots, blocks, borders)
- **Week View**: Detailed view with time slots and business hours
- **Day Click**: Opens day view with list of all appointments
- **Create Appointment**: Via "+" button in the toolbar

### Appointment Status Flow

[](#appointment-status-flow)

```
scheduled → confirmed → arrived → completed
                ↘ cancelled

```

Each status change is automatically logged with timestamp and user for full traceability.

---

Configuration
-------------

[](#configuration)

### Calendar Settings

[](#calendar-settings)

Access via **Admin → Appointments → Settings**

See [Settings Documentation](docs/Settings.en.md) for detailed configuration options.

### Resources

[](#resources)

Resources represent entities that appointments are assigned to (doctors, rooms, devices). Each resource uses Sulu DimensionContent for multilingual title, description, and image, plus locale-independent fields like type, color, and capacity.

See [Resources Documentation](docs/Resources.en.md) for details.

### Sub-Appointments

[](#sub-appointments)

Appointments can be broken down into individual time slots (sub-appointments), each assigned to a specific resource with its own status and time range. A side drawer provides a visual management interface with drag-and-drop reordering and progress tracking.

See [Sub-Appointments Documentation](docs/Sub-Appointments.en.md) for details.

---

Troubleshooting
---------------

[](#troubleshooting)

### Calendar Not Showing

[](#calendar-not-showing)

1. Check that FullCalendar dependencies are installed
2. Check browser console for JS errors
3. Verify the import exists in `assets/admin/app.js`
4. Rebuild: `npm run build` in `assets/admin` folder

### API Error 404

[](#api-error-404)

Check that routes are loaded correctly:

```
php bin/console debug:router | grep appointment
```

### No Appointments Visible

[](#no-appointments-visible)

Appointments must be in LIVE stage. The calendar only shows published appointments.

---

Documentation
-------------

[](#documentation)

- [Settings](docs/Settings.en.md)
- [Resources](docs/Resources.en.md)
- [Sub-Appointments](docs/Sub-Appointments.en.md)
- [Appointment Search](docs/Appointment-Search.en.md)
- [Appointment Types](docs/Appointment-Types.en.md)
- [Status Recalculation](docs/Status-Recalculation.en.md)

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance75

Regular maintenance activity

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

27

Last Release

136d ago

Major Versions

v0.9.8 → v1.0.02026-02-27

### Community

Maintainers

![](https://www.gravatar.com/avatar/8ce067feaa3f9ece08d78385c401aab7d72e9e8ee64d77d584f884b6725ad9de?d=identicon)[manuxi](/maintainers/manuxi)

---

Top Contributors

[![manuxi](https://avatars.githubusercontent.com/u/11303615?v=4)](https://github.com/manuxi "manuxi (76 commits)")

---

Tags

admin-uicalendarsulu-30sulu-bundlesulu-cms

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/manuxi-sulu-appointment-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/manuxi-sulu-appointment-bundle/health.svg)](https://phpackages.com/packages/manuxi-sulu-appointment-bundle)
```

###  Alternatives

[sulu/article-bundle

Bundle for managing localized content-rich entities like blog-posts in the Sulu content management system

66422.2k3](/packages/sulu-article-bundle)[sulu/skeleton

Project template for starting your new project based on the Sulu content management system

29735.5k](/packages/sulu-skeleton)[sulu/headless-bundle

Bundle that provides controllers and services for using Sulu as headless content management system

56146.1k2](/packages/sulu-headless-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
