Commit Graph

154 Commits

Author SHA1 Message Date
fernando 4b17ea76b1 Add public/.user.ini to fix 2MB PHP upload limit on Nixpacks/Coolify
Nixpacks builds its own PHP-FPM + Nginx image and ignores Dockerfile.
PHP-FPM automatically reads .user.ini from the document root (public/),
so this is the correct way to override php.ini settings in Nixpacks.

Raises: upload_max_filesize 2M -> 50M, post_max_size 8M -> 55M

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 08:25:58 -06:00
fernando 27af72b26e Force PHP upload limits via -d flags and fix Dockerfile layer order
Pass upload_max_filesize=50M and post_max_size=55M directly with -d
flags on every php process in supervisord. This is guaranteed to apply
regardless of ini scanning order or Docker layer caching.

Also move COPY docker/php.ini before COPY . . so the conf.d file is
always placed before the app code is copied, ensuring Docker does not
use a stale cached layer that skips the ini file.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 08:20:46 -06:00
fernando 9851c887ec Raise all file upload limits to 50MB across the stack
PHP (docker/php.ini via conf.d — loaded automatically, no -c flag needed):
  upload_max_filesize 2M -> 50M
  post_max_size       8M -> 55M

Nginx: client_max_body_size 25M -> 55M

Livewire (config/livewire.php published):
  temporary_file_upload rules max 12MB -> 50MB (max:51200)

Laravel validation rules (all in KB):
  profile photo:        5120 (5MB)  -> 51200 (50MB)
  posts image:          5120 (5MB)  -> 51200 (50MB)
  anuncios image:       5120 (5MB)  -> 51200 (50MB)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 08:12:33 -06:00
fernando 56f4e3b226 Increase file upload validation limits
- EntregaController: max:2048 -> max:20480 (2MB -> 20MB)
- UpdateUserProfileInformation: max:1024 -> max:5120 (1MB -> 5MB)

The server-level limits (nginx client_max_body_size and php.ini) were
already raised in the previous commit; these Laravel validation rules
were the remaining bottleneck blocking uploads over 2MB.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 08:01:13 -06:00
fernando ff5b6f5eec Fix file upload limit over 2MB in production with HTTPS
- Use printf instead of echo to correctly write php.ini with newlines
  (Alpine ash echo does not interpret \n, leaving the file malformed
  and PHP falling back to its 2MB default)
- Add nginx.conf with client_max_body_size 25M as front-end proxy
- Start nginx on port 8080 via supervisord; move artisan serve to
  internal port 8081 so nginx can proxy requests with proper limits

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 07:41:52 -06:00
fernando e7ca2c29f0 Modificacion del supervisor y docker file postmaxSize 2026-05-09 07:26:47 -06:00
Fernando 9697a6b20a Configure PHP upload size limits in Dockerfile
Add PHP upload size configuration to Dockerfile
2026-05-09 02:12:06 -06:00
Fernando 8040e8e8fe Add Livewire temporary storage directory creation 2026-05-09 02:11:23 -06:00
Fernando 71b4e423bc Add command to link storage in Dockerfile 2026-05-09 02:01:12 -06:00
Fernando 7c6e42ef89 Update Reverb config to use environment variables 2026-05-09 01:42:36 -06:00
Fernando 2f7f797b86 Update build commands and environment variables 2026-05-09 01:36:25 -06:00
Fernando d2394e20e8 Add environment variables for VITE_REVERB configuration 2026-05-09 01:21:57 -06:00
Fernando 823f0e01da Trust all proxies in middleware configuration 2026-05-09 00:39:34 -06:00
Fernando 9fd484fc7b Modify start command for storage and config setup
Updated start command to include storage setup and config clear.
2026-05-09 00:16:33 -06:00
Fernando 6068390305 Remove --no-dev option from composer install 2026-05-07 23:41:02 -06:00
Fernando b22358e19d Add build and start commands to nixpacks.toml 2026-05-07 23:36:16 -06:00
fernando 964ed4bbd2 Modificación del de vista de dopcumentos del alumno 2026-05-06 18:33:18 -06:00
fernando 91d0813a9c Modificación del userController para el cambnio de rol si es alumno o docente 2026-05-05 18:33:36 -06:00
Fernando 59b7ff87f3 Add pcntl extension to Dockerfile
Added pcntl extension installation to Dockerfile.
2026-05-02 21:43:46 -06:00
Fernando 0d6e0d7a9f Add supervisord configuration for Laravel and Reverb 2026-05-02 21:35:28 -06:00
Fernando 8c9329cd10 Update Dockerfile to use supervisord for process management 2026-05-02 21:34:55 -06:00
Fernando 0abf1a5fb0 Install bcmath extension in Dockerfile
Added bcmath extension installation to Dockerfile.
2026-05-02 19:44:24 -06:00
Fernando 1d91bbc2e7 Dockerfile added 2026-05-02 19:21:56 -06:00
Fernando dc7799474a Delete nginx.conf 2026-05-02 19:06:09 -06:00
Fernando 543675adfb segundo commit para deploy nginx 2026-05-02 18:35:59 -06:00
Fernando 5d16da08f8 Refactor nginx.conf for cleaner configuration 2026-05-02 18:01:34 -06:00
fernando 881e67fb12 archivo de configuracion de nginx agregado para el puerto 9000 2026-05-02 16:57:29 -06:00
fernando 2af36ea272 feat: módulo de evaluaciones para admin con constructor dinámico
- Modelos completos: Evaluacion, EvaluacionTipo, Pregunta, PreguntaTipo,
  PreguntaOpcion, EvaluacionSubmission, Respuesta (con $table explícito
  para nombres en español que Laravel pluraliza incorrectamente)
