René Cano
Todos los proyectos

Núm. 7

Home Inventory System

Inventario del hogar con predicción de consumo

Mi rol
Autor único
Periodo
Dic 2025

El problema

En casa las cosas se acaban sin aviso: nadie lleva la cuenta de cuánto se consume y la lista del súper se arma de memoria. Quise un inventario que, además de contar existencias, avisara qué se va a terminar pronto.

Qué construí

Lo hice solo, en 5 commits del 22 y 23 de diciembre de 2025.

  • Una API FastAPI con SQLAlchemy y 4 migraciones de Alembic: productos con existencia mínima, movimientos de consumo y reabastecimiento ligados a un usuario, y una lista de compras con casillas.
  • Una app Next.js para el uso diario, con acceso por usuario y PIN.
  • La estimación de días restantes: suma el consumo de los últimos 14 días, lo divide entre 14 y calcula para cuántos días alcanza la existencia actual. Primero muestra lo que ya está bajo el mínimo y después lo que se acabará antes.
  • Un Docker Compose con PostgreSQL 16, la API y el frontend.

Arquitectura

Diagrama de arquitectura: el usuario entra con su nombre y PIN a una app Next.js; la app llama a una API FastAPI de productos, movimientos, lista de compras y usuarios, que guarda en PostgreSQL 16 con 4 migraciones de Alembic; los tres servicios corren en Docker Compose; la predicción de días restantes se calcula en el navegador con el consumo de los últimos 14 días.

Resultados

Es un proyecto personal sin métricas de uso. Lo verificable está en el código: el esquema con sus migraciones, la API y el cálculo de días restantes.

Límites conocidos

  • Las rutas de la API no exigen autenticación. El login solo identifica al usuario en el frontend, y la sesión se guarda en localStorage.
  • El PIN se guarda como SHA-256 sin sal, y JWT_SECRET está en el docker-compose pero no se usa. Antes de exponerlo fuera de casa necesita un hash lento con sal y tokens reales.
  • La predicción se calcula en el navegador sobre los últimos 500 movimientos y es un promedio simple: no considera temporadas ni compras grandes.
  • No hay tests ni CI.

Links