Saltar al contenido
Inicio — Juan Torres

Centro de control

Utilidades

ProfesionalDía
Nyan CatEl cielo de Nyan, en píxeles
Nyan ⇄ EclipseCursor

Pista: en su cielo hay una estrella que no se deja atrapar.

KirbySe abre al vencer al rey Dedede

Pista: en el juego de la estrella, Kirby también vuela.

Todo: cursor contextual, imágenes con inercia, flores con física y sonido ambiental.

CV
jstorres.xora@gmail.com

Proyectos

Proyecto · Gestión comercial para una tienda peruana · 2026

Tienda App

Facturas y boletas con IGV, compras, cotizaciones, inventario con kardex y carga masiva desde Excel: lo que necesita una tienda de barrio para dejar el cuaderno, con un frontend en Vue y una API en NestJS.

Panel principal: ventas, compras y margen del mes, alertas de stock y productos más vendidos.

Ficha

Mi parte
Todo: el modelo de datos, la API, el frontend y el despliegue, con ayuda de Claude en casi cada commit.
Con quién
Proyecto personal
Cuándo
2026
Hoy
Desplegada (Vercel + Render) · repositorio privado

Las capturas usan una empresa y productos inventados. El repositorio es privado.

El cuaderno de la tienda

Una tienda de barrio vende arroz, aceite y gaseosa todo el día, emite boletas, compra a proveedores y tiene que saber qué se está acabando. Casi todo eso se lleva en un cuaderno.

Vender

Una boleta

Una boleta

Los comprobantes

Los comprobantes

Lo que hay en el almacén

Inventario

Inventario

Compras

Compras

Excel de ida y vuelta

Excel de ida y vuelta

Por qué así

  1. Precios con IGV incluido

    En la tienda se cobra el precio final. El sistema separa la base imponible después, con la tasa guardada como parámetro y no escrita en el código.

  2. Stock y kardex juntos

    Vender y registrar el movimiento ocurren en la misma transacción; anular una venta devuelve el stock.

  3. Frontend y API separados

    La interfaz en Vercel llama a «/api» y Vercel la redirige a Render: en el navegador no hay problemas de CORS y en local se usa la misma dirección.

  4. Lo de SUNAT, después

    La emisión electrónica oficial (XML firmado) quedó como módulo enchufable. Primero, que la gestión interna funcione.

Con qué

Lenguajes

  • TypeScript

El mismo lenguaje en la API y en la interfaz.

Frameworks

  • NestJS
  • Vue
  • PrimeVue
  • Prisma

Doce módulos de API, la interfaz en Vue 3 y el acceso a datos tipado.

Datos

  • PostgreSQL

Diecisiete modelos, separados por empresa.

Infraestructura

  • Vercel
  • Render

El frontend en Vercel; la API y la base en Render.

IA

  • Claude

Desarrollo asistido de punta a punta.

En código

modelos de datos
17
módulos de la API
12
líneas entre API e interfaz
~9900
pruebas automatizadas, todavía
0

Lo que no salió

No tiene pruebas automatizadas: todo se probó a mano. Y el plan gratuito de Render borra la base a los 30 días, así que la demo no es un lugar para guardar nada.

  • El visor del PDF funcionaba en local y en producción no abría: el navegador bloqueaba la ventana porque se abría después de esperar al servidor. Lo encontré desplegando.
  • La facturación electrónica ante SUNAT no existe todavía.
  • No hay ningún negocio usándola: es un sistema completo esperando su primera tienda.

El comprobante

PDF generado por la API

PDF generado por la API

Qué me llevé

  • Las reglas del negocio peruano (IGV, series, notas de crédito) pesan más que la tecnología.
  • Desplegar temprano encuentra errores que en local no existen.
  • Construir rápido con IA deja una deuda clara: las pruebas que no escribí.