djamy/google-calendar-bundle
Symfony/DependencyInjection or Laravel/PackageTools).Laravel/PackageTools for service providers/config).config/services.php or environment variables.storage/ or encrypted config)..env or encrypted storage).google/apiclient is more maintained but lacks Laravel-specific conveniences. Would this bundle’s abstractions justify the risk?.env, AWS Secrets Manager)?Event) map to Google Calendar events? Custom serializers or manual field-by-field mapping?config/google-calendar.php (using publishes in ServiceProvider).parameters.yml with Laravel’s .env (e.g., GOOGLE_CALENDAR_P12_PATH).GoogleCalendar::createEvent()) for cleaner syntax.google/apiclient (dependency of the bundle).symfony/dom-crawler (dependency; may be redundant in Laravel).illuminate/support.composer require djamy/google-calendar-bundle:dev-master.php artisan vendor:publish --tag=google-calendar-config..env:
GOOGLE_CALENDAR_P12_PATH=storage/app/google/credentials.p12
GOOGLE_CALENDAR_CLIENT_EMAIL=your-service-account@project.iam.gserviceaccount.com
$this->app->register(Djamy\GoogleCalendarBundle\DjamyGoogleCalendarBundle::class);
GoogleCalendar::extend(function ($app) {
return new GoogleCalendarManager($app);
});
GoogleCalendarManager into controllers/services or use the facade:
use App\Facades\GoogleCalendar;
$event = GoogleCalendar::createEvent([
'summary' => 'Team Meeting',
'start' => ['dateTime' => '2023-12-25T09:00:00'],
'end' => ['dateTime' => '2023-12-25T10:00:00'],
]);
spatie/laravel-activitylog or custom middleware).model events to trigger Google Calendar updates).google/apiclient or Symfony components.google/apiclient.tymon/jwt-auth for OAuth2 debugging if extended.CalendarService factory with dynamic credentials.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Google API downtime | Events not synced | Queue jobs with exponential backoff. |
| Invalid P12 file | All operations fail | Validate file path/config on app boot. |
| Quota exceeded | Rate-limited requests | Implement retry logic with jitter. |
| Service account revoked | No access to calendars | Monitor IAM changes; rotate keys proactively. |
| Laravel cache invalidation | Stale event data | Use cache tags or event observers to invalidate. |
createEvent, syncWithModel).How can I help you explore Laravel packages today?