# Proyecto Myristica - Documentacion Completa

## Que es Myristica

Webapp interna familiar para trackear el alquiler del local comercial/gastronomico en **Arcos 1836, CABA**. Los inquilinos no han aplicado ninguno de los 4 ajustes trimestrales por IPC que corresponden desde que empezo el contrato (marzo 2025), y ademas pagan tarde. Esta app calcula:

- El alquiler correcto segun IPC oficial (INDEC)
- La diferencia entre lo que deberian pagar y lo que pagan
- Penalidades diarias acumuladas (0.30% diario sobre diferencias impagas)
- Comparacion entre escenario legal (IPC) vs acuerdo verbal ($4,500,000)

Usuarios: Ignacio Lagos Ruiz y su hermana Eleonora.

---

## Stack Tecnologico

- **Next.js 16.2.1** (App Router, TypeScript, Turbopack)
- **Tailwind CSS 4** (usa `@theme inline` syntax)
- **Drizzle ORM** con PostgreSQL (postgres.js driver)
- **NextAuth v5** (beta) con Credentials provider, JWT strategy
- **Supabase** como base de datos PostgreSQL en la nube
- **Vercel** para deployment (conectado a GitHub, auto-deploy on push)
- **GitHub repo**: https://github.com/ignaciolagosruiz/myristica (PRIVADO)

### IMPORTANTE sobre Next.js 16.2.1
Esta version tiene breaking changes vs versiones anteriores:
- `cookies()` y `headers()` son **async** (hay que usar `await`)
- `params` en page components es una **Promise**
- `middleware.ts` esta **deprecated** en favor de "proxy" (funciona pero da warning)
- Leer guias en `node_modules/next/dist/docs/` antes de escribir codigo

---

## Estructura del Proyecto

```
myristica/
  app/                          # <- Este es el proyecto Next.js (root del git repo)
    src/
      app/
        page.tsx                # Root - redirect a /dashboard o /login
        login/page.tsx          # Login form (client component)
        dashboard/page.tsx      # Dashboard principal con resumen
        ajustes-ipc/page.tsx    # Detalle de ajustes IPC
        pagos/page.tsx          # Historial de pagos
        api/auth/[...nextauth]/route.ts  # NextAuth API route
      components/
        Navbar.tsx              # Nav responsive con hamburger menu
      lib/
        contract.ts             # Constantes del contrato, IPC datos, calendario
        db.ts                   # Conexion a PostgreSQL via postgres.js
        schema.ts               # Esquema Drizzle (pgTable)
        auth.ts                 # Config NextAuth v5
        ipc.ts                  # Calculos de ajustes IPC
        penalties.ts            # Calculos de penalidades
      middleware.ts             # Proteccion de rutas (usa next-auth/jwt, Edge compatible)
    seed.ts                     # Script para poblar la DB
    drizzle.config.ts           # Config Drizzle para PostgreSQL
    .env.local                  # Variables de entorno (NO commitear)
    package.json
    tsconfig.json
    tailwind.config.ts
  memory/                       # Archivos de memoria para Claude
  .claude/                      # Config de Claude
```

---

## Datos del Contrato

- **Inicio**: 1 de marzo 2025
- **Duracion**: 3 anos
- **Monto base**: $3,500,000/mes
- **Ajuste**: Trimestral por IPC (INDEC)
- **Penalidad por mora**: 0.30% diario sobre monto impago
- **Acuerdo verbal**: $4,500,000/mes (los inquilinos propusieron esto en vez de aplicar IPC)

### Calendario de Ajustes IPC
1. **1 jun 2025**: IPC feb 2025 / IPC nov 2024
2. **1 sep 2025**: IPC may 2025 / IPC feb 2025
3. **1 dic 2025**: IPC ago 2025 / IPC may 2025
4. **1 mar 2026**: IPC nov 2025 / IPC ago 2025

### Datos IPC (INDEC, serie 148.3_INIVELNAL_DICI_M_26)
```
nov 2024: 7694.0075
dic 2024: 7920.8800
ene 2025: 8133.5398
feb 2025: 8328.7400
mar 2025: 8569.1900
abr 2025: 8882.1455
may 2025: 9102.6355
jun 2025: 9326.5775
jul 2025: 9473.9575
ago 2025: 9693.9375
sep 2025: 9957.2155
oct 2025: 10197.1055
nov 2025: 10416.9855
dic 2025: 10551.9455
ene 2026: 10615.6955
feb 2026: 10714.6255
```

### Resultados de los calculos (al 23 marzo 2026)
- **Alquiler IPC actual**: $4,634,413/mes (tras 4 ajustes aplicados)
- **Deuda total por diferencias IPC**: $9,469,174
- **Penalidades acumuladas**: ~$2,323,733
- **Total adeudado**: ~$11,792,907
- **Tasa diaria**: +$28,408/dia
- Marzo 2026 esta confirmado como IMPAGO ($0)

