ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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.