## 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');
```