Welcome to sim

Your guide to understanding the codebase


Learning Path

14 units • 4 levels

Orchestration & APIs

Pipelines, workflows, public interfaces • 3 units

Monorepo Architecture & Project Structure

Architecture

Data Layer & Authentication

Data Model·11

State Management & Data Fetching

Patterns·1

Core Logic & Data

Business rules, schemas, models • 3 units

LLM Integration & AI Copilot

Integration·5

Tool & Integration Framework

Integration·17

Workflow Canvas & Block System

Patterns·9

Interaction & Integration

UI components, external connectors • 3 units

Knowledge Base & RAG System

Data Model·6

Execution Infrastructure & Monitoring

Infrastructure·25

Workflow Execution & Automation

Workflow·5

Cross-Cutting Concerns

Auth, logging, config, testing • 2 units

Production & Collaboration

Concurrency·20

Security & API Management

Security·6


Test Your Knowledge

24 questions across all levels


Hands-On Assignment

45-60 minutes


Your Challenge

Build a custom React Query devtools panel that visualizes the query cache state and allows developers to inspect active queries, their data, and refetch status in real-time. The panel should integrate with the existing QueryProvider and display query keys, cache times, and stale status. This will help developers debug data fetching issues and understand how React Query manages state across the application.


Starting Points

  • apps/sim/app/_shell/providers/query-provider.tsx:1-43
    Examine how QueryClientProvider is configured and the default query options being used

  • apps/sim/app/_shell/providers/query-provider.tsx:10-30
    This is where you'll add your custom devtools component alongside the existing QueryClientProvider

  • apps/sim/app/_shell/providers/query-provider.tsx:1-15
    Note the provider pattern and how children are wrapped - your devtools should follow this pattern


Success Criteria

  • Devtools panel appears only in development mode (NODE_ENV !== 'production')
  • Panel displays all active queries with their query keys in a readable format
  • Clicking a query shows detailed information: data, fetch status, stale state, and last updated time
  • Panel updates in real-time when queries are added, removed, or refetched
  • Includes a manual refetch button for each query that triggers query.refetch()
  • Panel can be toggled open/closed without breaking existing functionality
  • Existing application behavior remains unchanged when devtools are closed

Hints

  • Hint 1: Understanding React Query's cache structureconceptual
  • Hint 2: Real-time updates for the devtoolsimplementation
  • Hint 3: Conditional rendering for developmentcode location
  • Hint 4: Displaying query informationimplementation

Prerequisites:

  • React hooks (useState, useEffect)
  • React Query basics
  • TypeScript interfaces