- Is a Book Mark web link maganer like a TUI
- Framework: SvelteKit (using Svelte 5 Runes).
- Runtime & Packaging: Bun (packaged as a standalone binary).
- Execution Model: Operates as a local web server on
localhost, automatically launching the default system browser upon startup. - Data Philosophy: Local-first, prioritizing offline performance and local data persistence.
You are able to use the Svelte MCP server, where you have access to comprehensive Svelte 5 and SvelteKit documentation. Here's how to use the available tools effectively:
Use this FIRST to discover all available documentation sections. Returns a structured list with titles, use_cases, and paths.
Retrieves full documentation content for specific sections.
Analyzes Svelte code and returns issues and suggestions. MUST be used before finalizing any Svelte code.
Generates a Svelte Playground link. Ask user before use.
Follow these principles for maintainable, simple code:
- All constants in
$lib/constants.tswith descriptive names - Use
as constfor type safety - Config values (retries, delays) in
APP_CONFIG
stores/
domain/ # Business logic (links, workspaces)
infra/ # I/O (repository, logger, services)
ui/ # UI state (filters, settings)
- Domain depends only on types and infra interfaces
- Infra has no dependencies
- UI depends on domain
- Branded types for IDs:
type LinkId = string & { readonly __brand: 'LinkId' } - Result type for fallible operations:
Result<T, Error> - Explicit return types on public functions
- SRP: Functions do one thing (fetch, transform, render)
- DIP: Inject dependencies via options objects
- OCP: Extend via composition, not inheritance
- Skip Liskov/Interface Segregation unless needed
- Descriptive names:
fetchForWorkspacenotload - Early returns over nested ifs
- Guard clauses for preconditions
- Maximum 20 lines per function (soft limit)
- Use Svelte 5 Runes:
$state,$derived,$effect - Encapsulate state in factory functions
- Return readonly getters, not raw state
- Optimistic updates with rollback on error
- Use Result type, not exceptions
- Log at boundary layers (repository, store actions)
- Rollback optimistic updates on failure