Mizan's SSR is a Django template backend. Configure in TEMPLATES:
TEMPLATES = [{
'BACKEND': 'mizan.ssr.MizanTemplates',
'OPTIONS': {'worker_path': 'frontend/ssr-worker.tsx'},
}]
Then render(request, 'ProfilePage', {'user_id': 5}) renders the React
component via a persistent Bun subprocess. The component name is the
template name. The context dict becomes props.
Architecture:
- Bun worker: stdin/stdout JSON-RPC, renderToString, component registry
- Django bridge: subprocess lifecycle, crash recovery, concurrent renders
- Template backend: implements Django's BaseEngine interface
This is the AFI's SSR boundary:
- Backend adapter implements mizan.ssr() (data gathering)
- Frontend adapter implements renderToHTML() (component rendering)
- Bun subprocess is the runtime hosting the frontend adapter
11 tests: ping, render, error handling, crash recovery, concurrent
renders (5 threads), template backend integration. All require Bun.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
21 lines
457 B
JSON
21 lines
457 B
JSON
{
|
|
"name": "@mizan/ssr",
|
|
"version": "0.1.0",
|
|
"description": "Mizan SSR worker — renders React components to HTML via stdin/stdout JSON-RPC.",
|
|
"type": "module",
|
|
"main": "src/worker.tsx",
|
|
"scripts": {
|
|
"test": "bun test"
|
|
},
|
|
"dependencies": {
|
|
"react": "^19.0.0",
|
|
"react-dom": "^19.0.0"
|
|
},
|
|
"devDependencies": {
|
|
"bun-types": "latest",
|
|
"@types/react": "^19.0.0",
|
|
"@types/react-dom": "^19.0.0"
|
|
},
|
|
"license": "MIT"
|
|
}
|