Skip to content

DDS-014L: Add public Getting Started hub - #30

Merged
klaasnicolaas merged 2 commits into
mainfrom
codex/dds-014l-getting-started
Jul 26, 2026
Merged

DDS-014L: Add public Getting Started hub#30
klaasnicolaas merged 2 commits into
mainfrom
codex/dds-014l-getting-started

Conversation

@klaasnicolaas

Copy link
Copy Markdown
Member

What changed

  • Add a code-owned /getting-started knowledge hub with three focused guides:
    • what FPV flying is and how to start
    • choosing compatible equipment and simulators
    • preparing for a first DDS training
  • Keep the guides intentionally informational and evergreen, without live event or season data.
  • Add contextual entry points from the public navigation, footer, homepage, event pages, location pages, and contact page.
  • Reorganize the public navigation with an Informatie submenu for Over DDS, Projecten, and Partners.
  • Add WhatsApp, Discord, and Facebook community destinations to the contact experience.
  • Track validated entry-source query values for the Getting Started hub.
  • Extend public page patterns for compact sections, alternating section tones, and wide content.
  • Add focused feature and browser coverage for routing, SEO, navigation, content, responsive layout, community links, and entry-source behavior.

Why

New pilots need a readable path from first interest to participating at DDS without being overloaded or relying on dated event and season content. The new hub groups the essential explanation into a small number of coherent pages and reflects the actual training flow: register, pay when needed, help build the track, walk the track, fly in heats, and clean up together.

User impact

Visitors can understand FPV, compare starter equipment and simulators, find DDS community channels, and prepare for a training through consistent entry points across the public site.

Validation

  • php artisan test --compact — 349 tests, 3,454 assertions passed
  • composer run types:check — PHPStan passed
  • composer run lint:check — Pint passed
  • scoped ESLint across all changed TypeScript/React files — passed
  • scoped Prettier check across all changed TypeScript/React files — passed
  • npm run types:check — passed
  • npm run build — passed
  • git diff --check — passed

Local CI caveats

The aggregate composer run ci:check command locally scans ignored .claude/worktrees through eslint ., producing unrelated lint output outside this repository diff. The repository-wide Prettier check also reports four unchanged baseline files. All files changed by this PR pass their scoped ESLint and Prettier checks.

@klaasnicolaas
klaasnicolaas marked this pull request as ready for review July 26, 2026 20:06
Copilot AI review requested due to automatic review settings July 26, 2026 20:06

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new public Getting Started knowledge hub at /getting-started, backed by a code-owned guide catalogue and new Inertia React pages, and wires it into the public site navigation and contact experience. It also extends the existing public page layout/pattern components to support the new content structure, with added feature + browser coverage.

Changes:

  • Add /getting-started hub + 3 guide detail pages, with backend controller/catalogue support and SEO metadata.
  • Rework public navigation to include “Starten met FPV” and group “Over DDS / Projecten / Partners” under an “Informatie” submenu; add community channel section to Contact.
  • Add Feature + Browser test coverage for routing, SEO, navigation, content, and entry-source behavior.

Reviewed changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/Feature/PublicStaticPagesTest.php Adds regression coverage for house rules wording/contract.
tests/Feature/PublicGettingStartedPageTest.php Adds feature coverage for Getting Started routes, SEO, guide catalogue integrity, and entry-source sanitization.
tests/Browser/PublicSiteTest.php Adds browser coverage for navigation restructuring and Getting Started content expectations.
routes/web.php Registers the new public Getting Started routes.
resources/js/types/index.ts Re-exports Getting Started TS types.
resources/js/types/getting-started.ts Adds TS types for entry-source + guide summaries.
resources/js/pages/welcome.tsx Adds homepage entry point to Getting Started hub.
resources/js/pages/public/location-show.tsx Adds location page entry point to the hub.
resources/js/pages/public/getting-started/index.tsx Implements the hub index UI (hero, guide cards, quick answers, CTAs).
resources/js/pages/public/getting-started/first-fpv-flight.tsx Implements guide page: FPV basics and simulator recommendations.
resources/js/pages/public/getting-started/first-dds-event.tsx Implements guide page: training flow and event preparation.
resources/js/pages/public/getting-started/choosing-equipment.tsx Implements guide page: equipment compatibility and safety.
resources/js/pages/public/events-index.tsx Adds events index entry point to the relevant guide.
resources/js/pages/public/event-show.tsx Adds training event entry point to the relevant guide.
resources/js/pages/public/contact.tsx Adds hub entry point + new community channel section/links.
resources/js/layouts/public-layout.tsx Reorganizes public nav (desktop + mobile) with “Informatie” submenu.
resources/js/components/public/public-patterns.tsx Extends public layout primitives (separator tone, compact/alternate content patterns).
config/seo.php Adds SEO config for the Getting Started hub and updates house rules description wording.
config/public_pages.php Updates house rules eyebrow/body wording to align with “rules” terminology.
config/getting_started_guides.php Adds code-owned guide catalogue entries (slug/order/metadata).
app/Support/GettingStartedGuides.php Adds config-backed guide catalogue loader/sorter + lookup.
app/Support/GettingStartedGuide.php Adds typed guide value object for catalogue entries.
app/Http/Controllers/Public/GettingStartedController.php Adds controller for hub index + guide detail rendering and entry-source validation.
app/Enums/GettingStartedEntrySource.php Adds enum of validated entry-source values.
Comments suppressed due to low confidence (2)

resources/js/pages/public/getting-started/index.tsx:89

  • This link always appends a source query value via guideEntrySource, even when the page was loaded without a valid entry source. Use the conditional guideLinkOptions so direct visitors don’t get mislabeled as navigation.
                        label: 'Start bij de basis',
                        href: gettingStartedShow.url('first-fpv-flight', {
                            query: { source: guideEntrySource },
                        }),

resources/js/pages/public/getting-started/index.tsx:177

  • These guide links currently always append ?source=navigation for direct visitors because guideEntrySource defaults when entrySource is null. Use the shared conditional guideLinkOptions so the query param is only present when a validated source was provided.
                                    href={gettingStartedShow(guide.slug, {
                                        query: {
                                            source: guideEntrySource,
                                        },
                                    })}

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread resources/js/layouts/public-layout.tsx
Comment thread resources/js/pages/public/getting-started/index.tsx Outdated
@klaasnicolaas
klaasnicolaas merged commit 5993f47 into main Jul 26, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants