ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Plataforma educativa de anatomía 3D interactiva
Translation pending
EducationTypeScript · PythonGitHub @juanCsalvatierraOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Plataforma educativa interactiva de anatomía 3D construida con Next.js 16 y React 19. Pensada para estudiantes y docentes del ISMP, integra visualización tridimensional de sistemas anatómicos, visor de imágenes médicas y un módulo de cuestionarios con autoría docente.
Interfaz y terminología en español (
cuestionarios,docente, etc.). Conservar el idioma al editar copy.
docente / admin.localStorage (hasta que se conecte el backend).| Capa | Tecnología |
|---|---|
| Frontend | Next.js 16 (App Router) + React 19 |
| Lenguaje | TypeScript 5.9 (strict mode) |
| 3D | three.js + @react-three/fiber + @react-three/drei |
| Estado UI | Zustand |
| Estilos | Tailwind CSS v4 (PostCSS, sin tailwind.config) |
| Backend | NestJS + Prisma + PostgreSQL |
| Auth | JWT (HS256) + bcrypt |
npm install
npm run dev
El frontend queda disponible en http://localhost:3000 usando mocks de Zustand+localStorage.
# Terminal 1 — Backend
cd backend
npm install
# Crear backend/.env con DATABASE_URL y JWT_SECRET
npx prisma migrate dev
npx prisma db seed
npm run start:dev
# Terminal 2 — Frontend
# Crear .env.local con NEXT_PUBLIC_API_URL=http://localhost:3001
npm run dev
| Comando | Descripción |
|---|---|
npm run dev | Servidor de desarrollo en :3000 |
npm run build | Build de producción |
npm run start | Sirve el build de producción |
npm run lint | Linter ESLint |
cd backend)| Comando | Descripción |
|---|---|
npm run start:dev | Servidor de desarrollo en :3001 |
npm run build | Compilar TypeScript |
npx prisma migrate dev | Aplicar migraciones |
npx prisma db seed | Sembrar datos iniciales |
No hay test runner configurado en el frontend.
ismp-3d-anatomy/
├── app/ # App Router de Next.js
│ ├── admin/usuarios/ # Gestión de usuarios (admin)
│ ├── components/ # Componentes React
│ │ ├── auth/ # RoleGate (guard cliente)
│ │ ├── scene/ # Escena Three.js
│ │ ├── models/ # GLB loaders por sistema
│ │ ├── layers/ # Capas de sistemas anatómicos
│ │ ├── labels/ # Etiquetas 3D
│ │ └── ui/ # Componentes UI genéricos
│ ├── cuestionarios/ # Rutas de cuestionarios (alumno)
│ ├── data/ # JSON: anatomía + estudios de imagen
│ ├── docente/cuestionarios/ # Autoría docente
│ ├── domain/ # Tipos de dominio (academic.ts)
│ ├── imaging/ # Visor de imágenes médicas
│ ├── login/ # Autenticación
│ ├── mis-cuestionarios/ # Historial del alumno
│ ├── muscles/, skeleton/ # Visores 3D
│ ├── providers/ # AuthProvider implementations
│ ├── store/ # Stores Zustand
│ ├── types/ # Interfaces (AuthProvider, etc.)
│ └── utils/ # matcher, normalize, indexBuilder
├── backend/ # NestJS + Prisma + PostgreSQL
│ ├── prisma/schema.prisma # Modelos y enums
│ ├── src/
│ │ ├── auth/ # JWT auth, guards, decoradores
│ │ ├── users/ # CRUD usuarios (admin)
│ │ ├── cuestionarios/ # CRUD cuestionarios
│ │ └── prisma/ # PrismaService compartido
│ └── package.json
├── docs/ # Documentación
│ ├── ARCHITECTURE.md
│ ├── BACKEND.md
│ ├── STACK.md
│ └── ROLES_ROADMAP.md
├── public/models/ # Modelos GLB
├── CLAUDE.md # Guía para asistentes de IA
└── package.json
| Ruta | Propósito |
|---|---|
app/modelos/, modelos/[system]/ | Galería y visor 3D por sistema (registro en app/config/systems.ts) |
app/imaging/, imaging/[studyId]/ | Visor de imágenes médicas |
app/cuestionarios/, cuestionarios/[id]/ | Cuestionarios del estudiante |
app/docente/cuestionarios/ | Autoría docente |
app/mis-cuestionarios/ | Historial del alumno |
app/admin/usuarios/ | Administración de usuarios |
app/login/ | Inicio de sesión |
public/models/: skeleton.glb, muscles.glb, organs.glb, nervous.glb, y otros.app/utils/matcher.ts + indexBuilder.ts. normalize.ts normaliza nombres (acentos, casing) — modificar con cuidado.| Store | Responsabilidad |
|---|---|
anatomyStore | hovered, selected, isolated, etiquetas |
cameraStore | Posición / target de cámara + setFocus |
meshStore | Toggle visibilidad por grupo de mallas |
userStore | Sesión actual (mock → nestAuthProvider) |
usersStore | Lista de usuarios admin (mock → GET /users) |
cuestionarioBankStore | Autoría de cuestionarios (mock → API) |
cuestionarioHistoryStore | Historial de intentos (mock → API) |
Al consumir estado persistido en un componente, gatear con useHydrated para evitar mismatches de hidratación SSR.
Metadatos jerárquicos (estructura → nombres de mallas) en JSON estáticos en app/data/:
anatomy.final.builded.json — árbol anatómico completo.anatomy.skeleton.json — esqueleto.imaging-studies.json — catálogo del visor de imágenes.Backend REST en backend/ (NestJS + Prisma + PostgreSQL, puerto 3001). Ver docs/BACKEND.md para endpoints, schema y plan de integración.
Hoy el frontend no está conectado al backend — usa mocks Zustand+localStorage. La integración se hace por fases: auth → users → cuestionarios → intentos. Ver docs/ROLES_ROADMAP.md.
any.npm run lint antes de cada commit.