Materializr
Open-source parametric 3D CAD for makers — constraint sketches, solid modeling, threads, SVG & text engraving, STL/STEP export. Android, iPad, Linux, Mac, Windows. Vibe coded.
Render.IA convierte planos 2D en modelos estructurales 3D con inteligencia artificial.
Translation pending
DesignTypeScript · CSSGitHub @Render-iaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Interfaz web de Render.IA, una plataforma que usa inteligencia artificial para convertir planos 2D en modelos estructurales 3D. Proyecto final de Patrones de Software. • Integrantes: Juan David Moreno, Felipe Cerón • Backend: renderia-backend (Java 21 + Spring Boot) • Base de datos: renderia-database (PostgreSQL en Neon)Read the full README ↗
Interfaz web de Render.IA, una plataforma que usa inteligencia artificial para convertir planos 2D en modelos estructurales 3D.
Proyecto final de Patrones de Software.
Demo en línea: https://renderia-frontend.vercel.app
src/analysis/analyzers/LocalVisionAnalyzer.ts lee el plano en el navegador, sin servidor:
Con el plano de ejemplo (public/samples/plano-casa.svg) detecta los 18 tramos de muro, 11 columnas, 6 puertas, 5 ventanas y 15 vigas en menos de medio segundo.
| Patrón | Dónde | Para qué |
|---|---|---|
| Singleton | AppConfig, ApiClient, Session, MockDatabase, CatalogService | Una sola instancia compartida de la configuración, el cliente HTTP, la sesión y los datos |
| Observer | EventBus, appEvents, ActivityLogger, AppShell | Avisar cambios de ruta, sesión y estado de análisis sin acoplar componentes; el log de actividad escucha eventos |
| Template Method | View, ElementMeshCreator.create() | Pasos fijos (render → afterRender; construir → etiquetar) con detalles en las subclases |
| Strategy | RolePolicy (AdminPolicy, EngineerPolicy, StudentPolicy) y PlanAnalyzer (LocalVisionAnalyzer, SampleResponseAnalyzer, BackendAnalyzer) | Permisos según el rol y forma de analizar según el modelo de IA, intercambiables |
| Abstract Factory | RepositoryFactory → MockRepositoryFactory / ApiRepositoryFactory | Familias de repositorios (en el navegador o contra el backend) sin cambiar las vistas |
| Factory Method | AnalyzerFactory, ElementMeshFactory + creadores de mallas | Crear el analizador según ai_models.provider y la pieza 3D según el tipo de elemento |
| Facade | AnalysisFacade | Una sola llamada (run) esconde todo el proceso: registro, estados, IA, guardado y modelo 3D |
| State | AnalysisState (PendingState, ProcessingState, CompletedState, FailedState) | Ciclo de vida de un análisis y transiciones válidas |
| Builder | StructuralSceneBuilder | Armar la escena 3D paso a paso (fondo, elementos, terreno, luces) |
npm install
npm run dev
Para correr las pruebas: npm test. En cada pull request, GitHub Actions revisa los tipos, corre las pruebas y hace el build (.github/workflows/ci.yml).
Abre http://localhost:5173 y entra con una de las cuentas de prueba:
| Rol | Correo | Contraseña |
|---|---|---|
| Administrador | [email protected] | Admin123* |
| Ingeniero | [email protected] | Ingeniero123* |
| Estudiante | [email protected] | Estudiante123* |
VITE_DATA_SOURCE | Qué hace |
|---|---|
mock (por defecto en localhost) | Todo se guarda en el navegador. Funciona sin backend. |
hybrid | Inicio de sesión, catálogos, proyectos y planos van al backend; el resto, al navegador. Sirvió durante la migración. |
api (por defecto en producción) | Todo va al backend en VITE_API_URL, y los análisis se hacen en el servicio de IA (renderia-ai). Los endpoints están en docs/API.md. |
Si VITE_API_URL está vacía, en producción se usa https://renderia-backend.onrender.com/api/v1.
En desarrollo, Vite redirige /api a http://localhost:8080, así que no hace falta configurar CORS para probar con el backend local.
| Comando | Qué hace |
|---|---|
npm run dev | Inicia el servidor de desarrollo |
npm run build | Revisa los tipos y genera la versión de producción en dist/ |
npm run preview | Sirve localmente la versión de producción |
Render-ia/renderia-frontend.vercel.json ya trae la configuración).VITE_DATA_SOURCE=mock para la demo, o VITE_DATA_SOURCE=api y VITE_API_URL=https://<backend>/api/v1 cuando el backend esté publicado.main se publica de nuevo automáticamente.src/
├── analysis/ IA: estados, fachada, fábrica de analizadores
│ ├── analyzers/ Detector de visión local, respuesta de ejemplo, backend
│ └── vision/ Imagen binaria, muros, columnas, puertas y vigas
├── auth/ Sesión, servicio de autenticación y políticas por rol
├── core/ Configuración, eventos, cliente HTTP, enrutador, almacenamiento
├── data/ Contratos de repositorios y sus dos familias (mock y api)
├── models/ Tipos que reflejan las tablas de schema.sql
├── services/ Reglas de negocio: proyectos, planos, análisis, catálogos, actividad
├── ui/ Marco de la app, diálogos, avisos, superposición del plano
├── viewer/ Visor 3D: constructor de escena y creadores de mallas
├── views/ Pantallas (todas heredan de View)
└── styles/ Tokens de diseño y estilos por sección
| Repository | data/repositories.ts | Separar el acceso a datos de la lógica de las pantallas |
| Command | EditElementCommand, RemoveElementCommand, CommandHistory (analysis/commands) | Cada corrección a los elementos es un objeto que sabe aplicarse y revertirse: deshacer y rehacer (Ctrl+Z / Ctrl+Shift+Z) |