Componentes del Frontend
Floutic utiliza una arquitectura de componentes modular basada en React y shadcn/ui, organizados por funcionalidad y reutilización.
Componentes Base
Componentes Compartidos (src/components/shared/)
Header
Navegación principal con autenticación y menú responsive.
Características:
- Menú hamburguesa en móvil
- Detección automática de autenticación
- UserMenu con dropdown
- Enlaces contextuales según rol
- Logo y branding de Floutic
Uso:
<Header />
Footer
Footer con enlaces legales e información de la plataforma.
Incluye:
- Enlaces a términos y condiciones
- Enlaces a política de privacidad
- Información de contacto
- Enlace a Preguntas Frecuentes (FAQ)
- Redes sociales
Layout (src/layouts/Layout.astro)
Layout base de todas las páginas con:
- Header y Footer
- Metadata SEO
- Estilos globales
- Scripts de inicialización
- CookieBanner
- EmailVerificationBanner (si el usuario no ha verificado su email)
CookieBanner
Banner de cookies RGPD con consentimiento.
Características:
- Cumplimiento RGPD
- Gestión de preferencias
- Persistencia de consentimiento
- Integración con analytics
EmptyState
Estados vacíos con mensajes informativos y CTAs.
Props:
title: Título del estado vacíodescription: Descripción del estadoaction: CTA opcionalicon: Icono opcional
Ejemplo:
<EmptyState
title="No hay proyectos"
description="Crea tu primer proyecto para empezar"
action={<Button onClick={handleCreate}>Crear Proyecto</Button>}
/>
ErrorBoundary
Manejo de errores React con fallback UI.
Características:
- Captura errores de renderizado
- Muestra UI de error amigable
- Logging de errores
- Opción de reintentar
Loading
Indicadores de carga reutilizables.
Variantes:
- Spinner simple
- Skeleton loaders
- Progress bars
- Loading states contextuales
ProfileImage
Componente reutilizable para mostrar imágenes de perfil con normalización automática de URLs.
Versiones:
ProfileImage.tsx- Para componentes ReactProfileImage.astro- Para páginas Astro
Características:
- Normalización automática de URLs (evita duplicación de
/api) - Fallback a placeholder con inicial del nombre
- Estilo consistente (cuadrado,
rounded-xl) - Soporte para diferentes tamaños
- Accesibilidad (alt text, loading lazy, itemprop para SEO)
Props:
picturePath- Ruta o URL de la imagen de perfilname- Nombre del usuario para placeholder y alt textsize- Tamaño de la imagen en píxeles (default: 128)className- Clases CSS adicionalesalt- Alt text personalizadoshowPlaceholder- Mostrar placeholder si no hay imagen (default: true)
Ejemplo:
<ProfileImage
picturePath={user.profile_picture}
name={user.username}
size={128}
alt={`Foto de perfil de ${user.username}`}
/>
Uso en Astro:
<ProfileImage
picturePath={expert.profile_picture}
name={expertName}
size={128}
className="bg-white text-green-600"
/>
Toast
Sistema de notificaciones toast.
Tipos:
success: Notificación de éxitoerror: Notificación de errorwarning: Advertenciainfo: Información
Uso:
import { toast } from '@/lib/utils/toast';
toast.success('Proyecto creado exitosamente');
toast.error('Error al crear proyecto');
ObfuscatedLink
Componente de enlace ofuscado para SEO. Crea enlaces que los bots de búsqueda no pueden seguir, útil para páginas con noindex o enlaces que no queremos que Google indexe.
Características:
- URL codificada en base64 (no visible en el DOM)
- No usa
hrefreal (usajavascript:void(0)) - Navegación via JavaScript onclick
- Añade
rel="nofollow"como capa adicional - Accesible (keyboard navigation, role, tabindex)
- Compatible con View Transitions de Astro
Versiones:
ObfuscatedLink.tsx- Para componentes ReactObfuscatedLink.astro- Para páginas Astro
Uso en Astro:
---
import ObfuscatedLink from '../components/shared/ObfuscatedLink.astro';
---
<ObfuscatedLink
href="/solicitar-presupuesto?expertId=123&expertName=Juan"
class="btn btn-primary"
>
Solicitar Presupuesto
</ObfuscatedLink>
Uso en React:
import ObfuscatedLink from '../components/shared/ObfuscatedLink';
<ObfuscatedLink
href="/solicitar-presupuesto?expertId=123"
className="btn btn-primary"
newTab={false}
onBeforeNavigate={() => {
// Callback opcional antes de navegar
return true; // return false para cancelar
}}
>
Solicitar Presupuesto
</ObfuscatedLink>
Props (React):
href: URL destino (será ofuscada)children: Contenido del enlaceclassName: Clases CSSnewTab: Abrir en nueva pestaña (default: false)title: Título/tooltip del enlaceonBeforeNavigate: Callback antes de navegar (return false para cancelar)dataAttributes: Data attributes adicionales
Cuándo usar:
- Enlaces desde páginas indexadas hacia páginas con
noindex - Enlaces a formularios o páginas internas que no queremos que Google indexe
- Enlaces que pueden cambiar frecuentemente y no queremos que Google cachee
NotificationCenter
Centro de notificaciones en tiempo real con:
- WebSocket para actualizaciones
- Filtros por tipo
- Marcar como leídas
- Notificaciones push
- Contador de no leídas
Componentes de UI (shadcn/ui)
Componentes accesibles y personalizables en src/components/ui/:
Button
Botones con variantes y tamaños.
Variantes:
default: Botón primariosecondary: Botón secundariooutline: Botón con bordeghost: Botón sin fondodestructive: Botón de acción destructiva
Tamaños:
sm: Pequeñodefault: Normallg: Grandeicon: Solo icono
Input
Campos de entrada con validación.
Características:
- Validación en tiempo real
- Mensajes de error
- Estados disabled/readonly
- Tipos: text, email, password, number, etc.
Card
Tarjetas de contenido con header, body y footer.
Estructura:
<Card>
<CardHeader>
<CardTitle>Título</CardTitle>
</CardHeader>
<CardContent>
Contenido
</CardContent>
</Card>
Badge
Etiquetas de estado con variantes de color.
Variantes:
default: Grissuccess: Verdewarning: Amarilloerror: Rojoinfo: Azul
Select
Selectores desplegables accesibles.
Características:
- Búsqueda integrada
- Agrupación de opciones
- Selección múltiple opcional
- Validación
Dialog
Modales y diálogos accesibles.
Características:
- Focus trap
- Cierre con ESC
- Overlay clickable
- Animaciones suaves
Tabs
Sistema de pestañas accesible.
Uso:
<Tabs defaultValue="tab1">
<TabsList>
<TabsTrigger value="tab1">Tab 1</TabsTrigger>
<TabsTrigger value="tab2">Tab 2</TabsTrigger>
</TabsList>
<TabsContent value="tab1">Contenido 1</TabsContent>
<TabsContent value="tab2">Contenido 2</TabsContent>
</Tabs>
Componentes de Autenticación
LoginForm
Formulario de login estándar con validación Zod.
Características:
- Validación de credenciales
- Manejo de errores
- Redirección post-login
- Recordar sesión opcional
LoginFormSecure
Login con autenticación segura (HttpOnly cookies, CSRF protection).
Características:
- HttpOnly cookies
- CSRF protection
- Session ID único
- Refresh automático de tokens
- Validación de session_id
RegisterForm
Formulario de registro con roles (empresa/experto).
Validación:
- Email único
- Fortaleza de contraseña (validación en tiempo real)
- Términos y condiciones obligatorios
- Sanitización XSS
- Validación de username
- Validación onBlur: Todos los campos validan al salir del campo (no solo al enviar)
- Mensajes de error específicos: Cada campo muestra su error específico
- Requisitos de contraseña visibles: Se muestran desde el principio, no solo al escribir
Campos:
- Email (validación onBlur)
- Username (validación onBlur, no puede ser igual a la contraseña)
- Password (validación onBlur, requisitos visibles siempre)
- Confirm Password (validación onBlur, debe coincidir)
- Roles (checkboxes: empresa y/o experto, validación al cambiar)
- Términos y condiciones (checkbox, validación al cambiar)
Requisitos de Contraseña (siempre visibles):
- Mín. 8 caracteres
- 1 mayúscula
- 1 minúscula
- 1 número
- 1 carácter especial
Flujo post-registro:
- Login automático
- Email de verificación enviado
- Banner de verificación mostrado
EmailVerificationBanner
Banner recordatorio para verificar email.
Características:
- Se muestra automáticamente si
user.email_verified === false - Botón para reenviar email de verificación
- Se puede cerrar temporalmente (oculto por 24 horas)
- Desaparece automáticamente cuando el email se verifica
- Visible en todas las páginas a través de
AppShell
Ubicación: src/components/shared/EmailVerificationBanner.tsx
Uso:
// Se incluye automáticamente en AppShell
<EmailVerificationBanner />
EmailVerification
Página/componente para verificar email con token.
Características:
- Procesa token de verificación desde URL
- Muestra estado de carga, éxito o error
- Redirige automáticamente al dashboard tras verificación
- Actualiza estado de autenticación
Ruta: /verificar-email?token=<token>
Ubicación: src/components/features/EmailVerification.tsx
Componentes de Proyectos
ProjectForm
Formulario para crear proyectos. También usado en /publicar-proyecto.
Características:
- Validación en tiempo real con indicadores visuales
- Presupuesto y fechas
- Validación de perfil verificado
- Categoría (desplegable)
- Habilidades requeridas (opcional, selector visual con botones)
- Descripción con contador de caracteres
Validaciones:
- Título requerido (mín. 10, máx. 200 caracteres)
- Descripción requerida (mín. 50, máx. 2000 caracteres)
- Presupuesto mínimo (mayor a 0€, máximo 100.000€)
- Fecha límite válida: Si se especifica, debe ser igual o posterior a la fecha actual
- Habilidades requeridas: Opcional (puede dejarse en blanco)
Nota: El formulario de "Editar borrador" (ProjectDraftEditDialog) es idéntico en estructura, campos, validaciones y notas aclaratorias.
ProjectDetail
Vista detallada optimizada con pestañas.
Pestañas:
- Resumen: Información general del proyecto
- Propuestas: Propuestas de expertos con comparación
- Hitos: Timeline de hitos con entregas
- Pagos: Estado de pagos Escrow
- Disputa: Gestión de disputas (si aplica)
Características:
- Header sticky con información persistente
- CTAs contextuales según estado
- Chat integrado
- Notificaciones en tiempo real
ProjectDetailHeader
Header sticky con información persistente y CTAs contextuales.
Información mostrada:
- Título del proyecto
- Estado actual
- Presupuesto
- Fecha límite
- Experto asignado (si aplica)
CTAs según estado:
draft: Editar, Enviar para validaciónpending_publication: Esperando validaciónpublished: Ver propuestasassigned: Ver hitos, Chatcompleted: Ver reseñas
MilestoneManager
Gestión completa de hitos con:
- Creación y edición
- Estados (pending, in_progress, completed)
- Entregas y revisiones
- Progreso visual
- Orden secuencial
Funcionalidades:
- Crear hitos sugeridos con un clic
- Editar hitos existentes
- Ver entregas y revisiones
- Aprobar/rechazar entregas
- Ver progreso visual
MilestoneTimeline
Timeline visual de hitos con estados y fechas.
Estados visuales:
- ✅ Completado (verde)
- 🔄 En progreso (azul)
- ⏳ Pendiente (gris)
- ❌ Rechazado (rojo)
MilestoneProgress
Progreso de hitos con entregas y revisiones.
Características:
- Barra de progreso visual
- Contador de hitos completados
- Estado vacío guiado
- Creación rápida de hitos sugeridos
Componentes de Administración
AdminEditProjectModal
Modal para editar proyectos como administrador con funcionalidades avanzadas.
Características:
- Edición completa de información del proyecto
- Gestión de tallaje Floutic (Admin Override)
- Selección de expertos con Asistente de Curación IA
- Validaciones de negocio
- Vista de aplicaciones y propuestas
Funcionalidades principales:
- Editar información básica: Título, descripción, categoría, presupuesto, fecha límite
- Configuración: Tipo de proyecto, estado, nivel de servicio, urgencia
- Tallaje Floutic: Modificar tamaño y rangos de precio con razón de cambio
- Selección de Expertos (solo proyectos curados):
- Asistente de Curación IA: Sugerencias automáticas de expertos
- Filtros avanzados de búsqueda (skills, rating, tarifa, ubicación)
- Vista de expertos ya seleccionados/invitados
- Pre-selección de expertos sugeridos por IA con badge visual
Validaciones:
- Fecha límite no puede ser anterior a hoy
- Presupuesto debe ser válido
- Campos requeridos: título y descripción
- Validación de expertos seleccionados
Estados del proyecto:
- Select de estados simplificado: Solo muestra estados principales del workflow (draft, pending_publication, published_curated, published_private, bidding, in_progress, disputed, completed)
- Estados automáticos (assigned, in_review, payment_pending) se mapean automáticamente a estados principales al cargar
- Proyectos no publicados (draft/pending_publication): Los expertos se seleccionan pero las invitaciones se envían al aprobar
- Proyectos publicados: Las invitaciones se envían inmediatamente
ProjectValidationDialog
Dialog para aprobar/rechazar proyectos con curación de expertos.
Características:
- Aprobación o rechazo de proyectos
- Selección de tipo de publicación (privado/curado)
- Asignación de talla Floutic
- Selección de expertos con Asistente de Curación IA
- Validación de requisitos
- Aclaraciones visuales sobre notas públicas
Funcionalidades:
- Validación de Floutic Sizing Enforcement
- Selección de expertos con sugerencias de IA
- Pre-selección automática de expertos recomendados
- Badge visual para expertos sugeridos por IA
- Campo de notas con advertencia visual: Badge "PÚBLICO - Visible para la empresa" y alerta explicativa indicando que las notas de validación son visibles para la empresa propietaria del proyecto
Notas de validación:
- ⚠️ PÚBLICAS: Las notas/comentarios añadidos son visibles para la empresa
- Se muestran como "Notas de validación" en el detalle del proyecto
- El sistema muestra advertencia visual antes de escribir
- Recomendación: Usar tono profesional y constructivo
Componentes de Expertos
ExpertCardSEO
Tarjeta de experto optimizada para SEO con:
- Schema.org markup
- Enlaces SEO-friendly (slug)
- Información completa
- Rating y reseñas
- Skills destacadas
- CTA "Solicitar Presupuesto"
ExpertSearch
Búsqueda de expertos con filtros avanzados.
Filtros:
- Por habilidades (skills)
- Por nivel (Global/Pro/Enterprise)
- Por disponibilidad
- Por rating (mínimo)
- Por tarifa horaria (rango)
- Por ubicación
- Por experiencia
Características:
- Búsqueda en tiempo real
- Ordenamiento (rating, precio, experiencia)
- Paginación
- Resultados con preview
ExpertPublicProfileSEO
Perfil público optimizado para SEO con:
- Schema.org markup (ProfilePage)
- JSON-LD estructurado
- Soporte para slugs SEO-friendly
- Información completa
- Portfolio y enlaces
- Reseñas y ratings
- CTA "Solicitar Presupuesto"
URLs:
/expertos/[slug]- URL SEO-friendly- Fallback a
/expertos/[id]si no hay slug
ExpertSelection
Modal de selección de experto con:
- Información completa del experto
- Comparación de propuestas
- Historial de proyectos
- CTAs contextuales
- Datos fiscales (si es primer proyecto)
Componentes de Perfiles
ProfileFormExperto
Formulario de perfil de experto con:
- Datos personales
- Habilidades y experiencia
- Portfolio y enlaces
- Datos fiscales (opcional)
- Validación completa
Secciones:
- Información básica
- Habilidades y experiencia
- Portfolio y enlaces
- Datos fiscales
ProfileFormEmpresa
Formulario de perfil de empresa con:
- Información de la empresa
- Industria y sector
- Datos fiscales
- Validación de CIF
ProfilePictureUpload
Componente para subir y gestionar imágenes de perfil.
Características:
- Subida de imágenes con validación (JPEG, PNG, WebP, max 2MB)
- Preview de imagen antes de subir
- Eliminación de imagen existente
- Validación de tipo y tamaño en cliente
- Uso de
postFormData()para subida confiable - Imagen cuadrada (
rounded-xl) para consistencia visual - Tamaño uniforme (128px x 128px)
Props:
currentPicture- URL de la imagen actualonPictureUpdated- Callback cuando se actualiza la imagenclassName- Clases CSS adicionales
Uso:
<ProfilePictureUpload
currentPicture={user.profile_picture}
onPictureUpdated={(url) => setProfilePicture(url)}
/>
- Descripción de necesidades
CompanyProfileOnboarding
Onboarding mejorado de empresa con:
- Secciones organizadas
- Indicadores de progreso
- Validación en tiempo real
- Mensajes de ayuda contextuales
- Contador de palabras
- Validación de CIF en tiempo real
Secciones:
- Información básica
- Detalles de la empresa
- Datos fiscales
- Descripción y necesidades
FiscalDataModal
Modal bloqueante para solicitar datos fiscales cuando son requeridos.
Características:
- No se puede cerrar sin completar
- Formulario específico por tipo de perfil
- Validación Zod en tiempo real
- Integración con
useFiscalDatahook - Mensajes de error claros
Cuándo se muestra:
- Empresa crea su primer proyecto
- Experto es seleccionado para su primer proyecto
Componentes de Dashboards
DashboardEmpresa
Dashboard completo para empresas.
Vista de Proyectos (Kanban):
- Borradores: Proyectos en edición
- Pendientes Validación: Esperando aprobación admin
- Publicados: Proyectos activos recibiendo propuestas
- En Progreso: Proyectos con experto asignado
- En Disputa: Proyectos con disputas activas
- Completados: Proyectos finalizados
Estadísticas:
- Total de proyectos
- Proyectos activos
- Presupuesto total
- Reseñas recibidas
- Tasa de finalización
Alertas:
- Perfil pendiente de verificación
- Faltan datos fiscales
- Proyectos pendientes de acción
DashboardExperto
Dashboard optimizado con pestañas.
Pestañas:
-
Resumen: Métricas y estadísticas
- Ingresos totales
- Proyectos activos
- Rating y reputación
- Estadísticas de aplicaciones
- Lead Score
-
Mis Proyectos: Proyectos activos asignados
- Estado de hitos
- Entregas pendientes
- Chat de proyectos
- Proyectos completados
-
Aplicaciones: Propuestas enviadas
- Estado de cada aplicación
- Proyectos disponibles
- Historial completo
-
Invitaciones: Invitaciones recibidas
- Proyectos curados
- Notificaciones
- Acciones rápidas
DashboardAdmin
Dashboard unificado de admin con múltiples secciones.
Secciones principales:
- Dashboard: KPIs y métricas generales
- Flujo de Trabajo: Validación, curación y propuestas
- Usuarios: Gestión completa de usuarios
- Proyectos: Gestión de proyectos (Kanban)
- Configuración: SEO y páginas
- Finanzas: Pagos y disputas
- Reputación: Gestión de reputación y niveles
- Validación Avanzada: Validación detallada
- GoHighLevel: Monitoreo de etiquetas GHL
- Sistema: Notificaciones y configuración
Vista Kanban de Proyectos:
- 6 columnas consolidadas según flujo real
- Drag & drop entre estados
- Acciones contextuales
- Estadísticas por columna
UnifiedProjectDashboard
Gestión de proyectos con vista Kanban (6 columnas consolidadas).
Columnas:
- 📝 Borradores -
draft - ⏳ Pendientes Validación -
pending_publication - 👥 Publicados / En Licitación -
published_curated,published_private,bidding - 🔄 En Progreso -
assigned,in_progress,in_review - ⚖️ En Disputa -
disputed - ✅ Completados -
completed
Características:
- Drag & drop inteligente
- Estadísticas por columna
- Filtros y búsqueda
- Acciones rápidas
Componentes de Chat
ChatBox
Componente de mensajería interna.
Características:
- Mensajes en tiempo real (polling automático)
- Historial de conversación
- Envío de archivos
- Edición y eliminación de mensajes
- Notificaciones
- Indicador de escritura
- Timestamps
ProjectChat
Wrapper integrado del chat en proyectos.
Características:
- Integrado en ProjectDetail
- Permisos basados en roles
- Admin puede ver todos los chats
- Descarga de archivos
- Moderación de mensajes
useChat
Hook personalizado para gestión de estado del chat.
Funcionalidades:
- Cargar mensajes
- Enviar mensajes
- Editar mensajes
- Eliminar mensajes
- Subir archivos
- Marcar como leídos
Componentes de Reseñas
ReviewForm
Formulario de reseñas bidireccional.
Tipos:
- Empresa → Experto
- Experto → Empresa
Características:
- Editable indefinidamente
- Rating (1-5 estrellas)
- Comentario opcional
- Validación completa
- Solo visible cuando proyecto está completado
ReviewCard
Tarjeta de reseña con información completa.
Información mostrada:
- Rating visual (estrellas)
- Comentario
- Fecha
- Revisor
- Respuesta (si existe)
ReviewsList
Lista de reseñas con estadísticas.
Características:
- Paginación
- Estadísticas agregadas
- Filtros
- Ordenamiento
Componentes de Flujo de Contratación
RequestBudgetForm
Formulario completo para solicitar presupuesto desde perfil de experto.
Características:
- Pre-llenado con datos del experto
- Validación completa
- Creación de proyecto privado
- Redirección inteligente
ProposalComparison
Vista comparativa completa de propuestas de expertos.
Información comparada:
- Presupuesto propuesto
- Tiempo estimado
- Hitos propuestos
- Rating del experto
- Experiencia relevante
ProjectTimeline
Timeline visual completo del progreso del proyecto.
Elementos:
- Hitos con estados
- Entregas y revisiones
- Pagos realizados
- Fechas importantes
DeliveryApproval
Sistema completo para aprobar/rechazar entregas.
Acciones:
- Aprobar entrega
- Rechazar entrega (con motivo)
- Solicitar revisión
- Ver historial de entregas
DisputeForm
Formulario completo para crear disputas entre empresa y experto.
Características:
- Descripción del problema
- Evidencia (archivos)
- Tipo de disputa
- Notificación automática
AdminProjectValidation
Validación administrativa de proyectos.
Acciones:
- Aprobar proyecto
- Rechazar proyecto (con motivo)
- Solicitar cambios
- Cambiar tipo (privado/curado)
AdminExpertCuration
Curación de expertos para proyectos.
Características:
- Sugerencias automáticas
- Invitación manual
- Comparación de expertos
- Historial de proyectos
Componentes de UX/UI
MetricsChart
Gráficos interactivos con recharts.
Tipos:
- Line Chart
- Area Chart
- Bar Chart
- Pie Chart
Características:
- Responsive
- Interactivo
- Tooltips
- Leyendas
UserTour
Tours guiados para nuevos usuarios.
Características:
- Pasos guiados
- Highlight de elementos
- Navegación entre pasos
- Skip opcional
Features
Características de la plataforma.
Uso en landing:
- Hero section
- Características principales
- Testimonios
- CTAs
Testimonials
Testimonios de usuarios.
Características:
- Carrusel automático
- Navegación manual
- Avatares
- Ratings
Hooks Personalizados
useSecureAuth
Hook principal para autenticación segura.
Retorna:
user: Usuario actualisAuthenticated: Estado de autenticaciónisLoading: Estado de cargalogin: Función de loginlogout: Función de logoutrefresh: Función de refresh
useIdleTimeout
Hook de timeout por inactividad.
Características:
- Configurable por rol
- Modal de advertencia
- Logout automático
- Reset al detectar actividad
useSanitizedHTML
Hook para sanitización de HTML con DOMPurify.
Uso:
const sanitized = useSanitizedHTML(userInput);
useFiscalData
Hook para gestionar datos fiscales.
Funciones:
checkFiscalStatus(): Verificar estado fiscalcheckAndRequestFiscalData(): Verificar y retornar si está completoupdateFiscalData(): Actualizar datos fiscales
Uso:
const { checkFiscalStatus, updateFiscalData } = useFiscalData();
const status = await checkFiscalStatus();
if (!status.isComplete) {
// Mostrar modal de datos fiscales
}
useKeyboardShortcuts
Hook para shortcuts de teclado.
Shortcuts disponibles:
Ctrl/Cmd + K: Búsqueda globalCtrl/Cmd + /: AyudaEsc: Cerrar modales
Componentes de Administración
AdminUserManagement
Gestión completa de usuarios.
Funcionalidades:
- Lista de usuarios con filtros
- Estadísticas por rol
- Acciones administrativas
- Verificación de perfiles
AdminEditUserProfileModal / AdminCreateUserProfileModal
Modales para editar o crear perfiles de usuario (experto/empresa) como administrador.
Características:
- Edición completa de información del perfil
- Gestión de datos fiscales
- Verificación de perfil
- Aclaraciones visuales sobre notas internas
Funcionalidades:
- Campos de perfil completos según tipo de usuario
- Edición de skills, experiencia, tarifas (experto)
- Edición de datos de empresa (empresa)
- Campo de Notas de Admin:
- 🔒 INTERNO: Solo visible para otros administradores
- Badge púrpura con icono de candado
- Alerta explicativa sobre privacidad
- Útil para información sensible, contexto administrativo o comentarios internos
- No se muestra al usuario
AdminDisputeResolution
Componente para gestionar y resolver disputas de proyectos.
Características:
- Vista de disputas activas y resueltas
- Filtros por estado y prioridad
- Aclaraciones visuales sobre notas públicas
Funcionalidades:
- Visualización de detalles de disputa
- Evidencia y archivos adjuntos
- Opciones de resolución (continuar, cancelar, penalización)
- Campo de Notas de Resolución:
- ⚠️ PÚBLICO: Visible tanto para empresa como para experto
- Badge ámbar con icono de ojo
- Alerta explicativa sobre visibilidad a ambas partes
- Recomendación: Usar tono profesional, claro y objetivo
MilestoneReviewModal
Modal para revisar entregas de milestones (hitos) del proyecto.
Características:
- Revisión de entregas de hitos
- Aprobación, rechazo o solicitud de revisión
- Descarga de archivos adjuntos
- Aclaraciones visuales sobre feedback público
Funcionalidades:
- Visualización de entregables y archivos
- Feedback opcional para aprobación
- Feedback requerido para solicitud de revisión
- Campo de Comentarios/Feedback:
- ⚠️ PÚBLICO: Visible para el experto que realizó la entrega
- Badge ámbar con icono de ojo
- Alerta explicativa indicando que el feedback es visible para el experto
- Recomendación: Usar tono profesional y constructivo
AdminReputationManagement
Gestión completa de reputación y métricas.
Características:
- Visualización de lead_score
- Actualización de rating interno
- Gestión de niveles de experto
- Estadísticas detalladas
AdminExpertLevelManagement
Gestión de niveles de experto.
Niveles:
- Global (0-50 puntos)
- Pro (51-75 puntos)
- Enterprise (76-100 puntos)
Características:
- Actualización masiva
- Sugerencias basadas en lead_score
- Filtros y búsqueda
AdminProjectValidationAdvanced
Validación avanzada de proyectos.
Funcionalidades:
- Cambio de estados
- Cambio de tipos (privado/curado)
- Invitación de expertos
- Curación de proyectos
AdminGHLMonitoring
Monitoreo del sistema automático de etiquetas GoHighLevel.
Información mostrada:
- Estado de sincronización
- Etiquetas aplicadas
- Errores y warnings
- Historial de cambios
AdminSkillPageManagement
Gestión de páginas SEO de habilidades.
Funcionalidades:
- Crear/editar páginas de skills
- Configurar SEO (title, description, content)
- Gestionar FAQs
- Activar/desactivar páginas
Más Información
- Arquitectura - Arquitectura del frontend
- Dashboards - Dashboards de usuario
- Autenticación - Sistema de autenticación
- Testing - Guía de testing