Context
The authenticated app around the builder: navigating projects, browsing reports, and reading a published report well. loghq's dashboard.stx / settings / projects/* views and default.stx layout are the structural reference; the visual language comes from #3.
Scope
- App layout (
resources/layouts/default.stxequivalent): sidebar or topbar nav (projects, reports, integrations, settings, billing), user menu, theme toggle,AuthGuardSSR pattern from loghq. - Projects index + create/settings pages (settings themselves largely land with #4; this issue owns the shell and navigation coherence).
- Reports index per project: published/draft states, origin badges (user vs auto-template from #14), create (goes to builder #12), duplicate, archive (soft delete per #9).
- Report viewer (
/reports/{slug}): renders the published snapshot through the chart library (#11) with a global date-range picker and a global filter bar that override block defaults (server round-trip through #10; state in the URL so views are linkable); per-block "explain" popover showing the block's query in plain words; refresh with last-updated stamp. - Integration onboarding surface: a project page showing the ingest key, a live "waiting for first event" listener that flips when data arrives (poll or
@stacksjs/realtimeif it is genuinely cheap), and copy-paste snippets for curl / Stacks (#7) / Laravel (#8). - Empty states everywhere a list can be empty (no projects, no reports, no events yet) - designed per
stacks-design-taste, each with exactly one obvious next action. - Feature tests for the read surfaces (authz on viewer, URL-state filters affect query calls);
stacks-browseQA at mobile/desktop, light/dark.
Acceptance
- From a fresh seeded login: create project, see onboarding, send a curl event, watch it arrive, open a seeded report, change range/filters via URL, all without touching a browser console error. Pre-flight passes.
Depends on #4, #9, #10, #11. Related to #12, #14. Part of #1 (M4 Builder and viewing). Ground rules: see #1.