Hub

personal

medicinas

active low personal
Creado
2026-05-08
Actualizado
2026-05-27
Directorios
  • /home/sergio/code/medicinas

Actividad en bitácora 5 días

jun
jul
ago
sep
oct
nov
dic
ene
feb
mar
abr
may
L
X
V
Menos
Más

Medicinas

Contexto

Proyecto personal de Sergio: app para llevar control de inventario de medicinas y tratamientos médicos (uso personal/familiar).

Prioridad baja, activo.

Tareas pendientes

  • Resuelto 2026-05-15: PHP-FPM en val-soft tenía defaults Ubuntu (upload_max_filesize=2M, post_max_size=8M). Sergio aplicó /etc/php/8.3/fpm/conf.d/99-uploads.ini con 50M/60M/256M + /etc/nginx/conf.d/uploads.conf con client_max_body_size 50M. nginx site medicinas sigue con client_max_body_size 10M que es el límite efectivo — suficiente para fotos de receta de celular.
  • Resuelto 2026-05-15: la feature de subir fotos sí estaba implementada, pero solo en la tarjeta personal — el bloque familiar la había perdido al ultimo cambio. Refactor a PlanCard.vue compartido (commit d2a02ae en main); ahora ambos lados muestran ”+ Subir Foto” y la sección “Recetas / Notas”.
  • Resuelto 2026-05-27 [#287]: ver fotos de recetas desde el dashboard (no solo desde /plans). Confirmado por Sergio.
  • Resuelto 2026-05-27 [#288]: mostrar fecha final de cada medicamento en dashboard, calendar y /plans. Confirmado por Sergio.

En progreso

(Por confirmar.)

Notas técnicas

Stack

  • Laravel 13, PHP 8.5
  • Inertia v2 + Vue 3
  • Tailwind 3
  • Sanctum 4, Breeze 2 (auth scaffolding), Ziggy 2 (rutas Laravel en JS)
  • Laravel Sail (Docker)
  • PHPUnit 12 (no Pest aquí — el ANTIGRAVITY.md lo aclara: “If you see a test using Pest, convert it to PHPUnit”)

Skills declaradas en el ANTIGRAVITY.md

El proyecto declara que se deben activar estos skills cuando aplique:

  • laravel-best-practices — para todo código Laravel PHP.
  • inertia-vue-development — al crear pages/forms/navigation con Inertia v2 + Vue.
  • tailwindcss-development — al estilizar con Tailwind.

Convenciones especiales

  • PHPUnit, no Pest (override explícito al default de Boost).
  • Pint con vendor/bin/sail bin pint --dirty --format agent.

Bitácora

2026-05-27

  • Sergio confirma cerrados:
    • #287 Ver fotos de recetas desde el dashboard (no solo /plans).
    • #288 Mostrar fecha final de cada medicamento en dashboard, calendar y /plans.
  • Ambos bullets removidos de la sección de pendientes; entradas “Resuelto” agregadas con sus IDs. PENDIENTES.md actualizado: Personal medicinas queda sin pendientes abiertos.

2026-05-21

  • Sergio confirma que #134 “Subir fotos de las recetas” ya está hecho. La feature se implementó el 2026-05-15 (refactor a PlanCard.vue compartido, commit d2a02ae en main), pero el bullet había quedado abierto en PENDIENTES.md por olvido. Cierre formal hoy: bullet removido de PENDIENTES.md, entrada agregada a “Cerrado reciente” con ID #134, contador Personal 10→9.

2026-05-14 (parte 2 — noche)

  • Pidió Sergio: configurar Gmail SMTP en producción para enviar correos del password reset. Reportó error 500.
  • Causa raíz: en el .env de producción quedó MAIL_SCHEME=tls. Symfony Mailer (Laravel ≥9) solo acepta smtp o smtps como scheme — tls/ssl ya no son válidos. Error en log: The "tls" scheme is not supported; supported schemes for mailer "smtp" are: "smtp", "smtps".
  • Fix aplicado por Sergio: MAIL_SCHEME=null (o quitar la línea) con MAIL_PORT=587 → Symfony auto-detecta STARTTLS. Alternativa: MAIL_SCHEME=smtps + MAIL_PORT=465.
  • Estado: envío Gmail en producción funcionando.

2026-05-14 (parte 1)

  • Pidió Sergio: validar que se puede recuperar contraseña desde la UI.
  • Hice:
    • Revisión estática: rutas Breeze (routes/auth.php) cargadas desde web.php:46; Login.vue:65 muestra el link “¿La olvidaste?” condicional a canResetPassword; controller PasswordResetLinkController correcto.
    • Tests automatizados de Breeze: ./vendor/bin/sail test --filter=PasswordResetTest4/4 PASS (link screen renders, link can be requested, reset screen renders con token real, password can be reset with valid token).
    • End-to-end real contra Sail (app:8083, mailpit:8028) usando HTTP + Mailpit API:
      1. GET /forgot-password → 200.
      2. POST /forgot-password con email sevaor@gmail.com (Inertia + XSRF) → 302 back con flash status.
      3. Mailpit recibió “Reset your password” → sevaor@gmail.com.
      4. GET /reset-password/{token}?email=… → 200.
    • NO ejecuté el POST final a /reset-password para no invalidar la contraseña real de la cuenta. Ese paso ya está cubierto por el test test_password_can_be_reset_with_valid_token.
  • Estado: flujo de recuperación funcionando end-to-end. Mailpit recibe el correo; el link del correo lleva a una pantalla viva con el token.
  • Para validación 100% manual en browser: abrir http://localhost:8083/login, click “¿La olvidaste?”, meter el email, abrir Mailpit en http://localhost:8028, click el link, fijar nueva contraseña.

2026-05-08

  • Pidió Sergio: registrar el proyecto.
  • Hice: archivo creado con stack. Capturado el override a PHPUnit y los skills declarados.
  • Falta: Sergio dictará pendientes específicos.

2026-05-13

  • Pidió Sergio: agregar pendiente rápido — subir fotos de las recetas. Cree que ya lo había implementado, quizá solo falta el botón.
  • Hice: tarea agregada a pendientes. Revisar mañana (2026-05-14) qué hay ya implementado en el código y si solo falta exponer un botón en la UI.
  • Falta: revisar el codebase mañana.