[ 'title' => $page->intro_title()->value(), 'text' => $page->intro_text()->value() ], 'projects' => $page->children()->listed()->map(function($project) { return [ 'title' => $project->title()->value(), 'slug' => $project->slug(), 'url' => $project->url(), 'tagline' => $project->tagline()->value(), 'description' => $project->description()->value(), 'cover' => $project->cover()->toFile()?->url(), 'cover_thumb' => $project->cover()->toFile()?->thumb(['width' => 100])->url(), 'gallery' => $project->files()->filterBy('template', 'image')->limit(5)->map(function($img) { return $img->url(); })->values(), 'impact' => $project->impact()->split(','), 'category' => $project->category()->value(), 'platforms' => $project->platforms()->split(','), 'apple_link' => $project->apple_link()->value(), 'android_link' => $project->android_link()->value() ]; })->values() ]; $pageData = array_merge($genericData, $specificData); header('Content-Type: application/json'); echo json_encode($pageData);