überarbeitet: 300 neue tasks von gemini erzeugen lassen. dazu event types "Konfirmation" und "Schulabschluss" ergänzt. alles in Kollektionen gepackt und die seeder angepasst.

Des weiteren: neue Blogartikel und howto-Artikel von ChatGPT.
Das QR-Code-Canvas funktioniert nun noch besser. die Layouts sehen besser aus.
Der PaketSeeder enthält nun die Paddle Sandbox ProductIDs
This commit is contained in:
Codex Agent
2025-11-02 21:52:38 +01:00
parent 792b5dfe8b
commit 073b51e2d5
33 changed files with 3013 additions and 961 deletions

View File

@@ -20,23 +20,20 @@ class EmotionsSeeder extends Seeder
['name'=>['de'=>'Stolz','en'=>'Pride'], 'icon'=>'🏆', 'color'=>'#34d399', 'description'=>['de'=>'Triumphale Augenblicke','en'=>'Triumphal moments'], 'sort_order'=>6],
['name'=>['de'=>'Teamgeist','en'=>'Team Spirit'], 'icon'=>'🤝', 'color'=>'#38bdf8', 'description'=>['de'=>'Zusammenhalt','en'=>'Team bonding'], 'sort_order'=>7],
['name'=>['de'=>'Besinnlichkeit','en'=>'Contemplation'], 'icon'=>'🕯️', 'color'=>'#22c55e', 'description'=>['de'=>'Feierliche Stimmung','en'=>'Festive calm'], 'sort_order'=>8],
['name'=>['de'=>'Romantik','en'=>'Romance'], 'icon'=>'🌹', 'color'=>'#e11d48', 'description'=>['de'=>'Romantische Stimmung','en'=>'Romantic mood'], 'sort_order'=>9],
['name'=>['de'=>'Ekstase','en'=>'Ecstasy'], 'icon'=>'🎉', 'color'=>'#f59e0b', 'description'=>['de'=>'Pure Lebensfreude','en'=>'Pure zest for life'], 'sort_order'=>10],
];
$typeIds = EventType::pluck('id','slug');
$typeIds = EventType::pluck('id')->toArray();
foreach ($emotionData as $e) {
$emotion = Emotion::updateOrCreate(['name->de' => $e['name']['de']], $e);
// Link to types
$links = ['wedding','birthday','corporate','christmas'];
if ($e['name']['de'] === 'Teamgeist') { $links = ['corporate']; }
if ($e['name']['de'] === 'Besinnlichkeit') { $links = ['christmas']; }
foreach ($links as $slug) {
if (isset($typeIds[$slug])) {
DB::table('emotion_event_type')->updateOrInsert([
'emotion_id' => $emotion->id,
'event_type_id' => $typeIds[$slug],
], []);
}
// Link to all event types
foreach ($typeIds as $typeId) {
DB::table('emotion_event_type')->updateOrInsert([
'emotion_id' => $emotion->id,
'event_type_id' => $typeId,
], []);
}
}
}

View File

