Sistema de gestión alimentaria para mascotas con análisis temporal
- Producción: https://petsikness.sikwow.com
- Desarrollo: https://petsiknessdev.sikwow.com
Pet SiKness es una aplicación web moderna para el seguimiento y gestión de la alimentación de mascotas. Permite registrar perfiles de mascotas, mantener un catálogo de alimentos con información nutricional completa, y llevar un diario detallado de alimentación con cálculo automático de balance diario.
- ✅ Perfiles de Mascotas: Información física, objetivos nutricionales, salud
- ✅ Catálogo de Alimentos: Base de datos con información nutricional completa
- ✅ Diario de Alimentación: Registro detallado con cantidades exactas y comportamiento
- ✅ Balance Diario: Cálculo automático de cumplimiento de objetivos con indicadores visuales
- ✅ Dashboard Analítico: Resumen en tiempo real con alertas críticas y tendencias semanales
- ✅ Navegación Temporal 🆕: Análisis por día/semana/mes/año con navegación intuitiva
- ✅ Filtros de Rango 🆕: DateRangePicker con 5 presets (hoy, últimos 7/30 días, semana, mes)
- ✅ Agrupación Visual 🆕: Historial organizado por fechas con headers y badges
- ✅ Registro Multi-Mascota 🆕: Alimentación grupal con datos comunes + cantidades individuales
- ✅ Formularios Inteligentes: Validación en tiempo real y cálculo automático de sobras
- ✅ Filtros Avanzados: Búsqueda por mascota, alimento, fecha y estado
- ✅ Multi-hogar: Gestión de múltiples familias de mascotas
- ✅ Auth Seguro: Google OAuth 2.0
- Node.js 20+
- PostgreSQL 15+
- PM2 (para producción)
- Cuenta Google OAuth (credenciales configuradas)
# Clonar repositorio
git clone https://github.com/Kavalieri/PetSiKness.git
cd PetSiKness
# Instalar dependencias
npm install
# Configurar variables de entorno
cp .env.development.local.example .env.development.local
# Editar con tus credenciales de base de datos y Google OAuth# Conectarse como postgres
sudo -u postgres psql
# Crear roles
CREATE ROLE pet_owner NOLOGIN;
CREATE ROLE pet_user LOGIN PASSWORD 'tu_password_seguro';
# Crear base de datos DEV
CREATE DATABASE pet_sikness_dev OWNER pet_owner;
# Aplicar baseline schema
\c pet_sikness_dev
\i database/migrations/20251109_000000_baseline_v1.0.0.sql
# Configurar ~/.pgpass para acceso sin contraseña
echo "127.0.0.1:5432:pet_sikness_dev:pet_user:tu_password" >> ~/.pgpass
chmod 600 ~/.pgpass# Iniciar servidor DEV (puerto 3002)
./scripts/PM2_build_and_deploy_and_dev/pm2-dev-start.sh
# O con npm
npm run dev
# Acceder
https://petsiknessdev.sikwow.com# Build
npm run build
# Iniciar con PM2 (puerto 3003)
./scripts/PM2_build_and_deploy_and_dev/pm2-prod-start.sh
# Acceder
https://petsikness.sikwow.com┌─────────────────────────────────────────┐
│ Frontend (Next.js) │
│ React 18 + Server Components + RSC │
│ Tailwind CSS + shadcn/ui + Radix UI │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ Backend (Next.js API Routes) │
│ Server Actions + NextAuth + Zod │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ Database (PostgreSQL 15) │
│ 7 tablas + 1 vista + 5 triggers │
│ Types auto-generados (kysely-codegen) │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ Process Manager (PM2) │
│ DEV: 3002 | PROD: 3003 │
└─────────────────────────────────────────┘
repo/
├── app/ # Next.js App Router
│ ├── api/auth/ # NextAuth endpoints
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Home page
│ └── login/ # Login page
├── components/ # Componentes UI reutilizables
│ └── ui/ # shadcn/ui components
├── lib/ # Helpers y utilidades
│ ├── db.ts # PostgreSQL connection pool
│ ├── auth.ts # Auth helpers
│ └── result.ts # Result type pattern
├── types/ # TypeScript types
│ ├── database.generated.ts # Auto-generado desde DB
│ └── next-auth.d.ts # NextAuth extensions
├── database/ # Migraciones SQL
│ └── migrations/
├── scripts/ # Scripts operativos
│ ├── migrations/ # Type generation
│ └── PM2_build_and_deploy_and_dev/ # PM2 management
├── .vscode/ # VSCode tasks y settings
└── public/ # Assets estáticos
Profiles → Usuarios del sistema (OAuth)
- auth_id, email, display_name, avatar_url
Households → Familias de mascotas
- name, created_by
Household Members → Membresía en hogares
- role (owner/member)
Pets → Perfiles de mascotas
- Información física: species, breed, weight, body_condition
- Objetivos: daily_food_goal_grams, daily_meals_target
- Salud: allergies[], medications[], health_notes
- Comportamiento: appetite, activity_level
Foods → Catálogo de alimentos
- Nutrición: calories_per_100g, protein%, fat%, carbs%, fiber%, moisture%
- Producto: brand, ingredients, serving_size, price
- Calidad: palatability, digestibility
- Restricciones: suitable_for_species[], age_range
Feedings → Registros de alimentación
- Qué: pet_id, food_id
- Cuándo: feeding_date, feeding_time, meal_number
- Cantidades: served_grams, eaten_grams, leftover_grams
- Comportamiento: appetite_rating, eating_speed
- Resultados: vomited, had_diarrhea, stool_quality
Daily Feeding Summary (Vista) → Resumen agregado
- total_eaten vs daily_goal
- goal_achievement_pct
- under/met/over_target status
profiles
↓
household_members ←→ households
↓ ↓
pets ←→ feedings ←→ foods
↓
daily_feeding_summary (view)
- Google OAuth 2.0 vía NextAuth
- Sessions JWT con 30 días de expiración
- Auto-creación de perfiles en primer login
- Roles PostgreSQL con mínimos privilegios
- Usuario de aplicación sin permisos DDL
- Queries parametrizadas (protección SQL injection)
- Conexión sin contraseña vía ~/.pgpass
- Filtrado obligatorio por
household_id - Verificación de membresía en Server Actions
- RLS (Row Level Security) preparado para futuro
npm run dev # Servidor DEV (puerto 3002)
npm run typecheck # Verificar tipos TypeScript
npm run lint # ESLintnpm run types:generate:dev # Generar types desde DEV DB
npm run types:generate:prod # Generar types desde PROD DBnpm run build # Build para producción
npm start # Servidor PROD (puerto 3003)./scripts/PM2_build_and_deploy_and_dev/pm2-dev-start.sh # Iniciar DEV
./scripts/PM2_build_and_deploy_and_dev/pm2-dev-stop.sh # Detener DEV
./scripts/PM2_build_and_deploy_and_dev/pm2-prod-start.sh # Iniciar PROD
./scripts/PM2_build_and_deploy_and_dev/pm2-prod-stop.sh # Detener PROD
./scripts/PM2_build_and_deploy_and_dev/pm2-status.sh # Ver estadoEstado: Testing pendiente de implementación
# Cuando se implementen
npm test # Ejecutar tests
npm run test:watch # Tests en modo watch
npm run test:coverage # Cobertura de testsDesarrollo (.env.development.local):
DATABASE_URL="postgresql://pet_user:PASSWORD@localhost:5432/pet_sikness_dev"
GOOGLE_CLIENT_ID="..."
GOOGLE_CLIENT_SECRET="..."
NEXTAUTH_URL="http://localhost:3002"
NEXTAUTH_SECRET="..."
PORT=3002
NODE_ENV=developmentProducción (.env.production.local):
DATABASE_URL="postgresql://pet_user:PASSWORD@localhost:5432/pet_sikness_prod"
GOOGLE_CLIENT_ID="..."
GOOGLE_CLIENT_SECRET="..."
NEXTAUTH_URL="https://petsikness.com"
NEXTAUTH_SECRET="..."
PORT=3003
NODE_ENV=production- Build:
npm run build - Backup DB:
sudo -u postgres pg_dump pet_sikness_prod > backup.sql - Migraciones: Aplicar cambios de schema si hay
- Deploy:
./scripts/PM2_build_and_deploy_and_dev/pm2-prod-start.sh - Smoke Test: Verificar endpoints críticos
- AGENTS.md: Instrucciones para agentes IA
- docs/ESTADO_PROYECTO.md: Estado actual y roadmap
- docs/FASE_2_PLAN.md: Plan detallado CRUD Mascotas
- docs/FASE_4_COMPLETADO.md: Documentación completa Fase 4
- database/README.md: Documentación de base de datos
- app/AGENTS.md: Patrones de componentes Next.js
- .vscode/tasks.json: Tareas de VSCode disponibles
- .github/copilot-instructions.md: GitHub Copilot setup
Estado: Proyecto en desarrollo avanzado (v1.1.0 - Fase 4 completada)
Cuando esté listo para contribuciones:
- Fork del repositorio
- Crear rama feature (
git checkout -b feature/AmazingFeature) - Commit cambios (
git commit -m 'feat: add amazing feature') - Push a la rama (
git push origin feature/AmazingFeature) - Abrir Pull Request
Usamos Conventional Commits:
feat: nueva funcionalidad
fix: corrección de bug
docs: cambios en documentación
style: formato, puntos y comas, etc
refactor: refactorización de código
test: añadir tests
chore: cambios en build, etc
MIT License - ver archivo LICENSE para detalles
- Kava - Desarrollo inicial - Kavalieri
- AI Assistant - Setup automático y documentación
- Proyecto hermano: CuentasSiK - Inspiración arquitectónica
- Next.js - Framework React
- shadcn/ui - Componentes UI
- Radix UI - Primitivas UI accesibles
- Kysely - Type-safe SQL query builder
Proyecto: Pet SiKness Repositorio: https://github.com/Kavalieri/PetSiKness Website: https://petsikness.com (futuro)
Última actualización: 11 de Noviembre de 2025 - v1.2.0 Estado: ✅ Fase 4.5 completada - Sistema completo de alimentación con navegación temporal y registro multi-mascota