czemu/nova-calendar-tool
A Laravel Nova tool that adds an interactive calendar to your admin panel, letting you display Eloquent models as events across month, week, and day views, with configurable event sources and quick links to Nova resources.
composer require czemu/nova-calendar-tool
php artisan vendor:publish --provider="Czemu\NovaCalendarTool\NovaCalendarToolServiceProvider"
php artisan migrate
Then register the tool in app/Providers/NovaServiceProvider.php:
public function tools()
{
return [
new \Czemu\NovaCalendarTool\NovaCalendarTool,
];
}
Where to look first: the published config/nova-calendar-tool.php (if present) and the migration that ships with the package — that schema tells you which columns the calendar actually reads (title/start/end or similar). Then skim the tool's src/ in vendor/czemu/nova-calendar-tool before trusting the README; the package is small and low-traffic, so the source is the real documentation.
First use case: point the tool at a single model, land an event on today's date, and confirm it renders before wiring up create/edit. A calendar that renders existing rows is the 10-minute smoke test that validates column names, timezone handling, and asset registration all at once.
->where('team_id', ...) or a model global scope. Without this, every authenticated Nova user sees every event — a common and embarrassing default.EventPolicy gates it for free. Verify the tool actually respects the policy rather than mutating directly.color column or a config map keyed off a type field. Prefer a column so per-event colors survive edits; use the config map only for fixed palettes.index/detail URL helpers on click handlers so the calendar acts as a dashboard that hands off to the full CRUD UI rather than reimplementing it.vendor/czemu/nova-calendar-tool/composer.json for the Nova constraint. On Nova 4/5 expect Vue 2→3 and asset-pipeline breakage; the practical path is usually to fork into nova-components/ and patch the tool, not to chase the upstream.php artisan nova:publish and php artisan optimize:clear. Nova caches tool assets and routes aggressively; most "calendar is blank" reports are stale caches, not bugs./nova-vendor/...) in the network tab before editing any JS.calendar_events-style table already exists or name-collides. Review it, rename it, or skip publishing if you're binding your own model.start/end are usually required and non-nullable, and all-day vs timed events may be distinguished by a boolean or by a time-less start. Check the migration; a nullable end often causes the last day to drop off a multi-day event.composer.json. With a single 2021 release, a future composer update could pull an incompatible patch or a yanked tag; an exact constraint keeps your calendar stable while you decide whether to maintain a fork.How can I help you explore Laravel packages today?