## Demo: shared-state ### SharedState.svelte ```svelte
``` ### CounterButton.svelte ```svelte ``` ### likes.svelte.ts ```ts const STORAGE_KEY = 'likes'; const stored = typeof localStorage !== 'undefined' ? localStorage.getItem(STORAGE_KEY) : null; let likes: number | null = $state(stored !== null ? Number(stored) : null); export function getLikes(): number | null { return likes; } export function like() { likes = (likes ?? 0) + 1; localStorage.setItem(STORAGE_KEY, String(likes)); } ``` ### routes.ts ```ts import { Mochi } from 'mochi-framework'; import type { MochiRouteValue } from 'mochi-framework'; export const routes: Record = { '/demos/shared-state': Mochi.page('./src/demos/shared-state/SharedState.svelte'), }; ``` ### index.ts ```ts import { Mochi, logger } from 'mochi-framework'; await Mochi.serve({ port: 3333, development: process.env.MODE === 'development', routes: { '/': Mochi.page('./src/Home.svelte'), }, }); logger.info('Server running at http://localhost:3333'); ```