- Relaciones evaluaciones() añadidas a Plantel y Nivel
- EvaluacionBuilder (Livewire): constructor interactivo con preguntas
  de tipo texto libre, opción múltiple, escala 1-5/1-10 y sí/no;
  reorden con flechas, vista previa por tipo, selección de planteles
  y niveles, configuración de estado, fechas y flag de anónima
- EvaluacionController: CRUD completo + toggleStatus
- Vistas: index, create/edit (con Livewire builder), show con detalle
  de preguntas y cambio de estado
- Rutas resource /evaluacion + PATCH /evaluacion/{id}/status
- Migraciones: evaluaciones, preguntas, pregunta_opciones,
  evaluacion_submissions, respuestas, evaluacion_plantel, evaluacion_nivel
- Menú: enlace Evaluaciones en panel de Administrador

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 18:09:48 -06:00
fernando f81237b23c fix/feat: búsqueda móvil, chat solo amigos y bloqueo si se eliminó amistad
- Header: búsqueda móvil con panel deslizable (fixed bajo la topbar), comparte la lógica AJAX con desktop via initSearchWidget()
- ChatController: index muestra solo amigos; show pasa isFriend y friendship a la vista; send valida amistad con abort_unless
- chat/index: muestra amigos con @forelse y mensaje vacío si no tiene
- chat/show: si no son amigos muestra banner de bloqueo con botón contextual (enviar solicitud / cancelar / aceptar según estado)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 17:40:16 -06:00
fernando e0205ec725 fix/feat: menú social en Adicionales, botón publicar visible y bug dropdown búsqueda
- Menú: mueve Comunidad/Amigos/Mensajes a la sección Adicionales (elimina duplicado Chats)
- Feed: botón Publicar más grande con ícono, textarea sin pill para mejor UX
- Header búsqueda: corrige bug que cerraba el dropdown al hacer click en él
  (mousedown en el contenedor bloquea el cierre hasta que se suelta el botón)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 17:30:06 -06:00
