Flatten to three packages + extract mizan-runtime
packages/
mizan-runtime/ Framework-agnostic state engine (~150 lines)
Context registry, batched invalidation, fetch primitives
mizan-django/ Django server adapter (was packages/mizan-rpc/adapters/django/)
Codegen moved to mizan-django/generate/
mizan-react/ React adapter (was packages/mizan-csr/adapters/react/)
Removed premature abstractions: mizan-ast, mizan-schema, mizan-rpc,
mizan-csr, mizan-ssr stub packages. The actual architecture is three
concrete packages, not five abstract layers.
mizan-runtime implements the v1 spec: registerContext with params,
scoped invalidation via microtask batching, server-driven invalidation
from mutation responses, mizanFetch for context bundles, mizanCall for
mutations.
264 Django + 33 React tests pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
4
Makefile
4
Makefile
@@ -1,7 +1,7 @@
|
|||||||
.PHONY: install test test-django test-react test-integration docker-up docker-down clean
|
.PHONY: install test test-django test-react test-integration docker-up docker-down clean
|
||||||
|
|
||||||
DJANGO = packages/mizan-rpc/adapters/django
|
DJANGO = packages/mizan-django
|
||||||
REACT = packages/mizan-csr/adapters/react
|
REACT = packages/mizan-react
|
||||||
|
|
||||||
# ─── Setup ───────────────────────────────────────────────────────────────────
|
# ─── Setup ───────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|||||||
15
README.md
15
README.md
@@ -269,10 +269,10 @@ chat.send({ text: 'hello' })
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Django unit tests
|
# Django unit tests
|
||||||
cd packages/mizan-rpc/adapters/django && uv sync --extra dev --extra channels && uv run pytest
|
cd packages/mizan-django && uv sync --extra dev --extra channels && uv run pytest
|
||||||
|
|
||||||
# React unit tests
|
# React unit tests
|
||||||
cd packages/mizan-csr/adapters/react && npm test
|
cd packages/mizan-react && npm test
|
||||||
|
|
||||||
# E2E integration tests (real browser, real backend)
|
# E2E integration tests (real browser, real backend)
|
||||||
docker compose -f examples/django-react-site/docker-compose.test.yml up -d
|
docker compose -f examples/django-react-site/docker-compose.test.yml up -d
|
||||||
@@ -288,14 +288,9 @@ make test-all
|
|||||||
```
|
```
|
||||||
mizan/
|
mizan/
|
||||||
packages/
|
packages/
|
||||||
mizan-ast/ Language layer (source → KDL schema)
|
mizan-runtime/ Client state engine (~150 lines, framework-agnostic)
|
||||||
mizan-schema/ IR layer (KDL schema definition)
|
mizan-django/ Django server adapter (decorators, dispatch, contexts, SSR)
|
||||||
mizan-rpc/ Protocol layer (client generation + server adapters)
|
mizan-react/ React adapter (thin wrapper around runtime)
|
||||||
adapters/django/ Django server adapter
|
|
||||||
generator/ Codegen CLI
|
|
||||||
mizan-csr/ State layer (client state engine + frontend adapters)
|
|
||||||
adapters/react/ React adapter
|
|
||||||
mizan-ssr/ Rendering layer (server-side rendering)
|
|
||||||
examples/
|
examples/
|
||||||
django-react-site/ E2E tests + Django backend
|
django-react-site/ E2E tests + Django backend
|
||||||
django-react-desktop-app/ PyWebView desktop app
|
django-react-desktop-app/ PyWebView desktop app
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Install mizan from local source with channels support
|
# Install mizan from local source with channels support
|
||||||
COPY packages/mizan-rpc/adapters/django/ /app/django/
|
COPY packages/mizan-django/ /app/django/
|
||||||
RUN pip install --no-cache-dir /app/django[channels] daphne
|
RUN pip install --no-cache-dir /app/django[channels] daphne
|
||||||
|
|
||||||
# Copy example app
|
# Copy example app
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ export default {
|
|||||||
source: {
|
source: {
|
||||||
django: {
|
django: {
|
||||||
managePath: path.join(root, 'examples/django-react-site/backend/manage.py'),
|
managePath: path.join(root, 'examples/django-react-site/backend/manage.py'),
|
||||||
command: [path.join(root, 'packages/mizan-rpc/adapters/django/.venv/bin/python')],
|
command: [path.join(root, 'packages/mizan-django/.venv/bin/python')],
|
||||||
env: {
|
env: {
|
||||||
PYTHONPATH: `${path.join(root, 'packages/mizan-rpc/adapters/django/src')}:${path.join(root, 'examples/django-react-site/backend')}`,
|
PYTHONPATH: `${path.join(root, 'packages/mizan-django/src')}:${path.join(root, 'examples/django-react-site/backend')}`,
|
||||||
DJANGO_SETTINGS_MODULE: 'testapp.settings',
|
DJANGO_SETTINGS_MODULE: 'testapp.settings',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user