# 🔍 Análisis del Stack Tecnológico - EMERGES TES
**Fecha:** 2026-01-15
**Tipo:** Análisis READ-ONLY
**Método:** Evidencia basada en archivos del repositorio
---
## 1) FRONTEND FRAMEWORK
### ✅ **Vite + React**
**Evidencia:**
1. **package.json:**
```json
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"devDependencies": {
"vite": "^7.3.1",
"@vitejs/plugin-react-swc": "^4.2.2"
}
```
2. **vite.config.ts:**
- Archivo de configuración presente
- Usa `@vitejs/plugin-react-swc` para React
- Configuración de build, code splitting, y optimizaciones
3. **index.html:**
- Punto de entrada: ``
- Estructura típica de Vite (no Next.js)
4. **Estructura de archivos:**
- `src/` como directorio principal (no `app/` ni `pages/` de Next.js)
- No hay `next.config.js` ni `pages/` directory
5. **Dependencias:**
```json
"react": "^19.2.3",
"react-dom": "^19.2.3"
```
**Conclusión:** **Vite 7.3.1** con **React 19.2.3**, usando **@vitejs/plugin-react-swc** para compilación rápida.
---
## 2) LANGUAGE
### ✅ **TypeScript**
**Evidencia:**
1. **tsconfig.json:**
- Archivo presente en raíz
- Referencias a `tsconfig.app.json` y `tsconfig.node.json`
2. **tsconfig.app.json:**
- Configuración específica para aplicación
3. **Extensiones de archivos:**
- Archivos principales: `.tsx` y `.ts`
- `src/App.tsx`, `src/main.tsx`, `vite.config.ts`
- Todos los componentes en `src/components/` son `.tsx`
4. **package.json:**
```json
"devDependencies": {
"typescript": "^5.8.3",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"@types/node": "^22.16.5"
}
```
5. **Imports con extensiones .ts/.tsx:**
- `import App from "./App.tsx"`
- `import { defineConfig } from "vite"`
**Conclusión:** **TypeScript 5.8.3** - Proyecto completamente tipado.
---
## 3) ROUTING SYSTEM
### ✅ **react-router-dom v6**
**Evidencia:**
1. **package.json:**
```json
"dependencies": {
"react-router-dom": "^6.30.1"
}
```
2. **src/App.tsx:**
```typescript
import { BrowserRouter, Routes, Route } from "react-router-dom";
} />
} />
...
```
3. **Estructura de rutas:**
- No hay directorio `/app` (Next.js App Router)
- No hay directorio `/pages` (Next.js Pages Router)
- Rutas definidas en `App.tsx` con componentes lazy-loaded
4. **Uso de hooks de routing:**
- `useNavigate`, `useLocation`, `useParams` encontrados en componentes
- `NavLink` usado en `BottomNav.tsx`
5. **Configuración Vite para SPA:**
```typescript
// vite.config.ts
server: {
// SPA fallback: todas las rutas no encontradas redirigen a index.html
}
```
**Conclusión:** **react-router-dom v6.30.1** con **BrowserRouter** (SPA routing, no Next.js).
---
## 4) STYLING SOLUTION
### ✅ **Tailwind CSS**
**Evidencia:**
1. **package.json:**
```json
"devDependencies": {
"tailwindcss": "^3.4.17",
"autoprefixer": "^10.4.21",
"postcss": "^8.5.6",
"@tailwindcss/typography": "^0.5.16"
},
"dependencies": {
"tailwind-merge": "^2.6.0",
"tailwindcss-animate": "^1.0.7"
}
```
2. **tailwind.config.ts:**
- Archivo de configuración presente
- Plugins: `tailwindcss-animate`, `@tailwindcss/typography`
- Configuración de temas, colores personalizados, breakpoints
3. **postcss.config.js:**
- Configuración de PostCSS presente (requerido por Tailwind)
4. **src/index.css:**
- `@tailwind base;`
- `@tailwind components;`
- `@tailwind utilities;`
5. **Uso en componentes:**
- Clases Tailwind en todos los componentes: `className="flex items-center gap-4 p-4 bg-card..."`
- No hay archivos `.module.css` ni `styled-components`
6. **Radix UI + Tailwind:**
- Componentes de `@radix-ui` estilizados con Tailwind
- Sistema de diseño basado en variables CSS + Tailwind
**Conclusión:** **Tailwind CSS 3.4.17** como solución principal de estilos, con **Radix UI** para componentes accesibles.
---
## 5) STATE MANAGEMENT
### ✅ **TanStack Query (React Query) + React Context + Local State**
**Evidencia:**
1. **TanStack Query (React Query):**
```json
"dependencies": {
"@tanstack/react-query": "^5.83.0"
}
```
**src/App.tsx:**
```typescript
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 5 * 60 * 1000,
gcTime: 10 * 60 * 1000,
refetchOnWindowFocus: false,
retry: 1,
},
},
});
```
2. **React Context:**
- `ThemeProvider` de `next-themes` (context para temas)
- `TooltipProvider` de Radix UI
- No se encontró uso extensivo de Context API propio
3. **Local Component State:**
- `useState` usado extensivamente en componentes
- Hooks personalizados: `useSearchHistory`, `useDebounce`, `useRoutePrefetch`
4. **NO se encontró:**
- Redux / Redux Toolkit
- Zustand
- MobX
- Jotai
- Recoil
**Conclusión:** **TanStack Query v5.83.0** para gestión de estado del servidor/caché, **React Context** para temas, y **local state** (useState) para estado de UI.
---
## 6) UI COMPONENT LIBRARY
### ✅ **Radix UI + shadcn/ui Pattern**
**Evidencia:**
1. **Radix UI (Base accesible):**
```json
"dependencies": {
"@radix-ui/react-accordion": "^1.2.11",
"@radix-ui/react-alert-dialog": "^1.1.14",
"@radix-ui/react-dialog": "^1.1.14",
"@radix-ui/react-dropdown-menu": "^2.1.15",
"@radix-ui/react-tabs": "^1.1.12",
"@radix-ui/react-toast": "^1.2.14",
// ... 20+ componentes Radix UI
}
```
2. **shadcn/ui Pattern:**
- `components.json` presente (configuración de shadcn/ui)
- Componentes en `src/components/ui/` estilizados con Tailwind
- Patrón: Radix UI (lógica) + Tailwind (estilos)
3. **Componentes UI encontrados:**
- `button.tsx`, `card.tsx`, `dialog.tsx`, `toast.tsx`, `tabs.tsx`, etc.
- Todos en `src/components/ui/` con estilos Tailwind
**Conclusión:** **Radix UI** como base accesible + **shadcn/ui pattern** (componentes estilizados con Tailwind).
---
## 7) FORM HANDLING
### ✅ **react-hook-form + Zod**
**Evidencia:**
1. **package.json:**
```json
"dependencies": {
"react-hook-form": "^7.61.1",
"zod": "^3.25.76"
}
```
2. **Uso esperado:**
- `react-hook-form` para manejo de formularios
- `zod` para validación de esquemas
- Patrón común: react-hook-form + zod resolver
**Conclusión:** **react-hook-form v7.61.1** + **Zod v3.25.76** para formularios y validación.
---
## 8) MARKDOWN PROCESSING
### ✅ **react-markdown + remark/rehype ecosystem**
**Evidencia:**
1. **package.json:**
```json
"dependencies": {
"react-markdown": "^10.1.0",
"remark-gfm": "^4.0.1",
"remark-frontmatter": "^5.0.0",
"rehype-highlight": "^7.0.2",
"rehype-raw": "^7.0.0",
"rehype-sanitize": "^6.0.0",
"unified": "^11.0.5"
}
```
2. **Uso en componentes:**
- `MarkdownViewer.tsx` usa `react-markdown` con plugins
- Procesamiento de archivos `.md` desde `public/manual/`
**Conclusión:** **react-markdown** con ecosistema **remark/rehype** para procesamiento de Markdown.
---
## 9) TESTING FRAMEWORK
### ✅ **Vitest**
**Evidencia:**
1. **package.json:**
```json
"scripts": {
"test": "vitest",
"test:ui": "vitest --ui",
"test:watch": "vitest --watch"
},
"devDependencies": {
"vitest": "^4.0.17",
"@vitest/ui": "^4.0.17",
"@vitest/coverage-v8": "^4.0.17",
"@testing-library/react": "^16.3.1",
"@testing-library/jest-dom": "^6.9.1"
}
```
2. **vite.config.ts:**
```typescript
test: {
globals: true,
environment: 'jsdom',
setupFiles: ['./src/test/setup.ts'],
}
```
**Conclusión:** **Vitest v4.0.17** con **Testing Library** para testing.
---
## 10) THEME MANAGEMENT
### ✅ **next-themes**
**Evidencia:**
1. **package.json:**
```json
"dependencies": {
"next-themes": "^0.3.0"
}
```
2. **src/App.tsx:**
```typescript
import { ThemeProvider } from "next-themes";
```
**Conclusión:** **next-themes v0.3.0** para gestión de temas claro/oscuro (aunque el nombre sugiere Next.js, funciona con cualquier React app).
---
## 11) ICONS
### ✅ **lucide-react**
**Evidencia:**
1. **package.json:**
```json
"dependencies": {
"lucide-react": "^0.462.0"
}
```
2. **Uso extensivo:**
- Todos los componentes importan iconos de `lucide-react`
- Ejemplos: `Heart`, `Brain`, `Search`, `Menu`, etc.
**Conclusión:** **lucide-react v0.462.0** como librería de iconos.
---
## 12) BUILD TOOL & BUNDLER
### ✅ **Vite (esbuild)**
**Evidencia:**
1. **vite.config.ts:**
```typescript
build: {
minify: 'esbuild',
// Code splitting configurado
// Chunks manuales para optimización
}
```
2. **package.json:**
- Scripts usan `vite` directamente
- No hay webpack, rollup directo, o parcel
**Conclusión:** **Vite** usa **esbuild** para minificación y bundling.
---
## 13) BACKEND STACK (Separado)
### ✅ **Node.js + Express + TypeScript + PostgreSQL**
**Evidencia:**
1. **backend/package.json:**
```json
"dependencies": {
"express": "...",
"pg": "...",
"dotenv": "...",
"bcrypt": "...",
"jsonwebtoken": "..."
},
"devDependencies": {
"typescript": "^5.9.3",
"@types/express": "...",
"@types/node": "...",
"@types/pg": "..."
}
```
2. **backend/tsconfig.json:**
- Configuración TypeScript presente
3. **Estructura:**
- `backend/src/` con archivos `.ts`
- Express routes, middleware, services
**Conclusión:** Backend separado con **Node.js + Express + TypeScript + PostgreSQL**.
---
## 📊 RESUMEN EJECUTIVO
| Categoría | Tecnología | Versión |
|-----------|------------|---------|
| **Frontend Framework** | Vite + React | Vite 7.3.1, React 19.2.3 |
| **Language** | TypeScript | 5.8.3 |
| **Routing** | react-router-dom | 6.30.1 |
| **Styling** | Tailwind CSS | 3.4.17 |
| **State Management** | TanStack Query + Local State | 5.83.0 |
| **UI Components** | Radix UI + shadcn/ui | Múltiples |
| **Form Handling** | react-hook-form + Zod | 7.61.1 / 3.25.76 |
| **Markdown** | react-markdown + remark/rehype | 10.1.0 |
| **Testing** | Vitest + Testing Library | 4.0.17 |
| **Theme** | next-themes | 0.3.0 |
| **Icons** | lucide-react | 0.462.0 |
| **Build Tool** | Vite (esbuild) | 7.3.1 |
---
## 🎯 CONCLUSIÓN
**Stack Principal:**
- **Vite 7** + **React 19** + **TypeScript 5**
- **react-router-dom v6** (SPA routing)
- **Tailwind CSS 3** (estilos)
- **TanStack Query v5** (state management del servidor)
- **Radix UI** + **shadcn/ui pattern** (componentes)
- **Vitest** (testing)
**Arquitectura:**
- **Frontend:** SPA (Single Page Application) con Vite
- **Backend:** Separado (Node.js + Express + TypeScript)
- **PWA:** Service Worker implementado
- **Deployment:** GitHub Pages compatible (base path configurable)
**No es:**
- ❌ Next.js (no hay App Router ni Pages Router)
- ❌ Create React App (usa Vite)
- ❌ React Native / Expo (es web)
- ❌ Redux / Zustand (usa TanStack Query + local state)
---
**Última actualización:** 2026-01-15
**Método:** Análisis basado en evidencia de archivos del repositorio