Files
llama.cpp/.windsurf/rules/sveltekit-architecture.md
2025-09-17 19:29:13 +02:00

1.4 KiB

trigger
trigger
manual

Coding rules

Svelte & SvelteKit

Services vs Stores Separation Pattern

lib/services/ - Pure Business Logic

  • Purpose: Stateless business logic and external communication
  • Contains:
    • API calls to external services (ApiService)
    • Pure business logic functions (ChatService, etc.)
  • Rules:
    • NO Svelte runes ($state, $derived, $effect)
    • NO reactive state management
    • Pure functions and classes only
    • Can import types but not stores
    • Focus on "how" - implementation details

lib/stores/ - Reactive State Management

  • Purpose: Svelte-specific reactive state with runes
  • Contains:
    • Reactive state classes with $state, $derived, $effect
    • Database operations (DatabaseStore)
    • UI-focused state management
    • Store orchestration logic
  • Rules:
    • USE Svelte runes for reactivity
    • Import and use services for business logic
    • NO direct database operations
    • NO direct API calls (use services)
    • Focus on "what" - reactive state for UI

Enforcement

  • Services should be testable without Svelte
  • Stores should leverage Svelte's reactivity system
  • Clear separation: services handle data, stores handle state
  • Services can be reused across multiple stores

Misc

  • Always use let for $derived state variables