fernando d7ae38ce27 feat: gestión de amigos y mejora visual del dropdown de búsqueda
- FriendshipController: carga también amigos aceptados con su friendship
- friendships/index: tabs con 'Mis amigos' (tabla con Mensaje/Quitar) y 'Solicitudes'
- Notificaciones de solicitud abren directamente la pestaña de solicitudes (#solicitudes)
- Dropdown de búsqueda: bordes redondeados, sombra suave, margen superior, hover en items, etiqueta de sección y separadores finos

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 17:20:01 -06:00
fernando 0273fbfddd feat: notificaciones en tiempo real para social (likes, comentarios, solicitudes)
- Notifier helper: guarda en BD + broadcast en un solo llamado
- AppNotification: notificación genérica para canal database
- FriendshipController: notifica al recibir solicitud y al aceptarla
- PostController: notifica al autor cuando le dan like o comentan (excepto en propio post)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 17:15:28 -06:00
fernando 97c04fbfb4 feat: funcionalidad de red social (feed, amigos, búsqueda)
- Migraciones: posts, post_likes, post_comments
- Modelos Post, PostLike, PostComment con relaciones
- User: métodos friendshipWith, isFriendWith, friendIds, posts
- PostController: feed, crear publicación con imagen, like toggle, comentarios, eliminar
- FriendshipController: listar solicitudes, enviar, aceptar, rechazar, toggle AJAX
- SocialProfileController: perfil público con publicaciones y estado de amistad
- UserSearchController: búsqueda AJAX por nombre con estado de amistad
- FriendRequestNotification: notificación al recibir solicitud
- Vistas: feed/index, feed/_post, friendships/index, social/profile
- Header: barra de búsqueda con autocomplete AJAX (agregar amigo / mensaje)
- Menú lateral: Comunidad, Amigos, Mensajes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 17:09:04 -06:00
fernando 0f7de9b4d8 feat: dropdown de mensajes muestra conversaciones sin responder
- HeaderComposer ahora muestra conversaciones donde el último mensaje
  es del otro usuario (pendiente de respuesta), no solo mensajes no leídos
- El badge refleja el conteo de conversaciones pendientes
- Al responder desde el chat, se dispara chat:replied para quitar
  la conversación del dropdown en tiempo real
- El badge en tiempo real solo incrementa si es una conversación nueva

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 17:00:17 -06:00
fernando e2ebbf38c5 fix: resolver conflicto de merge en header y agregar CSRF token a axios
- Resuelve marcadores de conflicto dejados en header.blade.php
- Agrega X-CSRF-TOKEN a los headers por defecto de axios (evita 419 en endpoints de notificaciones)
- Rebuild de assets de Vite

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 16:52:30 -06:00
fernando b469b884f5 Merge: integrar cambios del trabajo con chat en tiempo real 2026-04-28 16:30:01 -06:00
fernando 47d29b7f13 fix: actualizar dropdown de mensajes en tiempo real al recibir nuevo mensaje
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 14:24:00 -06:00
fernando eaeedf2029 feat: header con mensajes y notificaciones en tiempo real
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 14:14:46 -06:00
fernando 9dd5ac6cbf feat: FileController para servir archivos privados con autenticación
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 13:58:50 -06:00
fernando e42fca3c5b fix: inyectar config de Reverb desde PHP en runtime para producción
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 13:45:21 -06:00
fernando 9e8df4f7ee fix: usar disco uploads en public/ para compatibilidad con cPanel sin symlinks
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 13:39:19 -06:00
fernando 14048989a2 fix: usar Storage::url() como base para adjuntos en JS (compatible con producción)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 13:12:26 -06:00
fernando aefe1760cb fix: eliminar tailwind y postcss config 2026-04-26 12:50:56 -06:00
fernando 5deeaeed98 Merge branch 'fix-estilos-vite': chat multimedia
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 12:31:09 -06:00
fernando 7c95937b94 feat: renderizar adjuntos multimedia en el chat (imagen, video, audio, archivo)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 12:31:00 -06:00
fernando ab967e8ba4 feat: chat en tiempo real bidireccional funcionando con Reverb 2026-04-26 02:15:21 -06:00
fernando 2de99b8cd2 limpieza: eliminar tailwind y dependencias innecesarias 2026-04-25 23:47:16 -06:00
fernando 2b072f7d55 Guardar cambios consolidar grupos docentes y clave de grupo 2026-04-24 18:33:37 -06:00
fernando 2d73e8a2b0 Alta de modificaciones de grupo con alumbnos y docentes 2026-04-18 16:00:39 -06:00
fernando c502d047e9 se carga sdk de openPay 2026-03-31 17:26:51 -06:00