Changes include: - Updated architecture documentation - Enhanced module definitions (OQI-001 to OQI-008) - ML integration documentation updates - Trading strategies documentation - Orchestration and inventory updates - Docker configuration updates 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
16 KiB
16 KiB
| id | title | type | project | version | updated_date |
|---|---|---|---|---|---|
| INVENTARIO-STC-PLATFORM-WEB | stc-platform-web | Documentation | trading-platform | 1.0.0 | 2026-01-04 |
Inventario de Funcionalidades: stc-platform-web
Ultima actualizacion: 2025-12-05
Version del proyecto analizado: stc-platform-web (React 18 + Vite + Supabase)
Ubicacion: [LEGACY: proyecto cerrado - ver MIGRACION-SUPABASE-EXPRESS.md]/
Resumen Ejecutivo
El proyecto stc-platform-web contiene una implementacion funcional de una plataforma de trading educativo con las siguientes caracteristicas principales:
| Modulo | Estado | Componentes | Servicios | Hooks |
|---|---|---|---|---|
| Autenticacion | Completo | 5+ | 4 | 5 |
| Cursos/Educacion | Completo | 10+ | 5 | 6 |
| Trading (Bots/Signals) | Completo | 15+ | 6 | 6 |
| Pagos (Stripe) | Completo | 8+ | 4 | 4 |
| Admin Panel | Completo | 10+ | - | - |
| Soporte | Parcial | 3+ | - | - |
1. Modulo de Autenticacion
1.1 Servicios Implementados
AuthService (features/auth/services/authService.ts)
class AuthService {
signInWithEmail(email, password) // Login con email/password
signUpWithEmail(email, password, metadata) // Registro con metadata
signInWithProvider(config: SocialAuthConfig) // OAuth (Google, Facebook, etc.)
signOut() // Cerrar sesion
forgotPassword(email) // Solicitar reset password
resetPassword(password) // Cambiar password
updatePassword(password) // Actualizar password
verifyEmail(token, type) // Verificar email
resendVerification(email) // Reenviar verificacion
getCurrentUser() // Usuario actual
getCurrentSession() // Sesion actual
refreshSession() // Refrescar sesion
updateUserMetadata(metadata) // Actualizar metadata
onAuthStateChange(callback) // Listener de cambios
validatePasswordStrength(password) // Validar fortaleza password
}
TokenService (features/auth/services/tokenService.ts)
class TokenService {
getAccessToken() // Obtener access token
getRefreshToken() // Obtener refresh token
setTokens(access, refresh) // Guardar tokens
clearTokens() // Limpiar tokens
getSessionInfo() // Info de sesion
setSessionInfo(info) // Guardar info sesion
isAccessTokenExpired() // Verificar expiracion
isTokenExpiringSoon() // Expira en 5 min
getTimeUntilExpiry() // Tiempo restante
refreshTokenIfNeeded() // Refrescar si necesario
setupAutoRefresh() // Auto-refresh cada minuto
decodeToken(token) // Decodificar JWT
getTokenPayload() // Payload del token
getUserIdFromToken() // User ID del token
getUserEmailFromToken() // Email del token
getUserRoleFromToken() // Role del token
isValidTokenFormat(token) // Validar formato
createAuthHeader() // Header Authorization
handleTokenFromUrl() // OAuth redirect tokens
validateStoredSession() // Validar sesion guardada
getExpiryWarningMessage() // Mensaje de expiracion
}
PermissionService (features/auth/services/permissionService.ts)
class PermissionService {
hasPermission(role, permission) // Verificar permiso
hasAllPermissions(role, permissions) // Todos los permisos
hasAnyPermission(role, permissions) // Algun permiso
getRolePermissions(role) // Permisos de rol
hasRole(userRole, requiredRoles) // Verificar rol
hasMinimumRole(userRole, minimumRole) // Rol minimo
getRoleLevel(role) // Nivel de rol
canManageRole(actorRole, targetRole) // Puede gestionar rol
getAvailablePermissions(current, target) // Permisos disponibles
canAccessResource(role, ownerId, userId, permission) // Acceso a recurso
validatePermissions(role, permissions) // Validar permisos
getPermissionDescription(permission) // Descripcion permiso
getRoleDescription(role) // Descripcion rol
requiresConfirmation(role, permission) // Requiere confirmacion
getPermissionsByCategory() // Permisos por categoria
createPermissionMatrix() // Matriz de permisos
updateRolePermissions(role, permissions) // Actualizar permisos
addPermissionToRole(role, permission) // Agregar permiso
removePermissionFromRole(role, permission) // Remover permiso
}
1.2 Roles y Permisos Definidos
type UserRole = 'user' | 'instructor' | 'admin'
type Permission =
| 'read_courses' | 'write_courses' | 'delete_courses'
| 'read_users' | 'write_users' | 'delete_users'
| 'read_signals' | 'write_signals' | 'delete_signals'
| 'manage_subscriptions' | 'view_analytics' | 'manage_settings'
1.3 Hooks Disponibles
useAuth()- Hook principal de autenticacionuseSession()- Manejo de sesionesuseProfile()- Perfil de usuariousePermissions()- Verificacion de permisos
1.4 Paginas Implementadas
| Pagina | Ruta | Descripcion |
|---|---|---|
| Login | /login |
Login con email/OAuth |
| Register | /register |
Registro con validaciones |
| ForgotPassword | /forgot-password |
Solicitar reset |
| ResetPassword | /reset-password |
Cambiar password |
| VerifyEmail | /verify-email |
Verificacion de email |
2. Modulo de Cursos/Educacion
2.1 Servicios Implementados
CourseService (features/courses/services/courseService.ts)
class CourseService {
getCourses(filters, sort, page, perPage) // Listar con filtros
getCourse(id) // Obtener por ID
getCourseBySlug(slug) // Obtener por slug
createCourse(payload) // Crear curso
updateCourse(payload) // Actualizar curso
deleteCourse(id) // Eliminar curso
publishCourse(id) // Publicar curso
archiveCourse(id) // Archivar curso
getFeaturedCourses(limit) // Cursos destacados
getCoursesByCategory(categoryId, limit) // Por categoria
getSimilarCourses(courseId, limit) // Cursos similares
searchCourses(query, limit) // Buscar cursos
getCourseStats(courseId) // Estadisticas
}
EnrollmentService (features/courses/services/enrollmentService.ts)
- Inscripcion a cursos
- Verificacion de acceso
- Estado de inscripcion
ProgressService (features/courses/services/progressService.ts)
- Tracking de progreso
- Completion de lecciones
- Estadisticas de usuario
QuizService (features/courses/services/quizService.ts)
- Creacion de quizzes
- Evaluacion de respuestas
- Resultados y feedback
CertificateService (features/courses/services/certificateService.ts)
- Generacion de certificados
- Verificacion publica
- Descarga de certificados
2.2 Filtros de Cursos
interface CourseFilters {
search?: string
category_id?: string
level?: 'beginner' | 'intermediate' | 'advanced'
price_min?: number
price_max?: number
rating_min?: number
has_certificate?: boolean
is_featured?: boolean
instructor_id?: string
status?: 'draft' | 'published' | 'archived'
tags?: string[]
}
2.3 Stores (Zustand)
courseStore- Estado de cursosprogressStore- Progreso de usuarioplayerStore- Reproductor de video
2.4 Paginas Implementadas
| Pagina | Ruta | Descripcion |
|---|---|---|
| CoursesList | /courses |
Catalogo de cursos |
| CourseDetail | /courses/:slug |
Detalle de curso |
| CourseLearning | /courses/:slug/learn |
Reproductor de curso |
| MyCourses | /my-courses |
Mis cursos inscritos |
| Certificates | /certificates |
Mis certificados |
| CertificateVerification | /certificates/verify/:id |
Verificar certificado |
3. Modulo de Trading
3.1 Servicios Implementados
SignalService (features/trading/services/signalService.ts)
class SignalService {
getSignals(filters, page, perPage) // Listar senales
getSignalById(id) // Detalle de senal
subscribeToSignals(botIds, callback) // Suscripcion realtime
unsubscribeFromSignals(subscriptionId) // Desuscribir
unsubscribeAll() // Desuscribir todo
executeSignal(signalId, userId, options) // Ejecutar senal
getUserSignalHistory(userId, page, perPage) // Historial de usuario
getMockSignals() // Datos mock
createMockSignal(botId) // Crear mock
}
BotService (features/trading/services/botService.ts)
class BotService {
getBots(filters, page, perPage) // Listar bots
getBotById(id) // Detalle de bot
getFeaturedBots(limit) // Bots destacados
getBotsByDeveloper(developerId) // Bots por developer
subscribeToBo(botId, userId, settings) // Suscribirse a bot
getUserBotSubscriptions(userId) // Suscripciones usuario
cancelSubscription(subscriptionId, userId) // Cancelar suscripcion
getBotReviews(botId, page, perPage) // Reviews del bot
createBotReview(botId, userId, review) // Crear review
getMockBots() // Datos mock
}
CopyTradingService (features/trading/services/copyTradingService.ts)
- Copiar operaciones de traders
- Configuracion de copy trading
- Estadisticas de copia
PortfolioService (features/trading/services/portfolioService.ts)
- Gestion de portafolio
- Posiciones abiertas/cerradas
- Rendimiento
TradeHistoryService (features/trading/services/tradeHistoryService.ts)
- Historial de operaciones
- Filtros y exportacion
- Estadisticas
3.2 Tipos de Trading
interface TradingSignal {
id: string
bot_id: string
symbol: string
signal_type: 'buy' | 'sell'
entry_price: number
stop_loss: number
take_profit: number
confidence: number
risk_reward_ratio: number
analysis: string
tags: string[]
expires_at: string
is_executed: boolean
execution_count: number
}
interface TradingBot {
id: string
name: string
strategy_type: 'scalping' | 'swing' | 'position' | 'arbitrage'
risk_level: 'low' | 'medium' | 'high'
subscription_price: number
performance_metrics: PerformanceMetrics
configuration: BotConfiguration
is_verified: boolean
is_featured: boolean
is_demo_available: boolean
}
3.3 Paginas Implementadas
| Pagina | Ruta | Descripcion |
|---|---|---|
| Trading | /trading |
Dashboard de trading |
| Portfolio | /trading/portfolio |
Mi portafolio |
| TradeHistory | /trading/history |
Historial de trades |
| BotsMarketplace | /trading/bots |
Marketplace de bots |
| BotDetail | /trading/bots/:id |
Detalle de bot |
| Signals | /trading/signals |
Senales de trading |
| CopyTrading | /trading/copy-trading |
Copy trading |
4. Modulo de Pagos (Stripe)
4.1 Componentes Principales
SubscriptionManager
- Visualizacion de suscripciones
- Cancelar/reanudar suscripciones
- Historial de suscripciones
- Portal de Stripe Customer
PaymentHistory
- Tabla de transacciones
- Filtros avanzados
- Paginacion
- Descarga de facturas
- Exportacion CSV/PDF
PaymentDashboard
- Dashboard integrado
- Balance de creditos
- Paquetes de creditos
4.2 Servicios de Pagos
WebhookService
Eventos soportados:
payment_intent.succeededpayment_intent.payment_failedpayment_intent.canceledcheckout.session.completedinvoice.payment_succeededinvoice.payment_failedcustomer.subscription.createdcustomer.subscription.updatedcustomer.subscription.deletedcustomer.subscription.trial_will_end
StripeService
cancelSubscription(subscriptionId, reason)updateSubscription(subscriptionId, newPriceId)resumeSubscription(subscriptionId)
4.3 Hooks de Pagos
useSubscriptions()- Gestion de suscripcionesusePaymentHistory()- Historial de pagosusePayment()- Operaciones de pagouseCredits()- Balance de creditos
4.4 Paginas Implementadas
| Pagina | Ruta | Descripcion |
|---|---|---|
| Payments | /payments |
Dashboard de pagos |
| Billing | /billing |
Facturacion |
| Subscriptions | /subscriptions |
Mis suscripciones |
| Invoices | /invoices |
Facturas |
| Credits | /credits |
Balance creditos |
| Checkout | /checkout |
Proceso de pago |
5. Panel de Administracion
5.1 Paginas Implementadas
| Pagina | Ruta | Descripcion |
|---|---|---|
| AdminOverview | /admin |
Dashboard admin |
| UsersManagement | /admin/users |
Gestion usuarios |
| CoursesManagement | /admin/courses |
Gestion cursos |
| CourseEditor | /admin/courses/:id/edit |
Editor de curso |
| ModuleEditor | /admin/courses/:id/modules/:mid |
Editor de modulo |
| LessonEditor | /admin/courses/:id/lessons/:lid |
Editor de leccion |
5.2 Funcionalidades
- CRUD de usuarios
- CRUD de cursos
- Editor de contenido
- Estadisticas y reportes
- Gestion de categorias
6. Sistema de Soporte
6.1 Paginas Implementadas
| Pagina | Ruta | Descripcion |
|---|---|---|
| HelpCenter | /help |
Centro de ayuda |
| Tickets | /support/tickets |
Tickets de soporte |
7. Componentes UI Comunes
Guards (Proteccion de rutas)
// AuthGuard - Requiere autenticacion
// GuestGuard - Solo usuarios no autenticados
// RoleGuard - Requiere rol especifico
Layouts
AdminLayout- Layout para admin panel- (otros layouts en development)
UI Components (Shadcn/ui)
Componentes base de Radix UI + Tailwind CSS
8. Dependencias Clave
Frontend
{
"react": "^18.2.0",
"react-router-dom": "^6.x",
"zustand": "^4.4.0",
"@tanstack/react-query": "^5.0.0",
"react-hook-form": "^7.48.0",
"@radix-ui/*": "latest",
"tailwindcss": "^3.x",
"@stripe/stripe-js": "^2.x",
"@supabase/supabase-js": "^2.x"
}
Base de Datos (Supabase)
Schemas:
public- Usuarios, perfileseducation- Cursos, modulos, lecciones, quizzestrading- Bots, signals, positionsfinancial- Transacciones, suscripcionesaudit- Logs de actividad
9. Consideraciones para Migracion
Reemplazar Supabase por Express
-
Autenticacion
- Supabase Auth → JWT + Passport.js
- OAuth providers → Configurar manualmente
- Session management → Redis + JWT refresh tokens
-
Base de datos
- Supabase queries → TypeORM/Prisma
- RPC functions → Express endpoints
- Realtime → WebSocket/Socket.io
-
Storage
- Supabase Storage → S3/MinIO
- Image uploads → Multer + CDN
-
Webhooks
- Mantener logica de Stripe webhooks
- Adaptar a Express endpoints
10. Archivos de Configuracion
| Archivo | Descripcion |
|---|---|
vite.config.ts |
Config de Vite |
tailwind.config.js |
Config de Tailwind |
tsconfig.json |
Config de TypeScript |
.env.example |
Variables de entorno |
package.json |
Dependencias |
Siguiente Paso
Ver MIGRACION-SUPABASE-EXPRESS.md para el plan detallado de migracion.