πŸ—οΈArquitectura del Sistema - ToLearn

Este documento describe la arquitectura tΓ©cnica de la plataforma ToLearn, sus componentes principales y cΓ³mo interactΓΊan entre sΓ­.

πŸ“‹ Tabla de Contenidos

🎯 Visión General

ToLearn estΓ‘ construida como una aplicaciΓ³n web monolΓ­tica usando Django, con arquitectura MVC (Modelo-Vista-Controlador) ampliada con funcionalidades de tiempo real mediante WebSockets.

Stack TecnolΓ³gico

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   FRONTEND                          β”‚
β”‚  HTML5 + CSS3 + JavaScript + Bootstrap + CKEditor   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                        ↕
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 APPLICATION LAYER                   β”‚
β”‚         Django 5.2.4 + Django Channels              β”‚
β”‚  (HTTP/HTTPS + WebSocket + ASGI + WSGI)            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                        ↕
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   DATA LAYER                        β”‚
β”‚    PostgreSQL + Redis + S3 Storage                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ›οΈ Arquitectura de Alto Nivel

Diagrama de Arquitectura

Componentes Principales

  1. Capa de PresentaciΓ³n (Frontend)

    • Plantillas HTML/CSS

    • JavaScript para interactividad

    • Bootstrap para diseΓ±o responsive

  2. Capa de AplicaciΓ³n (Backend)

    • Django Framework

    • Django Channels para WebSockets

    • Aplicaciones modulares

  3. Capa de Datos

    • PostgreSQL para datos estructurados

    • Redis para cache y WebSocket

    • S3 para archivos multimedia

🧩 Componentes del Sistema

Estructura de Aplicaciones Django

1. Accounts (AutenticaciΓ³n)

Responsabilidades:

  • AutenticaciΓ³n de usuarios

  • IntegraciΓ³n OAuth con Google

  • GestiΓ³n de sesiones

Componentes Clave:

  • NoSignupSocialAccountAdapter: Previene registro automΓ‘tico con OAuth

  • IntegraciΓ³n con django-allauth

Flujo de AutenticaciΓ³n:

2. Homepage (Portal PΓΊblico)

Responsabilidades:

  • PΓ‘gina principal

  • PΓ‘ginas informativas

  • Login/Registro

  • Selector de idioma

Vistas Principales:

  • home(): PΓ‘gina principal

  • signin(): AutenticaciΓ³n

  • signup(): Registro

  • logoutuser(): Cierre de sesiΓ³n

  • set_language(): Cambio de idioma

3. Dashboard (Panel de Control)

Responsabilidades:

  • Panel principal del usuario

  • GestiΓ³n de evaluaciones

  • VisualizaciΓ³n de calificaciones

  • EnvΓ­o de tareas

Modelos Principales:

Flujo de EvaluaciΓ³n:

4. Courses (GestiΓ³n de Cursos)

Responsabilidades:

  • CreaciΓ³n y gestiΓ³n de cursos

  • OrganizaciΓ³n de lecciones

  • Control de acceso

  • Materiales adicionales

Modelos Principales:

Control de Acceso:

5. Webinar (Salas Virtuales)

Responsabilidades:

  • Videoconferencias en tiempo real

  • Chat en vivo

  • Pizarra colaborativa

  • Compartir archivos

Modelos Principales:

Arquitectura WebSocket:

Flujo WebSocket:

6. AdminPanel (AdministraciΓ³n)

Responsabilidades:

  • GestiΓ³n avanzada de usuarios

  • EstadΓ­sticas del sistema

  • GestiΓ³n de cursos y evaluaciones

  • ConfiguraciΓ³n global

Funcionalidades:

  • CRUD completo de todos los modelos

  • ImportaciΓ³n/exportaciΓ³n de datos

  • GeneraciΓ³n de reportes

  • GestiΓ³n de permisos

πŸ’Ύ Modelo de Datos

Diagrama de Relaciones

Modelo de Usuario Extendido

Relaciones Importantes

  1. User ↔ Course: Muchos a Muchos

    • A travΓ©s de StudentCourseAccess

    • Permite rastrear fechas de inscripciΓ³n

  2. User ↔ ClassRoom: Muchos a Muchos

    • Un usuario puede estar en mΓΊltiples aulas

    • Un aula contiene mΓΊltiples estudiantes

  3. Course ↔ Lesson: Uno a Muchos

    • Un curso tiene mΓΊltiples lecciones

    • Lecciones ordenadas secuencialmente

  4. Assignment ↔ Submission: Uno a Muchos

    • Una evaluaciΓ³n tiene mΓΊltiples envΓ­os

    • Un envΓ­o por estudiante por evaluaciΓ³n

πŸ”„ Flujo de Datos

Flujo de Solicitud HTTP

Flujo de WebSocket

Flujo de Subida de Archivos

πŸ”’ Seguridad

Capas de Seguridad

Mecanismos de Seguridad

  1. AutenticaciΓ³n

    • Django session-based authentication

    • OAuth 2.0 con Google

    • Password hashing con PBKDF2

  2. AutorizaciΓ³n

    • Decoradores @login_required

    • Permisos basados en grupos (estudiante/profesor/admin)

    • VerificaciΓ³n de acceso a nivel de objeto

  3. ProtecciΓ³n CSRF

    • Token CSRF en todos los formularios

    • VerificaciΓ³n automΓ‘tica por Django

  4. Seguridad de Contenido

    • SanitizaciΓ³n HTML con bleach

    • XSS protection headers

    • Content Security Policy

  5. Rate Limiting

    • LΓ­mite de intentos de login

    • Throttling de API (futuro)

ConfiguraciΓ³n de Seguridad en ProducciΓ³n

πŸ“ˆ Escalabilidad

Estrategias de Escalabilidad

1. Escalabilidad Horizontal

ImplementaciΓ³n:

  • MΓΊltiples instancias de Gunicorn/Daphne

  • Load balancer (Nginx, HAProxy, AWS ELB)

  • Base de datos centralizada

  • Redis cluster para cache distribuido

2. CachΓ© en MΓΊltiples Niveles

ConfiguraciΓ³n:

3. OptimizaciΓ³n de Base de Datos

Índices:

Query Optimization:

4. SeparaciΓ³n de Servicios

Arquitectura de Microservicios (Futuro):

5. Almacenamiento Distribuido

S3 para archivos multimedia:

  • Reduce carga del servidor

  • CDN integrado

  • Alta disponibilidad

  • Escalabilidad automΓ‘tica

Ventajas:

MΓ©tricas de Rendimiento

Objetivos:

  • Tiempo de respuesta < 200ms (95ΒΊ percentil)

  • Disponibilidad > 99.9%

  • Capacidad: 1000+ usuarios concurrentes

  • Throughput: 100+ req/segundo

Monitoreo:

πŸ”„ Patrones de DiseΓ±o Utilizados

1. MVC (Model-View-Controller)

  • Model: Modelos de Django (ORM)

  • View: Views de Django (Controladores)

  • Template: Plantillas HTML (Vistas)

2. Repository Pattern

  • Modelos de Django actΓΊan como repositorios

  • AbstracciΓ³n de la capa de datos

3. Decorator Pattern

  • @login_required

  • @staff_member_required

  • @cache_page

4. Observer Pattern

  • Signals de Django

  • WebSocket pub/sub con Redis

5. Strategy Pattern

  • Storage backends (local vs S3)

  • Authentication backends

πŸ“š Referencias


Última actualización: 2024 Versión del documento: 1.0

Last updated