Implement unified dashboard to display tasks and events from multiple federated Mosaic Stack instances with clear provenance indicators. Backend Integration: - Extended federation API client with query support (sendFederatedQuery) - Added query message fetching functions - Integrated with existing QUERY message type from Phase 3 Components Created: - ProvenanceIndicator: Shows which instance data came from - FederatedTaskCard: Task display with provenance - FederatedEventCard: Event display with provenance - AggregatedDataGrid: Unified grid for multiple data types - Dashboard page at /federation/dashboard Key Features: - Query all ACTIVE federated connections on load - Display aggregated tasks and events in unified view - Clear provenance indicators (instance name badges) - PDA-friendly language throughout (no demanding terms) - Loading states and error handling - Empty state when no connections available Technical Implementation: - Uses POST /api/v1/federation/query to send queries - Queries each connection for tasks.list and events.list - Aggregates responses with provenance metadata - Handles connection failures gracefully - 86 tests passing with >85% coverage - TypeScript strict mode compliant - ESLint compliant PDA-Friendly Design: - "Unable to reach" instead of "Connection failed" - "No data available" instead of "No results" - "Loading data from instances..." instead of "Fetching..." - Calm color palette (soft blues, greens, grays) - Status indicators: 🟢 Active, 📋 No data, ⚠️ Error Files Added: - apps/web/src/lib/api/federation-queries.ts - apps/web/src/lib/api/federation-queries.test.ts - apps/web/src/components/federation/types.ts - apps/web/src/components/federation/ProvenanceIndicator.tsx - apps/web/src/components/federation/ProvenanceIndicator.test.tsx - apps/web/src/components/federation/FederatedTaskCard.tsx - apps/web/src/components/federation/FederatedTaskCard.test.tsx - apps/web/src/components/federation/FederatedEventCard.tsx - apps/web/src/components/federation/FederatedEventCard.test.tsx - apps/web/src/components/federation/AggregatedDataGrid.tsx - apps/web/src/components/federation/AggregatedDataGrid.test.tsx - apps/web/src/app/(authenticated)/federation/dashboard/page.tsx - docs/scratchpads/92-aggregated-dashboard.md Testing: - 86 total tests passing - Unit tests for all components - Integration tests for API client - PDA-friendly language verified - TypeScript type checking passing - ESLint passing Ready for code review and QA testing. Related Issues: - Depends on #85 (FED-005: QUERY Message Type) - COMPLETED - Depends on #91 (FED-008: Connection Manager UI) - COMPLETED - Uses #90 (FED-007: EVENT Subscriptions) infrastructure Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Mosaic Stack Documentation
Complete documentation for Mosaic Stack, organized in Bookstack-compatible shelf/book/chapter/page structure.
📚 Books
1. Getting Started
Essential guides to get Mosaic Stack installed and configured.
- Quick Start — Get up and running in 5 minutes
- Installation
- Configuration
2. Development
Developer guides for contributing to Mosaic Stack.
- Workflow
- Database
- Schema, migrations, and Prisma guides (to be added)
- Type Sharing
3. Architecture
Technical architecture and design decisions.
- Overview — System design (to be added)
- Authentication — BetterAuth and OIDC (to be added)
- Design Principles
4. API Reference
Complete API endpoint documentation.
📝 Scratchpads
Development notes and implementation details for specific issues:
- Issue #1: Project Scaffold
- Issue #2: PostgreSQL Schema
- Issue #3: Prisma ORM Setup
- Issue #4: Authentik OIDC Integration
🔍 Quick Links
For New Users
For Developers
For Architects
- PDA-Friendly Design
- Authentication Flow (to be added)
- System Overview (to be added)
For API Consumers
📋 Documentation Standards
File Organization
docs/
├── {N}-{book-name}/ # Book (numbered)
│ ├── README.md # Book overview
│ ├── {N}-{chapter-name}/ # Chapter (numbered)
│ │ ├── {N}-{page-name}.md # Page (numbered)
│ │ └── ...
│ └── ...
└── scratchpads/ # Development notes (unnumbered)
Numbering Convention
- Books:
1-getting-started,2-development,3-architecture,4-api - Chapters:
1-quick-start,2-installation,3-configuration - Pages:
1-overview.md,2-local-setup.md,3-docker-setup.md
Numbers maintain order in file systems and Bookstack.
Writing Style
- Concise — No unnecessary verbosity
- Action-oriented — Use imperative mood ("Run the command", not "You should run")
- Example-heavy — Show, don't just tell
- Code blocks — Always include working examples
- Links — Cross-reference related topics
- PDA-friendly — Follow design principles
Code Examples
Always include:
- Language identifier for syntax highlighting
- Complete, runnable examples
- Expected output when relevant
- Error cases and troubleshooting
🛠️ Contributing to Docs
Adding New Pages
- Identify the appropriate book/chapter
- Create numbered markdown file
- Add to chapter's parent README
- Link from related pages
- Test all links and code examples
Updating Existing Pages
- Keep formatting consistent
- Update last-modified date
- Test all examples
- Check cross-references
Creating New Books
- Number sequentially (
5-{new-book}) - Create
README.mdoverview - Add chapter directories
- Update this index
📊 Documentation Status
| Book | Completion |
|---|---|
| Getting Started | 🟢 Complete |
| Development | 🟡 Partial |
| Architecture | 🟡 Partial |
| API Reference | 🟡 Partial |
Legend:
- 🟢 Complete
- 🟡 Partial
- 🔵 Planned
- ⚪ Not started
🔗 External Resources
- Project Repository: https://git.mosaicstack.dev/mosaic/stack
- Issue Tracker: https://git.mosaicstack.dev/mosaic/stack/issues
- Google Style Guides: https://github.com/google/styleguide
- BetterAuth Docs: https://www.better-auth.com
- Prisma Docs: https://www.prisma.io/docs
- NestJS Docs: https://docs.nestjs.com
📧 Support
- Issues: Create an issue
- Discussions: Project discussions
Last Updated: 2026-01-28 Version: 0.0.1 (Pre-MVP)