---

## Base de Datos (Supabase)

### Conexion
```
Host: aws-1-us-east-1.pooler.supabase.com
Port: 6543
Database: postgres
User: postgres.kszwxklcerptpiacnypn
Password: MyristicaArcos1836
```

Connection string: `postgresql://postgres.kszwxklcerptpiacnypn:MyristicaArcos1836@aws-1-us-east-1.pooler.supabase.com:6543/postgres`

Supabase project: `kszwxklcerptpiacnypn` (org: `nachlakes`)

### Tablas (Drizzle schema)
- `contratos` - datos del contrato
- `indices_ipc` - valores IPC por mes
- `ajustes_ipc` - ajustes trimestrales calculados
- `cuotas_esperadas` - montos esperados por mes
- `pagos` - pagos realizados por inquilinos
- `usuarios` - usuarios con acceso (Ignacio y Eleonora)

### Usuarios seeded
- **ignacio** / `myristica2026` (Ignacio Lagos Ruiz)
- **eleonora** / `arcos1836` (Eleonora Lagos Ruiz)

Las tablas ya estan creadas y pobladas con `drizzle-kit push` y `tsx seed.ts`.

---

## Variables de Entorno (.env.local)

```env
AUTH_SECRET=myristica-dev-secret-change-in-production-2026
AUTH_TRUST_HOST=true
DATABASE_URL=postgresql://postgres.kszwxklcerptpiacnypn:MyristicaArcos1836@aws-1-us-east-1.pooler.supabase.com:6543/postgres
```

Estas mismas variables estan configuradas en Vercel.

---

## Estado del Deployment (Vercel)

- Repo conectado a Vercel (auto-deploy on push a main)
- Vercel project: `myristica` en team `ignaciolagosruizs-projects`
- **Primer deploy fallo** por un error de TypeScript (literal type en ipc.ts)
- **Fix aplicado y pusheado**: `let montoActual: number = ...` (commit 20da08e)
- **Segundo deploy EXITOSO** ✅ (37s, commit 20da08e)
- **URL de produccion**: https://myristica-eight.vercel.app
- Login: ignacio / myristica2026 (o eleonora / arcos1836)

---

## Que falta hacer

### Inmediato
1. **Verificar que el deploy de Vercel funciono** - ir a https://vercel.com/ignaciolagosruizs-projects/myristica/deployments
2. **Probar login en produccion** - verificar que auth funciona con la URL de Vercel
3. **Verificar datos en produccion** - que el dashboard muestre los numeros correctos

### Mejoras futuras
- Agregar formulario para registrar pagos reales (en vez de hardcoded)
- Actualizar IPC automaticamente cuando INDEC publique nuevos datos
- Agregar seccion de gastos/expensas (Eleonora junta boletas de servicios)
- Mejorar el AUTH_SECRET para produccion (generar uno random)
- Agregar pagina de detalle de penalidades dia por dia
- Considerar agregar notificaciones cuando se acerca fecha de pago

---

## Comandos utiles

```bash
# Desde la carpeta app/
cd "C:/Users/ignac/OneDrive/Documents/claude/myristica/app"

# Correr en desarrollo
npm run dev

# Build de produccion
npx next build

# Push schema a Supabase
npx drizzle-kit push

# Seed de la base de datos
npx tsx seed.ts

# Deploy manual a Vercel (si auto-deploy no funciona)
npx vercel --prod

# Ver logs de Vercel
npx vercel logs [url]
```

---

## Prompt para continuar con otro modelo

Copia y pega esto como primer mensaje:

```
Estoy trabajando en un proyecto llamado Myristica. Es una webapp Next.js 16.2.1 (App Router, TypeScript, Tailwind CSS 4, Drizzle ORM, NextAuth v5) que trackea el alquiler de un local comercial en Arcos 1836, CABA.

El proyecto esta en: C:/Users/ignac/OneDrive/Documents/claude/myristica/app

Lee el archivo C:/Users/ignac/OneDrive/Documents/claude/myristica/PROYECTO_MYRISTICA.md para el contexto completo del proyecto.

Lo ultimo que hicimos fue:
1. Fix de un error TypeScript en src/lib/ipc.ts (literal type error) - ya commiteado y pusheado
2. El deploy a Vercel deberia haber corrido automaticamente con el push

Lo que necesito ahora:
1. Verificar que el deploy de Vercel funciono (ir a https://vercel.com/ignaciolagosruizs-projects/myristica/deployments o probar la URL de produccion)
2. Si fallo, diagnosticar y arreglar
3. Si funciono, probar que el login y dashboard funcionan en produccion

IMPORTANTE: Next.js 16.2.1 tiene breaking changes - cookies()/headers() son async, params es Promise, middleware esta deprecated. Lee node_modules/next/dist/docs/ antes de escribir codigo.
```