@@ -11,9 +11,11 @@ class EventTypesSeeder extends Seeder
{
$types = [
['name' => ['de'=>'Hochzeit','en'=>'Wedding'], 'slug'=>'wedding', 'icon'=>'💍'],
['name' => ['de'=>'Weihnachten','en'=>'Christmas'], 'slug'=>'christmas', 'icon'=>'🎄'],
['name' => ['de'=>'Geburtstag','en'=>'Birthday'], 'slug'=>'birthday', 'icon'=>'🎂'],
['name' => ['de'=>'Firma','en'=>'Corporate'], 'slug'=>'corporate', 'icon'=>'🏢'],
['name' => ['de'=>'Weihnachten','en'=>'Christmas'], 'slug'=>'christmas', 'icon'=>'🎄'],
['name' => ['de'=>'Konfirmation / Jugendweihe','en'=>'Confirmation'], 'slug'=>'confirmation', 'icon'=>'🕊️'],
['name' => ['de'=>'Schulabschluss','en'=>'Graduation'], 'slug'=>'graduation', 'icon'=>'🎓'],
['name' => ['de'=>'Firmenfeier','en'=>'Corporate'], 'slug'=>'corporate', 'icon'=>'🏢'],
];
foreach ($types as $t) {
EventType::updateOrCreate(['slug'=>$t['slug']], $t);

View File

@@ -31,6 +31,8 @@ class PackageSeeder extends Seeder
'watermark_allowed' => true,
'branding_allowed' => false,
'features' => ['basic_uploads', 'limited_sharing', 'custom_tasks'],
'paddle_product_id' => 'pro_01k8jcxx2g1vj9snqbga4283ej',
'paddle_price_id' => 'pri_01k8jcxx8qktxvqzzv0nkjjj27',
'description' => <<<TEXT
Ideal für Geburtstage, Gartenpartys oder Polterabende! {{max_guests}} Gäste teilen ihre besten Schnappschüsse, lösen {{max_tasks}} Fotoaufgaben und haben {{gallery_duration}} Zugriff auf die Online-Galerie. {{max_photos}} Bilder sind inklusive genug Platz für jede Menge Lieblingsmomente.
TEXT,
@@ -62,6 +64,8 @@ TEXT,
'watermark_allowed' => false,
'branding_allowed' => true,
'features' => ['basic_uploads', 'unlimited_sharing', 'no_watermark', 'custom_branding', 'custom_tasks'],
'paddle_product_id' => 'pro_01k8jcxwjv4ne8vf9pvd9bye3j',
'paddle_price_id' => 'pri_01k8jcxws51pze5xc3vj2ea0yc',
'description' => <<<TEXT
Das Rundum-Sorglos-Paket für Hochzeiten, Firmenfeiern oder Jubiläen. {{max_photos}} Bilder, {{max_guests}} Gäste und {{max_tasks}} Fotoaufgaben dazu eine Galerie, die {{gallery_duration}} online bleibt. Eigenes Logo oder Wasserzeichen inklusive.
TEXT,
@@ -93,6 +97,8 @@ TEXT,
'watermark_allowed' => false,
'branding_allowed' => true,
'features' => ['basic_uploads', 'unlimited_sharing', 'no_watermark', 'custom_branding', 'advanced_analytics', 'live_slideshow', 'priority_support'],
'paddle_product_id' => 'pro_01k8jcxvwp38gay6jj2akjg76s',
'paddle_price_id' => 'pri_01k8jcxw5sap4r306wcvc0ephy',
'description' => <<<TEXT
Das volle Erlebnis für alle, die keine Kompromisse machen wollen. {{max_photos}} Bilder, {{max_guests}} Gäste, {{gallery_duration}} Galerie-Zugang und {{max_tasks}} Aufgaben dazu kein Wasserzeichen, Live-Slideshow und Premium-Support.
TEXT,
@@ -108,6 +114,28 @@ TEXT,
['title' => 'Extras', 'value' => 'Live-Slideshow & Premium-Support'],
],
],
[
'slug' => 'premium',
'name' => 'Premium',
'name_translations' => [
'de' => 'Premium',
'en' => 'Premium',
],
'type' => PackageType::ENDCUSTOMER,
'price' => 149.00,
'max_photos' => 5000,
'max_guests' => 1000,
'gallery_days' => 180,
'max_tasks' => null,
'watermark_allowed' => true,
'branding_allowed' => false,
'features' => ['basic_uploads', 'unlimited_sharing', 'no_watermark', 'custom_branding', 'custom_tasks'],
'paddle_product_id' => 'pro_01k8jcxsmxrs45v1qvtpsepn13',
'paddle_price_id' => 'pri_01k8jcxswh74jv8vy5q7a4h70p',
'description' => null,
'description_translations' => null,
'description_table' => [],
],
[
'slug' => 's-small-reseller',
'name' => 'Reseller S',
@@ -126,6 +154,8 @@ TEXT,
'max_events_per_year' => 5,
'expires_after' => now()->copy()->addYear(),
'features' => ['reseller_dashboard', 'custom_branding', 'priority_support'],
'paddle_product_id' => 'pro_01k8jcxvax48mhmwsfydw8ha9y',
'paddle_price_id' => 'pri_01k8jcxvhe0bfasg9gg1rw70sy',
'description' => <<<TEXT
Das perfekte Paket für Fotografen oder Planer, die erste Erfahrungen mit Fotospiel sammeln wollen. Enthalten sind {{max_events_per_year}} Events pro Jahr mit Standard-Leistung Branding-Optionen inklusive.
TEXT,
@@ -157,6 +187,8 @@ TEXT,
'max_events_per_year' => 15,
'expires_after' => now()->copy()->addYear(),
'features' => ['reseller_dashboard', 'custom_branding', 'priority_support', 'advanced_reporting'],
'paddle_product_id' => 'pro_01k8jcxtrxw7jsew52jnax901q',
'paddle_price_id' => 'pri_01k8jcxv06nsgy8ym8mnfrfm5v',
'description' => <<<TEXT
Wenn du regelmäßig Hochzeiten, Firmenfeste oder private Events betreust, ist dieses Paket ideal. {{max_events_per_year}} Events pro Jahr mit Branding-Optionen, verlängerter Galerie-Laufzeit und Reporting inklusive.
TEXT,
@@ -188,6 +220,8 @@ TEXT,
'max_events_per_year' => 40,
'expires_after' => now()->copy()->addYear(),
'features' => ['reseller_dashboard', 'custom_branding', 'priority_support', 'advanced_reporting', 'live_slideshow'],
'paddle_product_id' => 'pro_01k8jcxt7gc6g6ddavmq65txzz',
'paddle_price_id' => 'pri_01k8jcxtfa07gvq43kpvpe0t8z',
'description' => <<<TEXT
Ideal für Agenturen, Fotografen oder Eventdienstleister mit vielen Veranstaltungen im Jahr. {{max_events_per_year}} Events inklusive, White-Label-Branding und alle Premium-Funktionen sorgen für maximale Flexibilität.
TEXT,
@@ -201,6 +235,30 @@ TEXT,
['title' => 'Extras', 'value' => 'Live-Slideshow & Premium-Features'],
],
],
[
'slug' => 'studio-annual',
'name' => 'Studio Jahrespaket',
'name_translations' => [
'de' => 'Studio Jahrespaket',
'en' => 'Studio Annual',
],
'type' => PackageType::RESELLER,
'price' => 1299.00,
'max_photos' => null,
'max_guests' => null,
'gallery_days' => null,
'max_tasks' => null,
'watermark_allowed' => true,
'branding_allowed' => false,
'max_events_per_year' => 24,
'expires_after' => null,
'features' => ['basic_uploads', 'unlimited_sharing', 'custom_branding'],
'paddle_product_id' => 'pro_01k8jct3gz9ks5mg6z61q6nrxb',
'paddle_price_id' => 'pri_01k8jcxsa8axwpjnybhjbcrb06',
'description' => null,
'description_translations' => null,
'description_table' => [],
],
[
'slug' => 'enterprise-unlimited',
'name' => 'Enterprise / Unlimited',

View File

@@ -7,14 +7,10 @@ use App\Models\EventType;
use App\Models\Task;
use App\Models\TaskCollection;
use Illuminate\Database\Seeder;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
class TaskCollectionsSeeder extends Seeder
{
private const MIN_TASKS_PER_EVENT_TYPE = 50;
public function run(): void
{
$definitions = $this->definitions();
@@ -45,395 +41,416 @@ class TaskCollectionsSeeder extends Seeder
$syncPayload[$task->id] = ['sort_order' => $sortOrder];
}
$this->ensureMinimumTasks(
$collection,
$eventType,
$syncPayload,
count($syncPayload),
self::MIN_TASKS_PER_EVENT_TYPE,
$eventTypeSlug
);
$collection->tasks()->sync($syncPayload);
$collectionMap[$eventType->id] = $collection;
}
});
$this->assignOrphanTasks($collectionMap);
}
private function definitions(): array
{
$emotions = [
'Liebe' => ['name' => ['de' => 'Liebe', 'en' => 'Love'], 'icon' => 'lucide-heart', 'color' => '#ff6b9d'],
'Freude' => ['name' => ['de' => 'Freude', 'en' => 'Joy'], 'icon' => 'lucide-smile', 'color' => '#ffd93d'],
'Rührung' => ['name' => ['de' => 'Rührung', 'en' => 'Touched'], 'icon' => 'lucide-leaf', 'color' => '#6bcf7f'],
'Nostalgie' => ['name' => ['de' => 'Nostalgie', 'en' => 'Nostalgia'], 'icon' => 'lucide-clock', 'color' => '#a78bfa'],
'Überraschung' => ['name' => ['de' => 'Überraschung', 'en' => 'Surprise'], 'icon' => 'lucide-gift', 'color' => '#fb7185'],
'Stolz' => ['name' => ['de' => 'Stolz', 'en' => 'Pride'], 'icon' => 'lucide-trophy', 'color' => '#34d399'],
'Teamgeist' => ['name' => ['de' => 'Teamgeist', 'en' => 'Team Spirit'], 'icon' => 'lucide-users', 'color' => '#38bdf8'],
'Besinnlichkeit' => ['name' => ['de' => 'Besinnlichkeit', 'en' => 'Contemplation'], 'icon' => 'lucide-candle', 'color' => '#22c55e'],
'Romantik' => ['name' => ['de' => 'Romantik', 'en' => 'Romance'], 'icon' => 'lucide-rose', 'color' => '#e11d48'],
'Ekstase' => ['name' => ['de' => 'Ekstase', 'en' => 'Ecstasy'], 'icon' => 'lucide-stars', 'color' => '#f59e0b'],
];
return [
'wedding' => [
'event_type' => [
'slug' => 'wedding',
'name' => ['de' => 'Hochzeit', 'en' => 'Wedding'],
'icon' => 'lucide-heart',
],
'event_type' => ['slug' => 'wedding', 'name' => ['de' => 'Hochzeit', 'en' => 'Wedding'], 'icon' => 'lucide-heart'],
'collection' => [
'slug' => 'wedding-classics',
'name' => [
'de' => 'Hochzeitsklassiker',
'en' => 'Wedding Classics',
],
'description' => [
'de' => 'Kuratierte Aufgaben rund um Trauung, Emotionen und besondere Momente.',
'en' => 'Curated prompts for vows, emotions, and memorable wedding highlights.',
],
'slug' => 'wedding-classics-2025',
'name' => ['de' => 'Hochzeits-Aufgaben', 'en' => 'Wedding Tasks'],
'description' => ['de' => '50 Aufgaben für den schönsten Tag im Leben.', 'en' => '50 tasks for the most beautiful day of your life.'],
'is_default' => true,
'position' => 10,
],
'base_tasks' => [
$this->taskDefinition(
'wedding-first-look',
['de' => 'Erster Blick des Brautpaares festhalten', 'en' => 'Capture the couples first look'],
['de' => 'Halte den Moment fest, in dem sich Braut und Bräutigam zum ersten Mal sehen.', 'en' => 'Capture the instant when the couple sees each other for the first time.'],
['de' => 'Fotografiere die Reaktionen aus verschiedenen Blickwinkeln.', 'en' => 'Shoot reactions from multiple angles.'],
['name' => ['de' => 'Romantik', 'en' => 'Romance'], 'icon' => 'lucide-heart', 'color' => '#ec4899', 'sort_order' => 10],
'easy',
10
),
$this->taskDefinition(
'wedding-family-hug',
['de' => 'Familienumarmung organisieren', 'en' => 'Organise a family group hug'],
['de' => 'Bitte die wichtigsten Menschen, das Paar gleichzeitig zu umarmen.', 'en' => 'Ask the closest friends and family to hug the couple all at once.'],
['de' => 'Kombiniere die Umarmung mit einem Toast.', 'en' => 'Combine the hug with a heartfelt toast.'],
['name' => ['de' => 'Freude', 'en' => 'Joy'], 'icon' => 'lucide-smile', 'color' => '#f59e0b', 'sort_order' => 20],
'medium',
20
),
$this->taskDefinition(
'wedding-midnight-sparkler',
['de' => 'Mitternachtsfunkeln mit Wunderkerzen', 'en' => 'Midnight sparkler moment'],
['de' => 'Verteile Wunderkerzen und schafft ein leuchtendes Spalier für das Paar.', 'en' => 'Hand out sparklers and form a glowing aisle for the couple.'],
['de' => 'Koordiniere die Musik und kündige den Countdown an.', 'en' => 'Coordinate music and announce a countdown.'],
['name' => ['de' => 'Ekstase', 'en' => 'Euphoria'], 'icon' => 'lucide-stars', 'color' => '#6366f1', 'sort_order' => 30],
'medium',
30
),
$this->taskDefinition(
'wedding-vow-whisper',
['de' => 'Flüstert die liebsten Gelübde erneut', 'en' => 'Whisper your vows again'],
['de' => 'Lasst das Paar sich gegenseitig einen Satz aus den Gelübden zuflüstern.', 'en' => 'Let the couple whisper a favourite line from their vows to each other.'],
['de' => 'Nahaufnahme der Gesichter, während sie lächeln.', 'en' => 'Capture a close-up of the smiles while they whisper.'],
['name' => ['de' => 'Verbundenheit', 'en' => 'Connection'], 'icon' => 'lucide-infinity', 'color' => '#a855f7', 'sort_order' => 35],
'easy',
40
),
$this->taskDefinition(
'wedding-generations-portrait',
['de' => 'Generationenportrait', 'en' => 'Generations portrait'],
['de' => 'Bringe drei Generationen gleichzeitig aufs Foto vom jüngsten zum ältesten Familienmitglied.', 'en' => 'Bring three generations into a single photograph youngest to oldest.'],
['de' => 'Stellt sie gestaffelt auf einer Treppe auf.', 'en' => 'Arrange them on steps for a layered look.'],
['name' => ['de' => 'Familie', 'en' => 'Family'], 'icon' => 'lucide-users', 'color' => '#0ea5e9', 'sort_order' => 45],
'medium',
50
),
$this->taskDefinition('wedding-1', ['de' => 'Macht ein Foto mit dem Brautpaar.', 'en' => 'Take a photo with the bride and groom.'], $emotions['Freude'], 10),
$this->taskDefinition('wedding-2', ['de' => 'Stellt den Heiratsantrag nach (fragt das Brautpaar, wie er war!).', 'en' => 'Re-enact the proposal (ask the couple how it was!).'], $emotions['Romantik'], 20),
$this->taskDefinition('wedding-3', ['de' => 'Fotografiert die Eheringe aus einer kreativen Perspektive.', 'en' => 'Photograph the wedding rings from a creative perspective.'], $emotions['Liebe'], 30),
$this->taskDefinition('wedding-4', ['de' => 'Findet das Paar, das am längsten verheiratet ist, und lasst euch einen Tipp geben.', 'en' => 'Find the couple that has been married the longest and get a tip from them.'], $emotions['Nostalgie'], 40),
$this->taskDefinition('wedding-5', ['de' => 'Macht ein Foto von einer herzlichen Umarmung zwischen den Eltern des Brautpaares.', 'en' => 'Take a photo of a warm hug between the parents of the bride and groom.'], $emotions['Rührung'], 50),
$this->taskDefinition('wedding-6', ['de' => 'Bildet mit euren Händen ein Herz um das Brautpaar.', 'en' => 'Form a heart around the couple with your hands.'], $emotions['Liebe'], 60),
$this->taskDefinition('wedding-7', ['de' => 'Fotografiert den Moment, in dem die Hochzeitstorte angeschnitten wird.', 'en' => 'Photograph the moment the wedding cake is cut.'], $emotions['Freude'], 70),
$this->taskDefinition('wedding-8', ['de' => 'Macht ein Selfie mit dem Trauzeugen oder der Trauzeugin.', 'en' => 'Take a selfie with the best man or maid of honor.'], $emotions['Teamgeist'], 80),
$this->taskDefinition('wedding-9', ['de' => 'Findet jemanden mit dem gleichen Vornamen und macht ein gemeinsames Foto.', 'en' => 'Find someone with the same first name and take a photo together.'], $emotions['Überraschung'], 90),
$this->taskDefinition('wedding-10', ['de' => 'Fotografiert einen Gast, der eine Freudenträne vergießt.', 'en' => 'Photograph a guest shedding a tear of joy.'], $emotions['Rührung'], 100),
$this->taskDefinition('wedding-11', ['de' => 'Macht ein Foto, auf dem alle so hoch springen, wie sie können.', 'en' => 'Take a photo where everyone jumps as high as they can.'], $emotions['Ekstase'], 110),
$this->taskDefinition('wedding-12', ['de' => 'Findet die Großeltern des Brautpaares und macht ein Generationen-Foto.', 'en' => 'Find the grandparents of the couple and take a generation photo.'], $emotions['Liebe'], 120),
$this->taskDefinition('wedding-13', ['de' => 'Stellt eine Szene aus dem Lieblingsfilm des Brautpaares nach.', 'en' => 'Re-enact a scene from the couple\'s favorite movie.'], $emotions['Teamgeist'], 130),
$this->taskDefinition('wedding-14', ['de' => 'Macht ein Kuss-Foto mit eurem eigenen Partner.', 'en' => 'Take a kiss photo with your own partner.'], $emotions['Romantik'], 140),
$this->taskDefinition('wedding-15', ['de' => 'Fotografiert die Schuhe der Braut neben den Schuhen des Bräutigams.', 'en' => 'Photograph the bride\'s shoes next to the groom\'s shoes.'], $emotions['Romantik'], 150),
$this->taskDefinition('wedding-16', ['de' => 'Findet das jüngste und das älteste Familienmitglied auf der Feier für ein gemeinsames Bild.', 'en' => 'Find the youngest and oldest family member at the party for a photo together.'], $emotions['Nostalgie'], 160),
$this->taskDefinition('wedding-17', ['de' => 'Macht ein Foto von den Händen von drei verschiedenen Generationen.', 'en' => 'Take a photo of the hands of three different generations.'], $emotions['Rührung'], 170),
$this->taskDefinition('wedding-18', ['de' => 'Werft dem Brautpaar aus der Ferne eine Kusshand zu.', 'en' => 'Blow a kiss to the couple from a distance.'], $emotions['Liebe'], 180),
$this->taskDefinition('wedding-19', ['de' => 'Macht ein Foto mit jemandem, der heute zum ersten Mal auf einer Hochzeit ist.', 'en' => 'Take a photo with someone who is at a wedding for the first time today.'], $emotions['Überraschung'], 190),
$this->taskDefinition('wedding-20', ['de' => 'Fotografiert das Detail an der Hochzeitsdeko, das euch am besten gefällt.', 'en' => 'Photograph the detail of the wedding decoration that you like the most.'], $emotions['Besinnlichkeit'], 200),
$this->taskDefinition('wedding-21', ['de' => 'Macht ein Gruppenfoto mit allen Gästen von eurem Tisch.', 'en' => 'Take a group photo with all the guests at your table.'], $emotions['Teamgeist'], 210),
$this->taskDefinition('wedding-22', ['de' => 'Findet einen Gast mit einer besonders schicken Krawatte oder Fliege.', 'en' => 'Find a guest with a particularly fancy tie or bow tie.'], $emotions['Stolz'], 220),
$this->taskDefinition('wedding-23', ['de' => 'Tanzt mit einem Elternteil des Brautpaares und haltet den Moment fest.', 'en' => 'Dance with a parent of the couple and capture the moment.'], $emotions['Freude'], 230),
$this->taskDefinition('wedding-24', ['de' => 'Macht ein Foto, das die Aufregung kurz vor dem Ja-Wort einfängt.', 'en' => 'Take a photo that captures the excitement just before the vows.'], $emotions['Rührung'], 240),
$this->taskDefinition('wedding-25', ['de' => 'Fotografiert das Gästebuch in Aktion.', 'en' => 'Photograph the guest book in action.'], $emotions['Nostalgie'], 250),
$this->taskDefinition('wedding-26', ['de' => 'Macht ein Foto von eurem Lieblingsmoment des Tages.', 'en' => 'Take a photo of your favorite moment of the day.'], $emotions['Besinnlichkeit'], 260),
$this->taskDefinition('wedding-27', ['de' => 'Findet einen Gegenstand, der die Farbe "Blau" enthält (etwas Altes, Neues, Geliehenes, Blaues).', 'en' => 'Find an object that contains the color "blue" (something old, new, borrowed, blue).'], $emotions['Nostalgie'], 270),
$this->taskDefinition('wedding-28', ['de' => 'Macht ein Foto, auf dem ihr dem Brautpaar für die Zukunft zuprostet.', 'en' => 'Take a photo toasting to the couple\'s future.'], $emotions['Stolz'], 280),
$this->taskDefinition('wedding-29', ['de' => 'Organisiert ein "Gruppen-Herz" mit so vielen Leuten wie möglich.', 'en' => 'Organize a "group heart" with as many people as possible.'], $emotions['Teamgeist'], 290),
$this->taskDefinition('wedding-30', ['de' => 'Fotografiert einen Moment stiller Zweisamkeit des Brautpaares.', 'en' => 'Photograph a moment of quiet togetherness of the couple.'], $emotions['Romantik'], 300),
$this->taskDefinition('wedding-31', ['de' => 'Macht ein Foto mit dem DJ oder einem Mitglied der Band.', 'en' => 'Take a photo with the DJ or a member of the band.'], $emotions['Freude'], 310),
$this->taskDefinition('wedding-32', ['de' => 'Findet die Person mit dem ansteckendsten Lachen.', 'en' => 'Find the person with the most infectious laugh.'], $emotions['Freude'], 320),
$this->taskDefinition('wedding-33', ['de' => 'Fotografiert den Brautstraußwurf.', 'en' => 'Photograph the bouquet toss.'], $emotions['Überraschung'], 330),
$this->taskDefinition('wedding-34', ['de' => 'Macht ein Foto mit demjenigen, der den Brautstrauß gefangen hat.', 'en' => 'Take a photo with the person who caught the bouquet.'], $emotions['Stolz'], 340),
$this->taskDefinition('wedding-35', ['de' => 'Stellt eure beste Tanzpose zur Schau.', 'en' => 'Show off your best dance pose.'], $emotions['Ekstase'], 350),
$this->taskDefinition('wedding-36', ['de' => 'Macht ein Foto, das "Für immer und ewig" symbolisiert.', 'en' => 'Take a photo that symbolizes "forever and ever".'], $emotions['Liebe'], 360),
$this->taskDefinition('wedding-37', ['de' => 'Findet einen Gast, der die gleiche Schuhgröße hat wie ihr.', 'en' => 'Find a guest who has the same shoe size as you.'], $emotions['Überraschung'], 370),
$this->taskDefinition('wedding-38', ['de' => 'Fotografiert die leeren Tanzschuhe einer Frau, die barfuß tanzt.', 'en' => 'Photograph the empty dancing shoes of a woman dancing barefoot.'], $emotions['Ekstase'], 380),
$this->taskDefinition('wedding-39', ['de' => 'Macht ein Foto von einem Kind, das eingeschlafen ist.', 'en' => 'Take a photo of a child who has fallen asleep.'], $emotions['Rührung'], 390),
$this->taskDefinition('wedding-40', ['de' => 'Schreibt dem Brautpaar eine Botschaft auf einen Zettel und haltet sie ins Bild.', 'en' => 'Write a message to the couple on a piece of paper and hold it in the picture.'], $emotions['Liebe'], 400),
$this->taskDefinition('wedding-41', ['de' => 'Macht ein Foto mit dem "Blumenkind".', 'en' => 'Take a photo with the "flower child".'], $emotions['Freude'], 410),
$this->taskDefinition('wedding-42', ['de' => 'Fotografiert einen Moment, in dem sich das Brautpaar tief in die Augen schaut.', 'en' => 'Photograph a moment when the couple looks deep into each other\'s eyes.'], $emotions['Romantik'], 420),
$this->taskDefinition('wedding-43', ['de' => 'Findet die Person, die die weiteste Anreise hatte.', 'en' => 'Find the person who had the longest journey.'], $emotions['Stolz'], 430),
$this->taskDefinition('wedding-44', ['de' => 'Macht ein Foto, das die Freundschaft zwischen dem Bräutigam und seinem Trauzeugen zeigt.', 'en' => 'Take a photo showing the friendship between the groom and his best man.'], $emotions['Teamgeist'], 440),
$this->taskDefinition('wedding-45', ['de' => 'Fotografiert einen geheimen Moment, den nicht jeder mitbekommt.', 'en' => 'Photograph a secret moment that not everyone gets to see.'], $emotions['Besinnlichkeit'], 450),
$this->taskDefinition('wedding-46', ['de' => 'Macht ein Foto von eurem Lieblings-Teil des Hochzeitsmenüs.', 'en' => 'Take a photo of your favorite part of the wedding menu.'], $emotions['Freude'], 460),
$this->taskDefinition('wedding-47', ['de' => 'Findet einen Gast, der ein Kleid in der gleichen Farbe wie die Deko trägt.', 'en' => 'Find a guest wearing a dress the same color as the decorations.'], $emotions['Überraschung'], 470),
$this->taskDefinition('wedding-48', ['de' => 'Macht ein Foto, das die Erleichterung und Freude nach der Trauung zeigt.', 'en' => 'Take a photo showing the relief and joy after the ceremony.'], $emotions['Ekstase'], 480),
$this->taskDefinition('wedding-49', ['de' => 'Fotografiert die Geschenke für das Brautpaar.', 'en' => 'Photograph the gifts for the couple.'], $emotions['Liebe'], 490),
$this->taskDefinition('wedding-50', ['de' => 'Macht ein letztes Foto des Abends, das die Stimmung perfekt zusammenfasst.', 'en' => 'Take a final photo of the evening that perfectly summarizes the mood.'], $emotions['Nostalgie'], 500),
],
],
'birthday' => [
'event_type' => [
'slug' => 'birthday',
'name' => ['de' => 'Geburtstag', 'en' => 'Birthday'],
'icon' => 'lucide-cake',
],
'event_type' => ['slug' => 'birthday', 'name' => ['de' => 'Geburtstag', 'en' => 'Birthday'], 'icon' => 'lucide-cake'],
'collection' => [
'slug' => 'birthday-celebration',
'name' => [
'de' => 'Geburtstags-Highlights',
'en' => 'Birthday Highlights',
],
'description' => [
'de' => 'Aufgaben für Überraschungen, Gratulationen und gemeinsames Feiern.',
'en' => 'Prompts covering surprises, wishes, and shared celebrations.',
],
'is_default' => false,
'slug' => 'birthday-classics-2025',
'name' => ['de' => 'Geburtstags-Aufgaben', 'en' => 'Birthday Tasks'],
'description' => ['de' => '50 Aufgaben für eine unvergessliche Geburtstagsfeier.', 'en' => '50 tasks for an unforgettable birthday party.'],
'is_default' => true,
'position' => 20,
],
'base_tasks' => [
$this->taskDefinition(
'birthday-surprise-wall',
['de' => 'Überraschungswand mit Polaroids gestalten', 'en' => 'Create a surprise wall filled with instant photos'],
['de' => 'Sammle Schnappschüsse der Gäste und befestige sie als Fotowand.', 'en' => 'Collect snapshots from guests and display them as a photo wall.'],
['de' => 'Bitte jeden Gast um einen kurzen Gruß zum Bild.', 'en' => 'Invite each guest to add a short note to the photo.'],
['name' => ['de' => 'Nostalgie', 'en' => 'Nostalgia'], 'icon' => 'lucide-images', 'color' => '#f97316', 'sort_order' => 40],
'easy',
10
),
$this->taskDefinition(
'birthday-toast-circle',
['de' => 'Gratulationskreis mit kurzen Toasts', 'en' => 'Circle of toasts'],
['de' => 'Bildet einen Kreis und bittet jede Person um einen 10-Sekunden-Toast.', 'en' => 'Gather in a circle and ask each guest for a 10-second toast.'],
['de' => 'Nimm die Lautstärke nach jedem Toast auf wer jubelt am lautesten?', 'en' => 'Capture the volume of each cheer—who is the loudest?'],
['name' => ['de' => 'Dankbarkeit', 'en' => 'Gratitude'], 'icon' => 'lucide-hands', 'color' => '#22c55e', 'sort_order' => 50],
'easy',
20
),
$this->taskDefinition(
'birthday-memory-lane',
['de' => 'Memory-Lane Foto-Story', 'en' => 'Memory lane photo story'],
['de' => 'Suche drei Gegenstände, die zum Geburtstagsgast passen, und erzähle eine Mini-Story mit Fotos.', 'en' => 'Find three objects that represent the guest of honour and photograph them in a mini story.'],
['de' => 'Nutze unterschiedliche Bildausschnitte für die Story.', 'en' => 'Use different framings to tell the story.'],
['name' => ['de' => 'Erinnerung', 'en' => 'Reminiscence'], 'icon' => 'lucide-book-open', 'color' => '#6366f1', 'sort_order' => 55],
'medium',
30
),
$this->taskDefinition('birthday-1', ['de' => 'Macht ein Foto mit dem Geburtstagskind.', 'en' => 'Take a photo with the birthday person.'], $emotions['Freude'], 10),
$this->taskDefinition('birthday-2', ['de' => 'Umarme das Geburtstagskind und halte den Moment fest.', 'en' => 'Hug the birthday person and capture the moment.'], $emotions['Liebe'], 20),
$this->taskDefinition('birthday-3', ['de' => 'Macht ein Foto, auf dem ihr dem Geburtstagskind ein Ständchen singt.', 'en' => 'Take a photo of you singing "Happy Birthday" to the birthday person.'], $emotions['Freude'], 30),
$this->taskDefinition('birthday-4', ['de' => 'Fotografiert den Moment, in dem die Kerzen auf dem Kuchen ausgepustet werden.', 'en' => 'Photograph the moment the candles on the cake are blown out.'], $emotions['Stolz'], 40),
$this->taskDefinition('birthday-5', ['de' => 'Findet jemanden, der im selben Monat Geburtstag hat wie ihr.', 'en' => 'Find someone who has a birthday in the same month as you.'], $emotions['Überraschung'], 50),
$this->taskDefinition('birthday-6', ['de' => 'Macht ein Foto mit dem ältesten und dem jüngsten Gast auf der Party.', 'en' => 'Take a photo with the oldest and youngest guest at the party.'], $emotions['Nostalgie'], 60),
$this->taskDefinition('birthday-7', ['de' => 'Stellt ein Kinderfoto des Geburtstagskindes nach.', 'en' => 'Recreate a childhood photo of the birthday person.'], $emotions['Nostalgie'], 70),
$this->taskDefinition('birthday-8', ['de' => 'Macht ein Foto mit dem Geschenk, das ihr mitgebracht habt.', 'en' => 'Take a photo with the gift you brought.'], $emotions['Liebe'], 80),
$this->taskDefinition('birthday-9', ['de' => 'Fotografiert den Geschenketisch.', 'en' => 'Photograph the gift table.'], $emotions['Überraschung'], 90),
$this->taskDefinition('birthday-10', ['de' => 'Macht ein Gruppenfoto mit allen, die dem Geburtstagskind gerade am nächsten stehen.', 'en' => 'Take a group photo with everyone closest to the birthday person right now.'], $emotions['Teamgeist'], 100),
$this->taskDefinition('birthday-11', ['de' => 'Findet die Person mit dem besten Tanz-Move und fordert sie heraus.', 'en' => 'Find the person with the best dance move and challenge them.'], $emotions['Ekstase'], 110),
$this->taskDefinition('birthday-12', ['de' => 'Macht ein Foto, auf dem ihr so tut, als wärt ihr das Geburtstagskind.', 'en' => 'Take a photo pretending to be the birthday person.'], $emotions['Freude'], 120),
$this->taskDefinition('birthday-13', ['de' => 'Fotografiert einen herzhaften Lacher des Geburtstagskindes.', 'en' => 'Photograph a hearty laugh from the birthday person.'], $emotions['Freude'], 130),
$this->taskDefinition('birthday-14', ['de' => 'Macht ein Foto mit einem Familienmitglied des Geburtstagskindes.', 'en' => 'Take a photo with a family member of the birthday person.'], $emotions['Rührung'], 140),
$this->taskDefinition('birthday-15', ['de' => 'Findet einen Gegenstand, der das neue Lebensjahr symbolisiert.', 'en' => 'Find an object that symbolizes the new year of life.'], $emotions['Stolz'], 150),
$this->taskDefinition('birthday-16', ['de' => 'Macht ein Selfie mit dem Haustier des Geburtstagskindes (falls vorhanden).', 'en' => 'Take a selfie with the birthday person\'s pet (if any).'], $emotions['Liebe'], 160),
$this->taskDefinition('birthday-17', ['de' => 'Fotografiert die Dekoration, die euch am besten gefällt.', 'en' => 'Photograph the decoration you like the most.'], $emotions['Besinnlichkeit'], 170),
$this->taskDefinition('birthday-18', ['de' => 'Macht ein Foto, auf dem ihr eure beste "Überraschung!"-Miene aufsetzt.', 'en' => 'Take a photo with your best "surprise!" face.'], $emotions['Überraschung'], 180),
$this->taskDefinition('birthday-19', ['de' => 'Findet jemanden, den ihr seit über 10 Jahren nicht gesehen habt.', 'en' => 'Find someone you haven\'t seen in over 10 years.'], $emotions['Nostalgie'], 190),
$this->taskDefinition('birthday-20', ['de' => 'Prostet dem Geburtstagskind zu.', 'en' => 'Toast to the birthday person.'], $emotions['Stolz'], 200),
$this->taskDefinition('birthday-21', ['de' => 'Macht ein Foto von eurem Lieblings-Snack auf der Party.', 'en' => 'Take a photo of your favorite snack at the party.'], $emotions['Freude'], 210),
$this->taskDefinition('birthday-22', ['de' => 'Bildet mit einer Gruppe das Alter des Geburtstagskindes mit euren Körpern.', 'en' => 'Form the age of the birthday person with your bodies in a group.'], $emotions['Teamgeist'], 220),
$this->taskDefinition('birthday-23', ['de' => 'Macht ein Foto mit jemandem, der die gleiche Lieblingsfarbe hat wie das Geburtstagskind.', 'en' => 'Take a photo with someone who has the same favorite color as the birthday person.'], $emotions['Teamgeist'], 230),
$this->taskDefinition('birthday-24', ['de' => 'Fotografiert einen Moment der Ruhe, in dem das Geburtstagskind einfach nur genießt.', 'en' => 'Photograph a moment of calm where the birthday person is just enjoying themselves.'], $emotions['Besinnlichkeit'], 240),
$this->taskDefinition('birthday-25', ['de' => 'Macht ein Foto mit dem besten Freund/der besten Freundin des Geburtstagskindes.', 'en' => 'Take a photo with the birthday person\'s best friend.'], $emotions['Liebe'], 250),
$this->taskDefinition('birthday-26', ['de' => 'Findet einen Gast, der eine lustige Anekdote über das Geburtstagskind erzählen kann.', 'en' => 'Find a guest who can tell a funny anecdote about the birthday person.'], $emotions['Nostalgie'], 260),
$this->taskDefinition('birthday-27', ['de' => 'Macht ein Foto, das eure Freundschaft zum Geburtstagskind beschreibt.', 'en' => 'Take a photo that describes your friendship with the birthday person.'], $emotions['Liebe'], 270),
$this->taskDefinition('birthday-28', ['de' => 'Fotografiert die leeren Gläser nach einer Runde Anstoßen.', 'en' => 'Photograph the empty glasses after a round of toasts.'], $emotions['Ekstase'], 280),
$this->taskDefinition('birthday-29', ['de' => 'Macht ein Foto, auf dem ihr so tut, als würdet ihr ein Geschenk klauen.', 'en' => 'Take a photo pretending to steal a gift.'], $emotions['Überraschung'], 290),
$this->taskDefinition('birthday-30', ['de' => 'Findet die Person, die am lautesten singt.', 'en' => 'Find the person who sings the loudest.'], $emotions['Ekstase'], 300),
$this->taskDefinition('birthday-31', ['de' => 'Macht ein Foto von den Schuhen des Geburtstagskindes.', 'en' => 'Take a photo of the birthday person\'s shoes.'], $emotions['Stolz'], 310),
$this->taskDefinition('birthday-32', ['de' => 'Fotografiert einen Moment, in dem jemand eine rührende Rede hält.', 'en' => 'Photograph a moment when someone gives a touching speech.'], $emotions['Rührung'], 320),
$this->taskDefinition('birthday-33', ['de' => 'Macht ein Foto mit jemandem, der die gleiche Haarfarbe hat wie ihr.', 'en' => 'Take a photo with someone who has the same hair color as you.'], $emotions['Überraschung'], 330),
$this->taskDefinition('birthday-34', ['de' => 'Stellt eure "Ich habe das beste Geschenk"-Pose zur Schau.', 'en' => 'Show off your "I have the best gift" pose.'], $emotions['Stolz'], 340),
$this->taskDefinition('birthday-35', ['de' => 'Macht ein Foto, das die pure Lebensfreude einfängt.', 'en' => 'Take a photo that captures pure joy of life.'], $emotions['Ekstase'], 350),
$this->taskDefinition('birthday-36', ['de' => 'Findet einen Ort auf der Party, der eine besondere Bedeutung für das Geburtstagskind hat.', 'en' => 'Find a place at the party that has a special meaning for the birthday person.'], $emotions['Nostalgie'], 360),
$this->taskDefinition('birthday-37', ['de' => 'Macht ein Foto, das zeigt, wie sehr ihr euch auf das nächste Jahr freut.', 'en' => 'Take a photo that shows how much you are looking forward to the next year.'], $emotions['Stolz'], 370),
$this->taskDefinition('birthday-38', ['de' => 'Fotografiert die Playlist oder den DJ-Pult.', 'en' => 'Photograph the playlist or the DJ booth.'], $emotions['Freude'], 380),
$this->taskDefinition('birthday-39', ['de' => 'Macht ein Foto mit jemandem, der eine Brille trägt.', 'en' => 'Take a photo with someone who wears glasses.'], $emotions['Teamgeist'], 390),
$this->taskDefinition('birthday-40', ['de' => 'Findet einen Gast, der die gleiche Lieblingsband hat wie das Geburtstagskind.', 'en' => 'Find a guest who has the same favorite band as the birthday person.'], $emotions['Teamgeist'], 400),
$this->taskDefinition('birthday-41', ['de' => 'Macht ein Foto, das einen Insider-Witz darstellt, den nur ihr und das Geburtstagskind versteht.', 'en' => 'Take a photo that represents an inside joke that only you and the birthday person understand.'], $emotions['Nostalgie'], 410),
$this->taskDefinition('birthday-42', ['de' => 'Fotografiert einen Moment, in dem das Geburtstagskind sichtlich gerührt ist.', 'en' => 'Photograph a moment when the birthday person is visibly moved.'], $emotions['Rührung'], 420),
$this->taskDefinition('birthday-43', ['de' => 'Macht ein Foto von der Geburtstagskarte, die euch am besten gefällt.', 'en' => 'Take a photo of the birthday card you like the most.'], $emotions['Liebe'], 430),
$this->taskDefinition('birthday-44', ['de' => 'Findet die Person, die am weitesten für die Party angereist ist.', 'en' => 'Find the person who traveled the farthest for the party.'], $emotions['Stolz'], 440),
$this->taskDefinition('birthday-45', ['de' => 'Macht ein Foto, das "Party des Jahres" schreit.', 'en' => 'Take a photo that screams "Party of the Year".'], $emotions['Ekstase'], 450),
$this->taskDefinition('birthday-46', ['de' => 'Fotografiert einen Sonnenuntergang oder den Sternenhimmel während der Feier.', 'en' => 'Photograph a sunset or the starry sky during the celebration.'], $emotions['Besinnlichkeit'], 460),
$this->taskDefinition('birthday-47', ['de' => 'Macht ein Foto mit jemandem, der ein Haustier mit einem lustigen Namen hat.', 'en' => 'Take a photo with someone who has a pet with a funny name.'], $emotions['Überraschung'], 470),
$this->taskDefinition('birthday-48', ['de' => 'Stellt eine typische Pose oder Geste des Geburtstagskindes nach.', 'en' => 'Recreate a typical pose or gesture of the birthday person.'], $emotions['Freude'], 480),
$this->taskDefinition('birthday-49', ['de' => 'Macht ein Foto, das die Vorfreude auf den Kuchen zeigt.', 'en' => 'Take a photo showing the anticipation for the cake.'], $emotions['Freude'], 490),
$this->taskDefinition('birthday-50', ['de' => 'Macht ein Abschlussfoto mit dem müden, aber glücklichen Geburtstagskind am Ende des Abends.', 'en' => 'Take a final photo with the tired but happy birthday person at the end of the evening.'], $emotions['Rührung'], 500),
],
],
'christmas' => [
'event_type' => [
'slug' => 'christmas',
'name' => ['de' => 'Weihnachten', 'en' => 'Christmas'],
'icon' => 'lucide-sparkles',
],
'event_type' => ['slug' => 'christmas', 'name' => ['de' => 'Weihnachten', 'en' => 'Christmas'], 'icon' => 'lucide-sparkles'],
'collection' => [
'slug' => 'christmas-magic',
'name' => [
'de' => 'Festliche Highlights',
'en' => 'Festive Highlights',
],
'description' => [
'de' => 'Wärmende Aufgaben für Glühwein-Momente und gemeinsames Staunen.',
'en' => 'Cozy prompts for mulled wine moments and shared wonder.',
],
'is_default' => false,
'slug' => 'christmas-classics-2025',
'name' => ['de' => 'Weihnachts-Aufgaben', 'en' => 'Christmas Tasks'],
'description' => ['de' => '50 Aufgaben für eine magische Weihnachtszeit.', 'en' => '50 tasks for a magical Christmas season.'],
'is_default' => true,
'position' => 30,
],
'base_tasks' => [
$this->taskDefinition(
'christmas-light-hunt',
['de' => 'Finde das schönste Lichterdekor', 'en' => 'Spot the brightest decoration'],
['de' => 'Halte das stimmungsvollste Licht im Raum fest.', 'en' => 'Capture the coziest lights around you.'],
['de' => 'Zeige die Lichtquelle plus Reaktion eines Gastes.', 'en' => 'Show the light source together with a guest reacting to it.'],
['name' => ['de' => 'Besinnlichkeit', 'en' => 'Serenity'], 'icon' => 'lucide-candle', 'color' => '#f97316', 'sort_order' => 20],
'easy',
10
),
$this->taskDefinition(
'christmas-cookie-cheers',
['de' => 'Plätzchen-Toast', 'en' => 'Cookie cheers'],
['de' => 'Stoßt mit Lieblingsplätzchen an und haltet das gemeinsame Lachen fest.', 'en' => 'Clink your favourite cookies together and capture the laughter.'],
['de' => 'Fotografiere in einer Reihe Hände vorne, Gesichter dahinter.', 'en' => 'Frame hands with cookies in front, smiling faces behind.'],
['name' => ['de' => 'Wärme', 'en' => 'Warmth'], 'icon' => 'lucide-mug-hot', 'color' => '#ef4444', 'sort_order' => 30],
'easy',
20
),
$this->taskDefinition(
'christmas-snow-story',
['de' => 'Schneegestöber im Innenraum', 'en' => 'Indoor snow story'],
['de' => 'Nutze Deko oder Papier, um Schneeflocken zu simulieren, und halte den Zauber fest.', 'en' => 'Use props or paper to fake snow and capture the magic.'],
['de' => 'Lass die Schneeflocken im Vordergrund unscharf erscheinen.', 'en' => 'Keep the fake snow in the foreground out of focus for a dreamy look.'],
['name' => ['de' => 'Staunen', 'en' => 'Wonder'], 'icon' => 'lucide-sparkles', 'color' => '#22d3ee', 'sort_order' => 35],
'medium',
30
),
$this->taskDefinition('christmas-1', ['de' => 'Macht ein Foto mit der Person, die das festlichste Outfit trägt.', 'en' => 'Take a photo with the person wearing the most festive outfit.'], $emotions['Stolz'], 10),
$this->taskDefinition('christmas-2', ['de' => 'Fotografiert die schönste Christbaumkugel am Baum.', 'en' => 'Photograph the most beautiful Christmas ball on the tree.'], $emotions['Besinnlichkeit'], 20),
$this->taskDefinition('christmas-3', ['de' => 'Macht ein Selfie mit einer Weihnachtsmütze auf.', 'en' => 'Take a selfie with a Santa hat on.'], $emotions['Freude'], 30),
$this->taskDefinition('christmas-4', ['de' => 'Findet jemanden, der "Last Christmas" liebt (oder hasst) und diskutiert darüber.', 'en' => 'Find someone who loves (or hates) "Last Christmas" and discuss it.'], $emotions['Teamgeist'], 40),
$this->taskDefinition('christmas-5', ['de' => 'Fotografiert einen Moment heimlicher Vorfreude auf die Geschenke.', 'en' => 'Photograph a moment of secret anticipation for the gifts.'], $emotions['Überraschung'], 50),
$this->taskDefinition('christmas-6', ['de' => 'Macht ein Foto von einer herzlichen Familienumarmung.', 'en' => 'Take a photo of a warm family hug.'], $emotions['Liebe'], 60),
$this->taskDefinition('christmas-7', ['de' => 'Fotografiert die leuchtenden Augen eines Kindes beim Anblick des Baumes.', 'en' => 'Photograph the shining eyes of a child at the sight of the tree.'], $emotions['Rührung'], 70),
$this->taskDefinition('christmas-8', ['de' => 'Macht ein Foto von eurem Lieblings-Weihnachtskeks.', 'en' => 'Take a photo of your favorite Christmas cookie.'], $emotions['Freude'], 80),
$this->taskDefinition('christmas-9', ['de' => 'Findet die Person, die am meisten über einen Witz vom Weihnachtsmann lacht.', 'en' => 'Find the person who laughs the most at a joke from Santa.'], $emotions['Ekstase'], 90),
$this->taskDefinition('christmas-10', ['de' => 'Macht ein Foto, das die Wärme und Gemütlichkeit des Raumes einfängt.', 'en' => 'Take a photo that captures the warmth and coziness of the room.'], $emotions['Besinnlichkeit'], 100),
$this->taskDefinition('christmas-11', ['de' => 'Stellt eine Szene aus der Weihnachtsgeschichte oder einem Weihnachtsfilm nach.', 'en' => 'Re-enact a scene from the Christmas story or a Christmas movie.'], $emotions['Teamgeist'], 110),
$this->taskDefinition('christmas-12', ['de' => 'Macht ein Foto mit drei Generationen eurer Familie.', 'en' => 'Take a photo with three generations of your family.'], $emotions['Nostalgie'], 120),
$this->taskDefinition('christmas-13', ['de' => 'Fotografiert das unordentlichste Geschenkpapier nach dem Auspacken.', 'en' => 'Photograph the messiest wrapping paper after unwrapping.'], $emotions['Ekstase'], 130),
$this->taskDefinition('christmas-14', ['de' => 'Findet jemanden, der Socken zu Weihnachten bekommen hat und sich ehrlich freut.', 'en' => 'Find someone who got socks for Christmas and is genuinely happy about it.'], $emotions['Überraschung'], 140),
$this->taskDefinition('christmas-15', ['de' => 'Macht ein Foto, auf dem ihr so tut, als wärt ihr ein Engel auf der Baumspitze.', 'en' => 'Take a photo pretending to be an angel on top of the tree.'], $emotions['Freude'], 150),
$this->taskDefinition('christmas-16', ['de' => 'Fotografiert einen Mistelzweig in Aktion.', 'en' => 'Photograph a mistletoe in action.'], $emotions['Romantik'], 160),
$this->taskDefinition('christmas-17', ['de' => 'Macht ein Foto mit der Person, die das Essen gekocht hat, als Dankeschön.', 'en' => 'Take a photo with the person who cooked the meal as a thank you.'], $emotions['Liebe'], 170),
$this->taskDefinition('christmas-18', ['de' => 'Findet das älteste Stück Weihnachtsschmuck in der Wohnung.', 'en' => 'Find the oldest piece of Christmas decoration in the house.'], $emotions['Nostalgie'], 180),
$this->taskDefinition('christmas-19', ['de' => 'Macht ein Foto, auf dem ihr andächtig einer Weihnachtsgeschichte lauscht.', 'en' => 'Take a photo of you listening intently to a Christmas story.'], $emotions['Besinnlichkeit'], 190),
$this->taskDefinition('christmas-20', ['de' => 'Fotografiert einen Moment des gemeinsamen Singens.', 'en' => 'Photograph a moment of singing together.'], $emotions['Rührung'], 200),
$this->taskDefinition('christmas-21', ['de' => 'Macht ein Gruppenfoto, auf dem alle ihre "hässlichen Weihnachtspullover" zeigen.', 'en' => 'Take a group photo showing off everyone\'s "ugly Christmas sweaters".'], $emotions['Teamgeist'], 210),
$this->taskDefinition('christmas-22', ['de' => 'Findet jemanden, der sich über sein Geschenk am meisten gefreut hat.', 'en' => 'Find someone who was most happy about their gift.'], $emotions['Stolz'], 220),
$this->taskDefinition('christmas-23', ['de' => 'Macht ein Foto von den dampfenden Tassen mit Glühwein oder Kakao.', 'en' => 'Take a photo of the steaming mugs of mulled wine or cocoa.'], $emotions['Freude'], 230),
$this->taskDefinition('christmas-24', ['de' => 'Fotografiert einen Moment der Stille vor der Bescherung.', 'en' => 'Photograph a moment of silence before the gift-giving.'], $emotions['Besinnlichkeit'], 240),
$this->taskDefinition('christmas-25', ['de' => 'Macht ein Foto mit jemandem, der im Dezember Geburtstag hat.', 'en' => 'Take a photo with someone who has a birthday in December.'], $emotions['Überraschung'], 250),
$this->taskDefinition('christmas-26', ['de' => 'Findet das Geschenk mit der schönsten Schleife.', 'en' => 'Find the gift with the most beautiful bow.'], $emotions['Stolz'], 260),
$this->taskDefinition('christmas-27', ['de' => 'Macht ein Foto, das "Frieden auf Erden" symbolisiert.', 'en' => 'Take a photo that symbolizes "Peace on Earth".'], $emotions['Liebe'], 270),
$this->taskDefinition('christmas-28', ['de' => 'Fotografiert die leeren Teller nach dem Weihnachtsessen.', 'en' => 'Photograph the empty plates after Christmas dinner.'], $emotions['Freude'], 280),
$this->taskDefinition('christmas-29', ['de' => 'Macht ein Foto aus der Perspektive eines Geschenks unter dem Baum.', 'en' => 'Take a photo from the perspective of a gift under the tree.'], $emotions['Überraschung'], 290),
$this->taskDefinition('christmas-30', ['de' => 'Findet jemanden, der noch an den Weihnachtsmann glaubt (oder so tut als ob).', 'en' => 'Find someone who still believes in Santa Claus (or pretends to).'], $emotions['Nostalgie'], 300),
$this->taskDefinition('christmas-31', ['de' => 'Macht ein Foto, das die Aufregung beim Würfeln um Geschenke (Wichteln) zeigt.', 'en' => 'Take a photo showing the excitement of dice games for gifts (Secret Santa).'], $emotions['Ekstase'], 310),
$this->taskDefinition('christmas-32', ['de' => 'Fotografiert eine Kerze, die für jemanden brennt, der nicht hier sein kann.', 'en' => 'Photograph a candle burning for someone who cannot be here.'], $emotions['Rührung'], 320),
$this->taskDefinition('christmas-33', ['de' => 'Macht ein Foto mit eurem Lieblingsgeschenk, das ihr bekommen habt.', 'en' => 'Take a photo with your favorite gift you received.'], $emotions['Stolz'], 330),
$this->taskDefinition('christmas-34', ['de' => 'Findet die Person, die am besten "Oh Tannenbaum" singen kann.', 'en' => 'Find the person who can sing "O Christmas Tree" the best.'], $emotions['Teamgeist'], 340),
$this->taskDefinition('christmas-35', ['de' => 'Macht ein Foto, das die Magie des Schneefalls zeigt (falls es schneit).', 'en' => 'Take a photo that shows the magic of snowfall (if it is snowing).'], $emotions['Romantik'], 350),
$this->taskDefinition('christmas-36', ['de' => 'Fotografiert einen Moment, in dem alte Familiengeschichten erzählt werden.', 'en' => 'Photograph a moment when old family stories are being told.'], $emotions['Nostalgie'], 360),
$this->taskDefinition('christmas-37', ['de' => 'Macht ein Foto von jemandem, der ein Nickerchen nach dem Essen macht.', 'en' => 'Take a photo of someone taking a nap after the meal.'], $emotions['Rührung'], 370),
$this->taskDefinition('christmas-38', ['de' => 'Findet das kleinste und das größte Geschenk unter dem Baum.', 'en' => 'Find the smallest and the largest gift under the tree.'], $emotions['Überraschung'], 380),
$this->taskDefinition('christmas-39', ['de' => 'Macht ein Foto, das eure Dankbarkeit für diesen Moment ausdrückt.', 'en' => 'Take a photo that expresses your gratitude for this moment.'], $emotions['Liebe'], 390),
$this->taskDefinition('christmas-40', ['de' => 'Fotografiert die Vorbereitungen in der Küche.', 'en' => 'Photograph the preparations in the kitchen.'], $emotions['Teamgeist'], 400),
$this->taskDefinition('christmas-41', ['de' => 'Macht ein Foto, auf dem ihr versucht, heimlich vom Nachtisch zu naschen.', 'en' => 'Take a photo of you trying to secretly snack on dessert.'], $emotions['Überraschung'], 410),
$this->taskDefinition('christmas-42', ['de' => 'Findet jemanden, der alle Rentiere des Weihnachtsmanns aufzählen kann.', 'en' => 'Find someone who can name all of Santa\'s reindeer.'], $emotions['Stolz'], 420),
$this->taskDefinition('christmas-43', ['de' => 'Macht ein Foto, das die besondere Verbindung zu euren Geschwistern zeigt.', 'en' => 'Take a photo that shows the special bond with your siblings.'], $emotions['Liebe'], 430),
$this->taskDefinition('christmas-44', ['de' => 'Fotografiert den Adventskranz.', 'en' => 'Photograph the Advent wreath.'], $emotions['Besinnlichkeit'], 440),
$this->taskDefinition('christmas-45', ['de' => 'Macht ein Foto von den Fußspuren im Schnee.', 'en' => 'Take a photo of the footprints in the snow.'], $emotions['Nostalgie'], 450),
$this->taskDefinition('christmas-46', ['de' => 'Findet die Person, die am aufgeregtesten ist, einen bestimmten Film zu sehen.', 'en' => 'Find the person who is most excited to see a certain movie.'], $emotions['Ekstase'], 460),
$this->taskDefinition('christmas-47', ['de' => 'Macht ein Foto, das die Freude am Geben zeigt.', 'en' => 'Take a photo that shows the joy of giving.'], $emotions['Liebe'], 470),
$this->taskDefinition('christmas-48', ['de' => 'Fotografiert die Tischdekoration im Detail.', 'en' => 'Photograph the table decoration in detail.'], $emotions['Stolz'], 480),
$this->taskDefinition('christmas-49', ['de' => 'Macht ein Foto von einem handgemachten Geschenk.', 'en' => 'Take a photo of a handmade gift.'], $emotions['Rührung'], 490),
$this->taskDefinition('christmas-50', ['de' => 'Macht ein letztes Gruppenfoto vor dem Weihnachtsbaum, bevor die Feier endet.', 'en' => 'Take a final group photo in front of the Christmas tree before the celebration ends.'], $emotions['Nostalgie'], 500),
],
],
'corporate' => [
'event_type' => [
'slug' => 'corporate',
'name' => ['de' => 'Firma', 'en' => 'Corporate'],
'icon' => 'lucide-briefcase',
],
'confirmation' => [
'event_type' => ['slug' => 'confirmation', 'name' => ['de' => 'Konfirmation / Jugendweihe', 'en' => 'Confirmation'], 'icon' => 'lucide-dove'],
'collection' => [
'slug' => 'corporate-connect',
'name' => [
'de' => 'Team-Verbindungen',
'en' => 'Team Connections',
],
'description' => [
'de' => 'Interaktive Aufgaben für produktive Offsites und Firmenfeiern.',
'en' => 'Interactive prompts for productive offsites and company celebrations.',
],
'is_default' => false,
'slug' => 'confirmation-classics-2025',
'name' => ['de' => 'Aufgaben zur Konfirmation/Jugendweihe', 'en' => 'Confirmation Tasks'],
'description' => ['de' => '50 Aufgaben für einen denkwürdigen Tag.', 'en' => '50 tasks for a memorable day.'],
'is_default' => true,
'position' => 40,
],
'base_tasks' => [
$this->taskDefinition(
'corporate-high-five-chain',
['de' => 'High-Five-Kette starten', 'en' => 'Start a high-five chain'],
['de' => 'Platziert euch im Kreis und gebt reihum High-Fives haltet den Moment fest.', 'en' => 'Form a circle and pass on high-fives capture the energy.'],
['de' => 'Nutze Serienaufnahmen, um alle Bewegungen einzufangen.', 'en' => 'Use burst mode to catch every high-five.'],
['name' => ['de' => 'Teamgeist', 'en' => 'Team Spirit'], 'icon' => 'lucide-users', 'color' => '#0ea5e9', 'sort_order' => 10],
'easy',
10
),
$this->taskDefinition(
'corporate-goal-toast',
['de' => 'Ziele feiern', 'en' => 'Celebrate milestones'],
['de' => 'Ruft gemeinsam ein erreichte Ziel in die Kamera und haltet die Euphorie fest.', 'en' => 'Shout a recent team achievement into the camera together.'],
['de' => 'Lasst Konfetti oder Luftballons in den Rahmen fallen.', 'en' => 'Drop confetti or balloons into the frame.'],
['name' => ['de' => 'Stolz', 'en' => 'Pride'], 'icon' => 'lucide-trophy', 'color' => '#22c55e', 'sort_order' => 20],
'medium',
20
),
$this->taskDefinition(
'corporate-coffee-pose',
['de' => 'Kaffee-Powerpose', 'en' => 'Coffee power pose'],
['de' => 'Lass das Team mit Kaffeebechern posieren jede Person zeigt eine andere Emotion.', 'en' => 'Have the team pose with coffee mugs, each showing a different emotion.'],
['de' => 'Nutze eine niedrige Perspektive, um Power auszudrücken.', 'en' => 'Shoot from a low angle to emphasise power.'],
['name' => ['de' => 'Motivation', 'en' => 'Motivation'], 'icon' => 'lucide-rocket', 'color' => '#8b5cf6', 'sort_order' => 30],
'easy',
30
),
$this->taskDefinition('confirmation-1', ['de' => 'Macht ein Foto mit dem Konfirmanden / Jugendweihe-Teilnehmer.', 'en' => 'Take a photo with the confirmand / youth consecration participant.'], $emotions['Stolz'], 10),
$this->taskDefinition('confirmation-2', ['de' => 'Fotografiert die Urkunde oder das Erinnerungsdokument.', 'en' => 'Photograph the certificate or commemorative document.'], $emotions['Stolz'], 20),
$this->taskDefinition('confirmation-3', ['de' => 'Macht ein Foto mit den Paten oder Mentoren.', 'en' => 'Take a photo with the godparents or mentors.'], $emotions['Teamgeist'], 30),
$this->taskDefinition('confirmation-4', ['de' => 'Findet die Großeltern und macht ein Foto, das ihren Stolz zeigt.', 'en' => 'Find the grandparents and take a photo that shows their pride.'], $emotions['Rührung'], 40),
$this->taskDefinition('confirmation-5', ['de' => 'Fotografiert einen Moment des Nachdenkens oder Gebets in der Kirche/am Ort der Feier.', 'en' => 'Photograph a moment of reflection or prayer in the church/at the place of celebration.'], $emotions['Besinnlichkeit'], 50),
$this->taskDefinition('confirmation-6', ['de' => 'Macht ein Gruppenfoto mit allen jungen Leuten, die heute ebenfalls gefeiert werden.', 'en' => 'Take a group photo with all the young people who are also being celebrated today.'], $emotions['Teamgeist'], 60),
$this->taskDefinition('confirmation-7', ['de' => 'Fotografiert die festliche Kleidung des Hauptakteurs im Detail.', 'en' => 'Photograph the festive attire of the main character in detail.'], $emotions['Stolz'], 70),
$this->taskDefinition('confirmation-8', ['de' => 'Macht ein Foto mit einem Gast, der euch einen guten Ratschlag für die Zukunft gibt.', 'en' => 'Take a photo with a guest who gives you good advice for the future.'], $emotions['Besinnlichkeit'], 80),
$this->taskDefinition('confirmation-9', ['de' => 'Findet das schönste Blumenarrangement.', 'en' => 'Find the most beautiful flower arrangement.'], $emotions['Freude'], 90),
$this->taskDefinition('confirmation-10', ['de' => 'Macht ein Foto, das die feierliche Atmosphäre einfängt.', 'en' => 'Take a photo that captures the solemn atmosphere.'], $emotions['Besinnlichkeit'], 100),
$this->taskDefinition('confirmation-11', ['de' => 'Fotografiert den Moment des Anstoßens auf die Zukunft.', 'en' => 'Photograph the moment of toasting to the future.'], $emotions['Stolz'], 110),
$this->taskDefinition('confirmation-12', ['de' => 'Macht ein Foto mit euren Eltern, das ihre Liebe und Unterstützung zeigt.', 'en' => 'Take a photo with your parents that shows their love and support.'], $emotions['Liebe'], 120),
$this->taskDefinition('confirmation-13', ['de' => 'Findet einen Gast, der bei seiner eigenen Konfirmation/Jugendweihe dabei war und fragt nach einer Anekdote.', 'en' => 'Find a guest who was at their own confirmation/youth consecration and ask for an anecdote.'], $emotions['Nostalgie'], 130),
$this->taskDefinition('confirmation-14', ['de' => 'Fotografiert die brennenden Kerzen.', 'en' => 'Photograph the burning candles.'], $emotions['Besinnlichkeit'], 140),
$this->taskDefinition('confirmation-15', ['de' => 'Macht ein Foto, das die Aufregung und Nervosität vor dem großen Moment zeigt.', 'en' => 'Take a photo that shows the excitement and nervousness before the big moment.'], $emotions['Rührung'], 150),
$this->taskDefinition('confirmation-16', ['de' => 'Findet das Gesangbuch oder Programmheft und macht ein Foto davon.', 'en' => 'Find the hymnal or program booklet and take a photo of it.'], $emotions['Nostalgie'], 160),
$this->taskDefinition('confirmation-17', ['de' => 'Macht ein Foto mit dem Pfarrer, Redner oder Organisator der Feier.', 'en' => 'Take a photo with the pastor, speaker or organizer of the celebration.'], $emotions['Teamgeist'], 170),
$this->taskDefinition('confirmation-18', ['de' => 'Fotografiert den Geschenketisch.', 'en' => 'Photograph the gift table.'], $emotions['Überraschung'], 180),
$this->taskDefinition('confirmation-19', ['de' => 'Macht ein Foto, das die Verbindung zwischen den Generationen darstellt.', 'en' => 'Take a photo that represents the connection between generations.'], $emotions['Liebe'], 190),
$this->taskDefinition('confirmation-20', ['de' => 'Findet einen Gast, der dem Konfirmanden/Jugendweihe-Teilnehmer besonders ähnlich sieht.', 'en' => 'Find a guest who looks particularly similar to the confirmand/youth consecration participant.'], $emotions['Überraschung'], 200),
$this->taskDefinition('confirmation-21', ['de' => 'Macht ein Foto von der festlich gedeckten Tafel.', 'en' => 'Take a photo of the festively decorated table.'], $emotions['Stolz'], 210),
$this->taskDefinition('confirmation-22', ['de' => 'Fotografiert einen Moment herzlichen Lachens.', 'en' => 'Photograph a moment of hearty laughter.'], $emotions['Freude'], 220),
$this->taskDefinition('confirmation-23', ['de' => 'Macht ein Foto mit einem Freund, den ihr durch den Konfirmandenunterricht/die Vorbereitung kennengelernt habt.', 'en' => 'Take a photo with a friend you met through confirmation class/preparation.'], $emotions['Teamgeist'], 230),
$this->taskDefinition('confirmation-24', ['de' => 'Findet einen ruhigen Ort und macht ein Foto, das eure Gedanken über die Zukunft festhält.', 'en' => 'Find a quiet place and take a photo that captures your thoughts about the future.'], $emotions['Besinnlichkeit'], 240),
$this->taskDefinition('confirmation-25', ['de' => 'Macht ein Foto, das "ein neuer Lebensabschnitt beginnt" symbolisiert.', 'en' => 'Take a photo that symbolizes "a new chapter in life begins".'], $emotions['Stolz'], 250),
$this->taskDefinition('confirmation-26', ['de' => 'Fotografiert die Glückwunschkarten.', 'en' => 'Photograph the greeting cards.'], $emotions['Liebe'], 260),
$this->taskDefinition('confirmation-27', ['de' => 'Macht ein Foto mit jemandem, der ein Kreuz oder ein anderes Symbol des Tages trägt.', 'en' => 'Take a photo with someone wearing a cross or other symbol of the day.'], $emotions['Teamgeist'], 270),
$this->taskDefinition('confirmation-28', ['de' => 'Findet einen Gast, der eine besonders rührende Geschichte erzählen kann.', 'en' => 'Find a guest who can tell a particularly touching story.'], $emotions['Rührung'], 280),
$this->taskDefinition('confirmation-29', ['de' => 'Macht ein Foto von den Schuhen bereit für den neuen Weg.', 'en' => 'Take a photo of the shoes ready for the new path.'], $emotions['Stolz'], 290),
$this->taskDefinition('confirmation-30', ['de' => 'Fotografiert die Torte oder das Dessertbuffet.', 'en' => 'Photograph the cake or dessert buffet.'], $emotions['Freude'], 300),
$this->taskDefinition('confirmation-31', ['de' => 'Macht ein Foto, das die Erleichterung nach dem offiziellen Teil zeigt.', 'en' => 'Take a photo that shows the relief after the official part.'], $emotions['Ekstase'], 310),
$this->taskDefinition('confirmation-32', ['de' => 'Findet den Gast, der den weitesten Weg auf sich genommen hat.', 'en' => 'Find a guest who has traveled the farthest.'], $emotions['Stolz'], 320),
$this->taskDefinition('confirmation-33', ['de' => 'Macht ein Foto, das Dankbarkeit ausdrückt.', 'en' => 'Take a photo that expresses gratitude.'], $emotions['Liebe'], 330),
$this->taskDefinition('confirmation-34', ['de' => 'Fotografiert ein Detail der Architektur des Feierortes.', 'en' => 'Photograph a detail of the architecture of the celebration venue.'], $emotions['Besinnlichkeit'], 340),
$this->taskDefinition('confirmation-35', ['de' => 'Macht ein Foto mit euren Geschwistern.', 'en' => 'Take a photo with your siblings.'], $emotions['Liebe'], 350),
$this->taskDefinition('confirmation-36', ['de' => 'Findet jemanden, der ein altes Foto von euch als Kind dabei hat.', 'en' => 'Find someone who has an old photo of you as a child.'], $emotions['Nostalgie'], 360),
$this->taskDefinition('confirmation-37', ['de' => 'Macht ein Foto, das die Freude über ein besonderes Geschenk zeigt.', 'en' => 'Take a photo that shows the joy of a special gift.'], $emotions['Überraschung'], 370),
$this->taskDefinition('confirmation-38', ['de' => 'Fotografiert die Hände eurer Eltern, die euch halten.', 'en' => 'Photograph your parents\' hands holding you.'], $emotions['Rührung'], 380),
$this->taskDefinition('confirmation-39', ['de' => 'Macht ein Foto, auf dem ihr in den Himmel schaut und an die Zukunft denkt.', 'en' => 'Take a photo of you looking at the sky and thinking about the future.'], $emotions['Besinnlichkeit'], 390),
$this->taskDefinition('confirmation-40', ['de' => 'Findet die Person mit dem besten Ratschlag für das Erwachsenwerden.', 'en' => 'Find the person with the best advice for growing up.'], $emotions['Teamgeist'], 400),
$this->taskDefinition('confirmation-41', ['de' => 'Macht ein Foto, das die Freundschaften feiert, die euch bis hierher begleitet haben.', 'en' => 'Take a photo that celebrates the friendships that have accompanied you this far.'], $emotions['Liebe'], 410),
$this->taskDefinition('confirmation-42', ['de' => 'Fotografiert die Musikinstrumente, die gespielt werden (Orgel, Klavier etc.).', 'en' => 'Photograph the musical instruments being played (organ, piano, etc.).'], $emotions['Rührung'], 420),
$this->taskDefinition('confirmation-43', ['de' => 'Macht ein Foto von einem Lächeln, das von Herzen kommt.', 'en' => 'Take a photo of a smile that comes from the heart.'], $emotions['Freude'], 430),
$this->taskDefinition('confirmation-44', ['de' => 'Findet einen Gegenstand, der für euch persönlich diesen Tag symbolisiert.', 'en' => 'Find an object that personally symbolizes this day for you.'], $emotions['Nostalgie'], 440),
$this->taskDefinition('confirmation-45', ['de' => 'Macht ein Foto, das die Aufbruchstimmung des Tages einfängt.', 'en' => 'Take a photo that captures the spirit of optimism of the day.'], $emotions['Ekstase'], 450),
$this->taskDefinition('confirmation-46', ['de' => 'Fotografiert die Dekoration, die von der Familie selbst gemacht wurde.', 'en' => 'Photograph the decoration that was made by the family themselves.'], $emotions['Stolz'], 460),
$this->taskDefinition('confirmation-47', ['de' => 'Macht ein Foto mit der Person, die euch heute am meisten zum Lachen gebracht hat.', 'en' => 'Take a photo with the person who made you laugh the most today.'], $emotions['Freude'], 470),
$this->taskDefinition('confirmation-48', ['de' => 'Findet einen Moment, um dem Hauptakteur des Tages im Stillen alles Gute zu wünschen.', 'en' => 'Find a moment to silently wish the main character of the day all the best.'], $emotions['Liebe'], 480),
$this->taskDefinition('confirmation-49', ['de' => 'Fotografiert die leeren Plätze nach dem Ende der Zeremonie.', 'en' => 'Photograph the empty seats after the end of the ceremony.'], $emotions['Nostalgie'], 490),
$this->taskDefinition('confirmation-50', ['de' => 'Macht ein letztes Foto des Tages, das den Übergang in einen neuen Lebensabschnitt festhält.', 'en' => 'Take a final photo of the day that captures the transition to a new chapter in life.'], $emotions['Stolz'], 500),
],
],
'graduation' => [
'event_type' => ['slug' => 'graduation', 'name' => ['de' => 'Schulabschluss', 'en' => 'Graduation'], 'icon' => 'lucide-graduation-cap'],
'collection' => [
'slug' => 'graduation-classics-2025',
'name' => ['de' => 'Aufgaben zum Schulabschluss', 'en' => 'Graduation Tasks'],
'description' => ['de' => '50 Aufgaben, um das Ende der Schulzeit zu feiern.', 'en' => '50 tasks to celebrate the end of school.'],
'is_default' => true,
'position' => 50,
],
'base_tasks' => [
$this->taskDefinition('graduation-1', ['de' => 'Werft eure Hüte in die Luft!', 'en' => 'Throw your hats in the air!'], $emotions['Ekstase'], 10),
$this->taskDefinition('graduation-2', ['de' => 'Macht ein Foto mit eurem Abschlusszeugnis.', 'en' => 'Take a photo with your diploma.'], $emotions['Stolz'], 20),
$this->taskDefinition('graduation-3', ['de' => 'Umarme deine besten Schulfreunde für ein Gruppenfoto.', 'en' => 'Hug your best school friends for a group photo.'], $emotions['Liebe'], 30),
$this->taskDefinition('graduation-4', ['de' => 'Macht ein Foto mit eurem Lieblingslehrer.', 'en' => 'Take a photo with your favorite teacher.'], $emotions['Rührung'], 40),
$this->taskDefinition('graduation-5', ['de' => 'Findet eure Eltern und macht ein Foto, das ihren Stolz zeigt.', 'en' => 'Find your parents and take a photo that shows their pride.'], $emotions['Stolz'], 50),
$this->taskDefinition('graduation-6', ['de' => 'Stellt ein Foto vom ersten Schultag nach.', 'en' => 'Recreate a photo from the first day of school.'], $emotions['Nostalgie'], 60),
$this->taskDefinition('graduation-7', ['de' => 'Macht ein Foto, auf dem ihr so tut, als würdet ihr für eine Prüfung lernen.', 'en' => 'Take a photo pretending to study for an exam.'], $emotions['Nostalgie'], 70),
$this->taskDefinition('graduation-8', ['de' => 'Findet jemanden, mit dem ihr seit der Grundschule in einer Klasse wart.', 'en' => 'Find someone you have been in a class with since elementary school.'], $emotions['Nostalgie'], 80),
$this->taskDefinition('graduation-9', ['de' => 'Macht ein Foto mit eurem "Partner in Crime" aus der Schulzeit.', 'en' => 'Take a photo with your "partner in crime" from school.'], $emotions['Teamgeist'], 90),
$this->taskDefinition('graduation-10', ['de' => 'Fotografiert die Unterschrift eures Lieblingslehrers auf eurem Zeugnis oder Jahrbuch.', 'en' => 'Photograph the signature of your favorite teacher on your report card or yearbook.'], $emotions['Stolz'], 100),
$this->taskDefinition('graduation-11', ['de' => 'Macht ein Foto, das eure Pläne für die Zukunft symbolisiert (z.B. mit einem Reiseführer, einem Lehrbuch).', 'en' => 'Take a photo that symbolizes your plans for the future (e.g. with a travel guide, a textbook).'], $emotions['Besinnlichkeit'], 110),
$this->taskDefinition('graduation-12', ['de' => 'Findet die Person, die die verrücktesten Pläne nach dem Abschluss hat.', 'en' => 'Find the person with the craziest plans after graduation.'], $emotions['Überraschung'], 120),
$this->taskDefinition('graduation-13', ['de' => 'Macht ein Gruppenfoto mit eurer gesamten Clique.', 'en' => 'Take a group photo with your entire clique.'], $emotions['Teamgeist'], 130),
$this->taskDefinition('graduation-14', ['de' => 'Fotografiert einen Moment, in dem Tränen des Abschieds und der Freude fließen.', 'en' => 'Photograph a moment when tears of farewell and joy are flowing.'], $emotions['Rührung'], 140),
$this->taskDefinition('graduation-15', ['de' => 'Macht ein Foto, auf dem ihr auf die bestandenen Prüfungen anstoßt.', 'en' => 'Take a photo toasting to the passed exams.'], $emotions['Ekstase'], 150),
$this->taskDefinition('graduation-16', ['de' => 'Findet den Ort auf dem Schulgelände, an dem ihr die meiste Zeit verbracht habt.', 'en' => 'Find the place on the school grounds where you spent the most time.'], $emotions['Nostalgie'], 160),
$this->taskDefinition('graduation-17', ['de' => 'Macht ein Foto mit jemandem aus eurem Abschlussball-Komitee oder Organisationsteam.', 'en' => 'Take a photo with someone from your prom committee or organizing team.'], $emotions['Teamgeist'], 170),
$this->taskDefinition('graduation-18', ['de' => 'Fotografiert die Schuhe, die ihr auf dem Abschlussball tragt.', 'en' => 'Photograph the shoes you wear to the prom.'], $emotions['Stolz'], 180),
$this->taskDefinition('graduation-19', ['de' => 'Macht ein Foto, das die Erleichterung nach der letzten Prüfung zeigt.', 'en' => 'Take a photo that shows the relief after the last exam.'], $emotions['Ekstase'], 190),
$this->taskDefinition('graduation-20', ['de' => 'Findet jemanden, der den gleichen Studien- oder Berufswunsch hat.', 'en' => 'Find someone who has the same study or career aspirations.'], $emotions['Teamgeist'], 200),
$this->taskDefinition('graduation-21', ['de' => 'Macht ein Foto, auf dem ihr euren Eltern für ihre Unterstützung dankt.', 'en' => 'Take a photo thanking your parents for their support.'], $emotions['Liebe'], 210),
$this->taskDefinition('graduation-22', ['de' => 'Fotografiert das Cover eures Jahrbuchs.', 'en' => 'Photograph the cover of your yearbook.'], $emotions['Nostalgie'], 220),
$this->taskDefinition('graduation-23', ['de' => 'Macht ein Foto mit jemandem, den ihr erst im letzten Schuljahr richtig kennengelernt habt.', 'en' => 'Take a photo with someone you only really got to know in the last school year.'], $emotions['Überraschung'], 230),
$this->taskDefinition('graduation-24', ['de' => 'Findet die Person mit dem extravagantesten Outfit.', 'en' => 'Find the person with the most extravagant outfit.'], $emotions['Stolz'], 240),
$this->taskDefinition('graduation-25', ['de' => 'Macht ein Foto, das die Freiheit nach der Schule symbolisiert.', 'en' => 'Take a photo that symbolizes freedom after school.'], $emotions['Freude'], 250),
$this->taskDefinition('graduation-26', ['de' => 'Fotografiert einen Lehrer, der sichtlich gerührt ist.', 'en' => 'Photograph a teacher who is visibly moved.'], $emotions['Rührung'], 260),
$this->taskDefinition('graduation-27', ['de' => 'Macht ein Foto mit euren Geschwistern.', 'en' => 'Take a photo with your siblings.'], $emotions['Liebe'], 270),
$this->taskDefinition('graduation-28', ['de' => 'Findet den "Klassenclown" für ein lustiges Foto.', 'en' => 'Find the "class clown" for a funny photo.'], $emotions['Freude'], 280),
$this->taskDefinition('graduation-29', ['de' => 'Macht ein Foto, das eure Freundschaft für immer festhält.', 'en' => 'Take a photo that captures your friendship forever.'], $emotions['Liebe'], 290),
$this->taskDefinition('graduation-30', ['de' => 'Fotografiert die leere Aula oder das leere Klassenzimmer.', 'en' => 'Photograph the empty auditorium or the empty classroom.'], $emotions['Besinnlichkeit'], 300),
$this->taskDefinition('graduation-31', ['de' => 'Macht ein Foto, auf dem ihr so tut, als würdet ihr die Schule "sprengen".', 'en' => 'Take a photo pretending to "blow up" the school.'], $emotions['Ekstase'], 310),
$this->taskDefinition('graduation-32', ['de' => 'Findet jemanden, der während der Rede des Schulleiters eingeschlafen ist.', 'en' => 'Find someone who fell asleep during the principal\'s speech.'], $emotions['Überraschung'], 320),
$this->taskDefinition('graduation-33', ['de' => 'Macht ein Foto mit der Person, von der ihr am meisten abgeschrieben habt (oder umgekehrt).', 'en' => 'Take a photo with the person you copied from the most (or vice versa).'], $emotions['Teamgeist'], 330),
$this->taskDefinition('graduation-34', ['de' => 'Fotografiert die Dekoration der Abschlussfeier.', 'en' => 'Photograph the decoration of the graduation ceremony.'], $emotions['Freude'], 340),
$this->taskDefinition('graduation-35', ['de' => 'Macht ein Foto, das den Sonnenaufgang nach einer langen Partynacht zeigt.', 'en' => 'Take a photo that shows the sunrise after a long night of partying.'], $emotions['Nostalgie'], 350),
$this->taskDefinition('graduation-36', ['de' => 'Findet den Lehrer, der euch am meisten inspiriert hat.', 'en' => 'Find the teacher who inspired you the most.'], $emotions['Rührung'], 360),
$this->taskDefinition('graduation-37', ['de' => 'Macht ein Foto, das euren Traumjob darstellt.', 'en' => 'Take a photo that represents your dream job.'], $emotions['Besinnlichkeit'], 370),
$this->taskDefinition('graduation-38', ['de' => 'Fotografiert die peinlichste Tanz-Einlage des Abends.', 'en' => 'Photograph the most embarrassing dance performance of the evening.'], $emotions['Ekstase'], 380),
$this->taskDefinition('graduation-39', ['de' => 'Macht ein Foto mit jemandem, der plant, die Welt zu bereisen.', 'en' => 'Take a photo with someone who plans to travel the world.'], $emotions['Überraschung'], 390),
$this->taskDefinition('graduation-40', ['de' => 'Findet euren Sitznachbarn aus der letzten Reihe.', 'en' => 'Find your seatmate from the back row.'], $emotions['Nostalgie'], 400),
$this->taskDefinition('graduation-41', ['de' => 'Macht ein Foto, das den Moment des Abschieds von einem guten Freund festhält.', 'en' => 'Take a photo that captures the moment of saying goodbye to a good friend.'], $emotions['Rührung'], 410),
$this->taskDefinition('graduation-42', ['de' => 'Fotografiert das Buffet oder die Getränkebar.', 'en' => 'Photograph the buffet or the beverage bar.'], $emotions['Freude'], 420),
$this->taskDefinition('graduation-43', ['de' => 'Macht ein Foto, das zeigt, wie ihr eure Schulbücher "wegwerft".', 'en' => 'Take a photo that shows you "throwing away" your school books.'], $emotions['Freude'], 430),
$this->taskDefinition('graduation-44', ['de' => 'Findet jemanden, der den gleichen Notendurchschnitt hat wie ihr.', 'en' => 'Find someone who has the same grade point average as you.'], $emotions['Teamgeist'], 440),
$this->taskDefinition('graduation-45', ['de' => 'Macht ein Foto, das die Aufregung vor dem Betreten der Bühne zeigt.', 'en' => 'Take a photo that shows the excitement before going on stage.'], $emotions['Stolz'], 450),
$this->taskDefinition('graduation-46', ['de' => 'Fotografiert die stolzen Gesichter eurer Großeltern.', 'en' => 'Photograph the proud faces of your grandparents.'], $emotions['Rührung'], 460),
$this->taskDefinition('graduation-47', ['de' => 'Macht ein Foto, das "Die Welt gehört uns" schreit.', 'en' => 'Take a photo that screams "The world is ours".'], $emotions['Ekstase'], 470),
$this->taskDefinition('graduation-48', ['de' => 'Findet einen ruhigen Moment und reflektiert über die vergangene Zeit.', 'en' => 'Find a quiet moment and reflect on the past time.'], $emotions['Besinnlichkeit'], 480),
$this->taskDefinition('graduation-49', ['de' => 'Macht ein Foto mit der Person, die ihr am meisten vermissen werdet.', 'en' => 'Take a photo with the person you will miss the most.'], $emotions['Liebe'], 490),
$this->taskDefinition('graduation-50', ['de' => 'Macht ein letztes gemeinsames Foto als "Abschlussklasse von...".', 'en' => 'Take a final group photo as "Graduating Class of...".'], $emotions['Teamgeist'], 500),
],
],
'corporate' => [
'event_type' => ['slug' => 'corporate', 'name' => ['de' => 'Firma', 'en' => 'Corporate'], 'icon' => 'lucide-briefcase'],
'collection' => [
'slug' => 'corporate-classics-2025',
'name' => ['de' => 'Firmen-Aufgaben', 'en' => 'Corporate Tasks'],
'description' => ['de' => '50 Aufgaben für das nächste Firmenevent.', 'en' => '50 tasks for the next corporate event.'],
'is_default' => true,
'position' => 60,
],
'base_tasks' => [
$this->taskDefinition('corporate-1', ['de' => 'Macht ein Foto mit eurem direkten Team.', 'en' => 'Take a photo with your direct team.'], $emotions['Teamgeist'], 10),
$this->taskDefinition('corporate-2', ['de' => 'Findet den CEO oder einen hochrangigen Manager für ein Selfie.', 'en' => 'Find the CEO or a senior manager for a selfie.'], $emotions['Stolz'], 20),
$this->taskDefinition('corporate-3', ['de' => 'Macht ein Foto mit jemandem aus einer anderen Abteilung, den ihr heute kennengelernt habt.', 'en' => 'Take a photo with someone from another department that you met today.'], $emotions['Teamgeist'], 30),
$this->taskDefinition('corporate-4', ['de' => 'Fotografiert das Firmenlogo aus einer kreativen Perspektive.', 'en' => 'Photograph the company logo from a creative perspective.'], $emotions['Stolz'], 40),
$this->taskDefinition('corporate-5', ['de' => 'Macht ein Foto, auf dem ihr auf einen gemeinsamen Erfolg anstoßt.', 'en' => 'Take a photo toasting to a common success.'], $emotions['Stolz'], 50),
$this->taskDefinition('corporate-6', ['de' => 'Findet die Person, die am längsten im Unternehmen ist.', 'en' => 'Find the person who has been with the company the longest.'], $emotions['Nostalgie'], 60),
$this->taskDefinition('corporate-7', ['de' => 'Macht ein Foto mit einem neuen Mitarbeiter.', 'en' => 'Take a photo with a new employee.'], $emotions['Teamgeist'], 70),
$this->taskDefinition('corporate-8', ['de' => 'Fotografiert einen Moment intensiven Networkings.', 'en' => 'Photograph a moment of intense networking.'], $emotions['Besinnlichkeit'], 80),
$this->taskDefinition('corporate-9', ['de' => 'Macht ein Foto, das die Werte eures Unternehmens darstellt.', 'en' => 'Take a photo that represents your company\'s values.'], $emotions['Besinnlichkeit'], 90),
$this->taskDefinition('corporate-10', ['de' => 'Findet die Person mit dem lustigsten Jobtitel.', 'en' => 'Find the person with the funniest job title.'], $emotions['Überraschung'], 100),
$this->taskDefinition('corporate-11', ['de' => 'Macht ein Foto, das die gute Stimmung auf dem Event einfängt.', 'en' => 'Take a photo that captures the good mood at the event.'], $emotions['Freude'], 110),
$this->taskDefinition('corporate-12', ['de' => 'Fotografiert die Präsentation oder Rede, die euch am meisten inspiriert hat.', 'en' => 'Photograph the presentation or speech that inspired you the most.'], $emotions['Besinnlichkeit'], 120),
$this->taskDefinition('corporate-13', ['de' => 'Macht ein Foto mit eurem "Work-Buddy" oder Büro-Freund.', 'en' => 'Take a photo with your "work buddy" or office friend.'], $emotions['Liebe'], 130),
$this->taskDefinition('corporate-14', ['de' => 'Findet das Team, das einen Preis oder eine Auszeichnung gewonnen hat.', 'en' => 'Find the team that won a prize or award.'], $emotions['Stolz'], 140),
$this->taskDefinition('corporate-15', ['de' => 'Macht ein Foto, das "Innovation" symbolisiert.', 'en' => 'Take a photo that symbolizes "innovation".'], $emotions['Überraschung'], 150),
$this->taskDefinition('corporate-16', ['de' => 'Fotografiert das Buffet und stellt euren Lieblingsteller zusammen.', 'en' => 'Photograph the buffet and put together your favorite plate.'], $emotions['Freude'], 160),
$this->taskDefinition('corporate-17', ['de' => 'Macht ein Foto mit jemandem, der die gleiche Krawatte oder das gleiche Kleid trägt.', 'en' => 'Take a photo with someone wearing the same tie or dress.'], $emotions['Überraschung'], 170),
$this->taskDefinition('corporate-18', ['de' => 'Findet die Person, die für die Organisation des Events verantwortlich ist, und bedankt euch.', 'en' => 'Find the person responsible for organizing the event and thank them.'], $emotions['Teamgeist'], 180),
$this->taskDefinition('corporate-19', ['de' => 'Macht ein Foto, das die Internationalität eures Unternehmens zeigt (mit Kollegen aus verschiedenen Ländern).', 'en' => 'Take a photo that shows the internationality of your company (with colleagues from different countries).'], $emotions['Teamgeist'], 190),
$this->taskDefinition('corporate-20', ['de' => 'Fotografiert einen Moment herzhaften Lachens unter Kollegen.', 'en' => 'Photograph a moment of hearty laughter among colleagues.'], $emotions['Freude'], 200),
$this->taskDefinition('corporate-21', ['de' => 'Macht ein Foto, auf dem ihr so tut, als würdet ihr einen wichtigen Vertrag unterzeichnen.', 'en' => 'Take a photo pretending to sign an important contract.'], $emotions['Stolz'], 210),
$this->taskDefinition('corporate-22', ['de' => 'Findet die Person, die am besten tanzen kann.', 'en' => 'Find the person who can dance the best.'], $emotions['Ekstase'], 220),
$this->taskDefinition('corporate-23', ['de' => 'Macht ein Foto, das die "Work-Life-Balance" auf dem Event darstellt.', 'en' => 'Take a photo that represents the "work-life balance" at the event.'], $emotions['Freude'], 230),
$this->taskDefinition('corporate-24', ['de' => 'Fotografiert die Location oder die Dekoration, die euch am besten gefällt.', 'en' => 'Photograph the location or the decoration that you like the most.'], $emotions['Besinnlichkeit'], 240),
$this->taskDefinition('corporate-25', ['de' => 'Macht ein Foto mit eurem Mentor oder jemandem, von dem ihr viel gelernt habt.', 'en' => 'Take a photo with your mentor or someone you have learned a lot from.'], $emotions['Rührung'], 250),
$this->taskDefinition('corporate-26', ['de' => 'Findet die Person, die den weitesten Weg zum Event hatte.', 'en' => 'Find the person who had the longest way to the event.'], $emotions['Stolz'], 260),
$this->taskDefinition('corporate-27', ['de' => 'Macht ein Foto, das einen Moment der Zusammenarbeit zeigt.', 'en' => 'Take a photo that shows a moment of collaboration.'], $emotions['Teamgeist'], 270),
$this->taskDefinition('corporate-28', ['de' => 'Fotografiert die "Goodie-Bag" oder das Werbegeschenk.', 'en' => 'Photograph the "goodie bag" or the promotional gift.'], $emotions['Überraschung'], 280),
$this->taskDefinition('corporate-29', ['de' => 'Macht ein Foto mit jemandem aus dem IT-Support sie sind die wahren Helden.', 'en' => 'Take a photo with someone from IT support they are the real heroes.'], $emotions['Teamgeist'], 290),
$this->taskDefinition('corporate-30', ['de' => 'Findet die Person, die immer Kaffee für alle kocht.', 'en' => 'Find the person who always makes coffee for everyone.'], $emotions['Liebe'], 300),
$this->taskDefinition('corporate-31', ['de' => 'Macht ein Foto, das den Erfolg des letzten Quartals feiert.', 'en' => 'Take a photo that celebrates the success of the last quarter.'], $emotions['Ekstase'], 310),
$this->taskDefinition('corporate-32', ['de' => 'Fotografiert einen Moment, in dem jemand eine anerkennende Rede hält.', 'en' => 'Photograph a moment when someone gives an appreciative speech.'], $emotions['Rührung'], 320),
$this->taskDefinition('corporate-33', ['de' => 'Macht ein Foto, das die Zukunft des Unternehmens symbolisiert.', 'en' => 'Take a photo that symbolizes the future of the company.'], $emotions['Besinnlichkeit'], 330),
$this->taskDefinition('corporate-34', ['de' => 'Findet die Person, die am elegantesten gekleidet ist.', 'en' => 'Find the person who is most elegantly dressed.'], $emotions['Stolz'], 340),
$this->taskDefinition('corporate-35', ['de' => 'Macht ein Foto, das den "Feierabend"-Moment nach dem offiziellen Teil zeigt.', 'en' => 'Take a photo that shows the "end of work" moment after the official part.'], $emotions['Ekstase'], 350),
$this->taskDefinition('corporate-36', ['de' => 'Fotografiert die Visitenkarten, die ihr gesammelt habt.', 'en' => 'Photograph the business cards you have collected.'], $emotions['Nostalgie'], 360),
$this->taskDefinition('corporate-37', ['de' => 'Macht ein Foto mit jemandem, mit dem ihr nur per E-Mail kommuniziert habt und den ihr jetzt persönlich trefft.', 'en' => 'Take a photo with someone you have only communicated with via email and whom you are now meeting in person.'], $emotions['Überraschung'], 370),
$this->taskDefinition('corporate-38', ['de' => 'Findet die Person, die am meisten zum Erfolg eures letzten Projekts beigetragen hat.', 'en' => 'Find the person who contributed the most to the success of your last project.'], $emotions['Stolz'], 380),
$this->taskDefinition('corporate-39', ['de' => 'Macht ein Foto, das die entspannte Seite eures Chefs zeigt.', 'en' => 'Take a photo that shows the relaxed side of your boss.'], $emotions['Überraschung'], 390),
$this->taskDefinition('corporate-40', ['de' => 'Fotografiert die Band oder den DJ.', 'en' => 'Photograph the band or the DJ.'], $emotions['Freude'], 400),
$this->taskDefinition('corporate-41', ['de' => 'Macht ein Foto, das den Team-Zusammenhalt perfekt einfängt.', 'en' => 'Take a photo that perfectly captures team spirit.'], $emotions['Teamgeist'], 410),
$this->taskDefinition('corporate-42', ['de' => 'Findet einen ehemaligen Mitarbeiter, der zu Besuch ist.', 'en' => 'Find a former employee who is visiting.'], $emotions['Nostalgie'], 420),
$this->taskDefinition('corporate-43', ['de' => 'Macht ein Foto, das eure Motivation für das nächste Geschäftsjahr zeigt.', 'en' => 'Take a photo that shows your motivation for the next business year.'], $emotions['Stolz'], 430),
$this->taskDefinition('corporate-44', ['de' => 'Fotografiert einen Moment, in dem neue Ideen gesponnen werden.', 'en' => 'Photograph a moment when new ideas are being spun.'], $emotions['Besinnlichkeit'], 440),
$this->taskDefinition('corporate-45', ['de' => 'Macht ein Foto mit der Person, die euch heute am meisten zum Lachen gebracht hat.', 'en' => 'Take a photo with the person who made you laugh the most today.'], $emotions['Freude'], 450),
$this->taskDefinition('corporate-46', ['de' => 'Findet die "gute Seele" eurer Abteilung.', 'en' => 'Find the "good soul" of your department.'], $emotions['Liebe'], 460),
$this->taskDefinition('corporate-47', ['de' => 'Macht ein Foto, das die Erleichterung nach einer erfolgreichen Präsentation zeigt.', 'en' => 'Take a photo that shows the relief after a successful presentation.'], $emotions['Ekstase'], 470),
$this->taskDefinition('corporate-48', ['de' => 'Fotografiert einen rührenden Moment, z.B. die Verabschiedung eines langjährigen Kollegen.', 'en' => 'Photograph a touching moment, e.g. the farewell of a long-standing colleague.'], $emotions['Rührung'], 480),
$this->taskDefinition('corporate-49', ['de' => 'Macht ein Foto, das zeigt, dass eure Firma mehr als nur ein Arbeitsplatz ist.', 'en' => 'Take a photo that shows that your company is more than just a place to work.'], $emotions['Liebe'], 490),
$this->taskDefinition('corporate-50', ['de' => 'Macht ein letztes Gruppenfoto, das die Energie des Events festhält.', 'en' => 'Take a final group photo that captures the energy of the event.'], $emotions['Teamgeist'], 500),
],
],
];
}
private function autoTaskSeeds(): array
private function taskDefinition(string $slug, array $title, ?array $emotion, int $sortOrder): array
{
return [
'wedding' => [
$this->autoSeed('dancefloor',
['de' => 'Dancefloor-Glück #{n}', 'en' => 'Dancefloor joy #{n}'],
['de' => 'Fange eine wilde Tanzszene ein, die die Energie der Gäste zeigt.', 'en' => 'Capture a wild dance scene packed with guest energy.'],
['de' => 'Nutze eine lange Belichtungszeit für Lichtstreifen.', 'en' => 'Use a longer exposure to create light trails.'],
['name' => ['de' => 'Ekstase', 'en' => 'Euphoria'], 'icon' => 'lucide-stars', 'color' => '#a855f7'],
'medium'
),
$this->autoSeed('sparkler',
['de' => 'Wunderkerzen-Story #{n}', 'en' => 'Sparkler story #{n}'],
['de' => 'Erzähle die Geschichte eines funkelnden Moments mit mindestens drei Bildern.', 'en' => 'Tell the story of a sparkling moment in three frames.'],
['de' => 'Variiere zwischen Detailaufnahme, Halbtotaler und Reaktion.', 'en' => 'Mix a detail shot, a medium frame, and a reaction close-up.'],
['name' => ['de' => 'Staunen', 'en' => 'Awe'], 'icon' => 'lucide-wand', 'color' => '#f97316'],
'medium'
),
$this->autoSeed('first-dance-detail',
['de' => 'Detail beim Hochzeitstanz #{n}', 'en' => 'First-dance detail #{n}'],
['de' => 'Suche ein kleines Detail während des Hochzeitstanzes Hände, Schuhe, Accessoires.', 'en' => 'Spot a tiny detail during the first dance hands, shoes or accessories.'],
['de' => 'Nutze starkes Bokeh für den Hintergrund.', 'en' => 'Use heavy bokeh to blur the background.'],
['name' => ['de' => 'Zärtlichkeit', 'en' => 'Tenderness'], 'icon' => 'lucide-feather', 'color' => '#fb7185'],
'easy'
),
$this->autoSeed('guest-story',
['de' => 'Gästegeschichte #{n}', 'en' => 'Guest story #{n}'],
['de' => 'Dokumentiere eine Gruppe von Gästen, wie sie miteinander interagiert.', 'en' => 'Document a group of guests interacting naturally.'],
['de' => 'Fotografiere die Gruppe aus zwei Perspektiven.', 'en' => 'Capture the group from two perspectives.'],
['name' => ['de' => 'Freundschaft', 'en' => 'Friendship'], 'icon' => 'lucide-users', 'color' => '#38bdf8'],
'easy'
),
],
'birthday' => [
$this->autoSeed('candle-wish',
['de' => 'Kerzenwunsch #{n}', 'en' => 'Candle wish #{n}'],
['de' => 'Halte den Moment fest, in dem der Wunsch ausgesprochen wird.', 'en' => 'Capture the second the wish is made.'],
['de' => 'Lass das Motiv in den Kerzenlichtschein eintauchen.', 'en' => 'Bathe the scene in candlelight glow.'],
['name' => ['de' => 'Freude', 'en' => 'Joy'], 'icon' => 'lucide-sparkles', 'color' => '#facc15'],
'easy'
),
$this->autoSeed('gift-reaction',
['de' => 'Geschenk-Reaktion #{n}', 'en' => 'Gift reaction #{n}'],
['de' => 'Fange die spontanste Reaktion auf ein Geschenk ein.', 'en' => 'Capture the most spontaneous gift reaction.'],
['de' => 'Versuche eine Serienaufnahme für echte Emotionen.', 'en' => 'Use burst mode for authentic emotion.'],
['name' => ['de' => 'Überraschung', 'en' => 'Surprise'], 'icon' => 'lucide-gift', 'color' => '#f472b6'],
'easy'
),
$this->autoSeed('birthday-anthem',
['de' => 'Geburtstagshymne #{n}', 'en' => 'Birthday anthem #{n}'],
['de' => 'Dokumentiere das Mitsingen eines Liedes inklusive Stimmung im Raum.', 'en' => 'Document everyone singing a song and the overall mood.'],
['de' => 'Fokussiere auf die Person, die am lautesten singt.', 'en' => 'Focus on whoever sings the loudest.'],
['name' => ['de' => 'Lebensfreude', 'en' => 'Delight'], 'icon' => 'lucide-music', 'color' => '#60a5fa'],
'medium'
),
],
'christmas' => [
$this->autoSeed('ornament-closeup',
['de' => 'Ornament-Kunstwerk #{n}', 'en' => 'Ornament art #{n}'],
['de' => 'Inszeniere ein besonderes Ornament in Nahaufnahme.', 'en' => 'Stage a special ornament in a moody close-up.'],
['de' => 'Lass warme Lichter im Hintergrund bokeh-artig wirken.', 'en' => 'Let warm lights blur softly in the background.'],
['name' => ['de' => 'Staunen', 'en' => 'Wonder'], 'icon' => 'lucide-sparkles', 'color' => '#38bdf8'],
'easy'
),
$this->autoSeed('carol-chorus',
['de' => 'Singender Chor #{n}', 'en' => 'Carolling chorus #{n}'],
['de' => 'Zeige eine Gruppe beim Singen eines Weihnachtsliedes.', 'en' => 'Highlight a group singing a seasonal song.'],
['de' => 'Nutze eine Panorama-Aufnahme für alle Beteiligten.', 'en' => 'Use a panorama framing to include everyone.'],
['name' => ['de' => 'Gemeinschaft', 'en' => 'Togetherness'], 'icon' => 'lucide-users', 'color' => '#22c55e'],
'medium'
),
$this->autoSeed('wishlist-doodle',
['de' => 'Wunschlisten-Doodle #{n}', 'en' => 'Wishlist doodle #{n}'],
['de' => 'Fotografiere eine improvisierte Wunschliste inklusive Zeichnungen.', 'en' => 'Photograph an improvised wishlist complete with doodles.'],
['de' => 'Lege die Liste auf Holz- oder Stoffoberflächen für Wärme.', 'en' => 'Place the list on wood or fabric for extra warmth.'],
['name' => ['de' => 'Hoffnung', 'en' => 'Hope'], 'icon' => 'lucide-heart', 'color' => '#f97316'],
'easy'
),
],
'corporate' => [
$this->autoSeed('team-brainstorm',
['de' => 'Brainstorm-Blitzlicht #{n}', 'en' => 'Brainstorm spotlight #{n}'],
['de' => 'Halte eine kreative Idee auf einem Whiteboard plus das Team dahinter fest.', 'en' => 'Capture a clever whiteboard idea with the team behind it.'],
['de' => 'Arbeite mit Spiegelungen im Glas oder Bildschirm.', 'en' => 'Play with reflections on glass or screens.'],
['name' => ['de' => 'Innovation', 'en' => 'Innovation'], 'icon' => 'lucide-lightbulb', 'color' => '#facc15'],
'medium'
),
$this->autoSeed('watercooler-moment',
['de' => 'Watercooler-Moment #{n}', 'en' => 'Watercooler moment #{n}'],
['de' => 'Zeige Kollegen beim lockeren Austausch abseits des Meetings.', 'en' => 'Show teammates chatting casually away from the meeting table.'],
['de' => 'Fokussiere auf Gestik und Körpersprache.', 'en' => 'Focus on gestures and body language.'],
['name' => ['de' => 'Leichtigkeit', 'en' => 'Ease'], 'icon' => 'lucide-coffee', 'color' => '#60a5fa'],
'easy'
),
$this->autoSeed('celebration-confetti',
['de' => 'Konfetti-Erfolg #{n}', 'en' => 'Confetti success #{n}'],
['de' => 'Inszeniere einen kleinen Konfettiwurf als Symbol für Team-Erfolg.', 'en' => 'Stage a mini confetti throw to celebrate team success.'],
['de' => 'Arbeite mit schneller Verschlusszeit für eingefrorene Partikel.', 'en' => 'Use a fast shutter to freeze the confetti.'],
['name' => ['de' => 'Erfolg', 'en' => 'Success'], 'icon' => 'lucide-flag', 'color' => '#a855f7'],
'medium'
),
],
'default' => [
$this->autoSeed('story-fragments',
['de' => 'Story-Fragmente #{n}', 'en' => 'Story fragments #{n}'],
['de' => 'Finde drei kleine Details, die zusammen eine Geschichte ergeben.', 'en' => 'Find three small details that build one story.'],
['de' => 'Kombiniere Nahaufnahmen mit einem Übersichtsfoto.', 'en' => 'Combine close-ups with one establishing shot.'],
['name' => ['de' => 'Neugier', 'en' => 'Curiosity'], 'icon' => 'lucide-eye', 'color' => '#38bdf8'],
'easy'
),
],
];
}
private function taskDefinition(
string $slug,
array $title,
array $description,
array $example,
?array $emotion,
string $difficulty,
int $sortOrder
): array {
return [
'slug' => $slug,
'title' => $title,
'description' => $description,
'example' => $example,
'description' => null,
'example' => null,
'emotion' => $emotion,
'difficulty' => $difficulty,
'difficulty' => 'easy',
'sort_order' => $sortOrder,
];
}
private function autoSeed(
string $slug,
array $title,
array $description,
array $example,
?array $emotion,
string $difficulty
): array {
return [
'slug' => $slug,
'title' => $title,
'description' => $description,
'example' => $example,
'emotion' => $emotion,
'difficulty' => $difficulty,
];
}
private function upsertTask(TaskCollection $collection, EventType $eventType, array $definition, int $sortOrder): Task
{
$emotion = $this->ensureEmotion($definition['emotion'] ?? [], $eventType->id);
@@ -464,81 +481,6 @@ class TaskCollectionsSeeder extends Seeder
return $task;
}
private function ensureMinimumTasks(
TaskCollection $collection,
EventType $eventType,
array &$syncPayload,
int $existingCount,
int $minimum,
string $eventTypeSlug
): void {
$needed = $minimum - $existingCount;
if ($needed <= 0) {
return;
}
$seeds = $this->autoTaskSeeds()[$eventTypeSlug] ?? $this->autoTaskSeeds()['default'];
if (empty($seeds)) {
$seeds = $this->autoTaskSeeds()['default'];
}
$baseCount = $existingCount;
for ($i = 0; $i < $needed; $i++) {
$seed = $seeds[$i % count($seeds)];
$sequence = $baseCount + $i + 1;
$slug = Str::slug(sprintf('%s-%s-%s', $eventType->slug ?? $eventTypeSlug, $seed['slug'], $sequence));
$taskDefinition = [
'slug' => $slug,
'title' => [
'de' => str_replace('{n}', (string) $sequence, $seed['title']['de']),
'en' => str_replace('{n}', (string) $sequence, $seed['title']['en']),
],
'description' => [
'de' => str_replace('{n}', (string) $sequence, $seed['description']['de']),
'en' => str_replace('{n}', (string) $sequence, $seed['description']['en']),
],
'example' => [
'de' => str_replace('{n}', (string) $sequence, $seed['example']['de']),
'en' => str_replace('{n}', (string) $sequence, $seed['example']['en']),
],
'emotion' => $seed['emotion'] ?? null,
'difficulty' => $seed['difficulty'] ?? 'easy',
'priority' => $seed['priority'] ?? 'medium',
'sort_order' => 500 + ($sequence * 5),
];
$task = $this->upsertTask($collection, $eventType, $taskDefinition, $taskDefinition['sort_order']);
$syncPayload[$task->id] = ['sort_order' => $taskDefinition['sort_order']];
}
}
private function assignOrphanTasks(array $collectionMap): void
{
if (empty($collectionMap)) {
return;
}
Task::whereNull('collection_id')
->orderBy('id')
->chunkById(100, function ($tasks) use ($collectionMap) {
foreach ($tasks as $task) {
$collection = $collectionMap[$task->event_type_id] ?? Arr::first($collectionMap);
if (! $collection) {
continue;
}
$task->collection_id = $collection->id;
$task->save();
$collection->tasks()->syncWithoutDetaching([
$task->id => ['sort_order' => $task->sort_order ?? 0],
]);
}
});
}
protected function ensureEventType(array $definition): EventType
{
return EventType::updateOrCreate(
@@ -586,4 +528,4 @@ class TaskCollectionsSeeder extends Seeder
return $emotion;
}
}
}