From 98c3cbdbc67739d70dbb54a5da142ffbe73594be Mon Sep 17 00:00:00 2001 From: adevopg Date: Sun, 12 Jul 2026 20:18:35 +0000 Subject: [PATCH] =?UTF-8?q?Fase=200/1=20migraci=C3=B3n=20a=20TSX:=20islas?= =?UTF-8?q?=20React=20con=20Vite=20+=20API=20JSON=20(piloto:=20noticias)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Arquitectura elegida: islas React/TSX montadas sobre las plantillas Django existentes (django-vite), alimentadas por endpoints JSON bajo /api/. El backend, las URLs y la auth por sesión se mantienen; se migra sección a sección. Fase 0 (tooling): - frontend/ con Vite + React 18 + TypeScript. Build a static/dist con manifest. - django-vite 3.1 en INSTALLED_APPS + DJANGO_VITE (dev_mode=DEBUG, static_url_prefix='dist'). STATIC_URL pasa a '/static/' (absoluto) para que los assets no choquen con el de la plantilla. WhiteNoise sirve el bundle. - .gitignore: frontend/node_modules y static/dist (artefactos de build). Fase 1 (piloto: lista de noticias de la portada): - API: home/views/api.py -> home_news_api (JsonResponse); ruta /api/home/news/ montada en home/api_urls.py fuera de i18n_patterns. - React: NewsList.tsx hace fetch de la API y renderiza las noticias (mismas clases CSS que el HTML original). Entry src/entries/home.tsx monta en #home-news-app. - partials/noticias.html: el bucle {% for noticia %} se reemplaza por el contenedor de montaje + {% vite_asset %}. Verificado en producción: manage.py check OK, /api/home/news/ 200, la home incluye el mount y el