As projects grow, structure becomes crucial.
Feature-Based Structure
src/
āāā features/
ā āāā auth/
ā ā āāā components/
ā ā ā āāā LoginForm.svelte
ā ā ā āāā SignupForm.svelte
ā ā āāā stores/
ā ā ā āāā auth.svelte.js
ā ā āāā api/
ā ā āāā auth.js
ā āāā cart/
ā ā āāā components/
ā ā āāā stores/
ā ā āāā api/
ā āāā products/
āāā lib/
ā āāā components/ # Shared UI components
ā ā āāā Button.svelte
ā ā āāā Modal.svelte
ā āāā utils/ # Utilities
ā ā āāā format.js
ā āāā stores/ # Global stores
ā āāā theme.svelte.js
āāā routes/
āāā +layout.svelte
SvelteKit Conventions
src/
āāā lib/ # $lib alias
ā āāā components/
ā ā āāā ui/ # Generic UI
ā ā āāā domain/ # Business-specific
ā āāā server/ # Server-only code
ā ā āāā db.js
ā āāā stores/
āāā routes/
ā āāā (marketing)/ # Layout group
ā ā āāā +layout.svelte
ā ā āāā pricing/
ā āāā (app)/ # App layout group
ā ā āāā +layout.svelte
ā ā āāā dashboard/
ā āāā api/ # API routes
ā āāā users/
ā āāā +server.js
āāā hooks.server.js
āāā app.html
Component Organization
lib/components/
āāā ui/ # Primitive UI components
ā āāā Button/
ā ā āāā Button.svelte
ā ā āāā Button.test.js
ā ā āāā index.js
ā āāā Input/
ā āāā Modal/
āāā forms/ # Form-related
ā āāā TextField.svelte
ā āāā Select.svelte
āāā layout/ # Layout components
ā āāā Header.svelte
ā āāā Sidebar.svelte
āāā domain/ # Business components
āāā ProductCard.svelte
āāā UserAvatar.svelte
Barrel Exports
javascript// lib/components/ui/index.js export { default as Button } from './Button/Button.svelte'; export { default as Input } from './Input/Input.svelte'; export { default as Modal } from './Modal/Modal.svelte'; // Usage import { Button, Input, Modal } from '$lib/components/ui';