🍡 mochi
SSR framework for Svelte 5 + Bun with islands-based selective hydration
Defining routes
Routes map URL paths to page entries, API handlers, WebSocket endpoints, or SSE streams:
import { Mochi } from './mochi-framework/Mochi';
const routes = {
'/': Mochi.page('./src/Home.svelte'),
'/about': Mochi.page('./src/About.svelte', { serverProps: { title: 'About' } }),
'/health': Mochi.api(({ method }) => Response.json({ status: 'ok' })),
'/ws/chat': Mochi.ws({
message(ws, msg) {
ws.send(msg);
},
}),
'/sse/time': Mochi.sse((stream) => {
stream.send('hello');
}),
};
await Mochi.serve({
port: 3333,
development: process.env.MODE === 'development',
routes,
});