--- import { getCollection } from 'astro:content'; import Base from '../layouts/Base.astro'; const posts = (await getCollection('news', ({ data }) => !data.draft)) .sort((a, b) => b.data.date.valueOf() - a.data.date.valueOf()) .slice(0, 3); const fmt = (d) => new Intl.DateTimeFormat('en-GB', { dateStyle: 'long' }).format(d); const iso = (d) => d.toISOString().slice(0, 10); // Services per the Science Portal spec; unbuilt ones are labelled, never faked. const services = [ { title: 'Proposals', href: '/proposals', desc: 'Submit observation proposals, including ToO / MWL requests.', badge: 'mock' }, { title: 'Data Explorer', href: 'https://padc-ctao-data-explorer.obspm.fr/', ext: true, desc: 'Search and download CTAO science data products.', badge: 'ext' }, { title: 'Dashboard', href: '/dashboard', desc: 'Your proposals, data products and support tickets in one place.', badge: 'mock' }, { title: 'User Support', href: '/support', desc: 'Help desk, FAQ, user forum and mailing lists.', badge: 'mock' }, { title: 'Software', desc: 'Science analysis tools and pipelines.', badge: 'tbd' }, { title: 'Documentation', desc: 'User guides and technical documentation.', badge: 'tbd' }, ]; ---
Cherenkov Telescope Array Observatory

CTAO Science Portal

Exploring the Universe at the Highest Energies

{/* Surface rhythm (DESIGN.md): services on Moon Gray, editorial news on white */}

Services

{services.map((s) => (

{s.href ? (s.ext ? {s.title} : {s.title}) : s.title}

{s.desc}

{s.badge === 'mock' && Mock} {s.badge === 'ext' && External — LUX team} {s.badge === 'tbd' && Planned (TBD)}
))}

Latest news

All news →
{posts.map((post) => (
{post.data.cover && }
{post.data.category}

{post.data.title}

{post.data.description}

{post.data.author} ·
))}