Browse Source

minimal readme

Matthew Trejo 2 months ago
parent
commit
a6f80ccaf7
1 changed files with 42 additions and 323 deletions
  1. 42 323
      README.md

+ 42 - 323
README.md

@@ -1,344 +1,63 @@
-# Ani Assistant - Asistente Médico Virtual
+# Ani Assistant
 
-Una plataforma web completa para asistente virtual médico construida con Next.js, TypeScript, TailwindCSS y shadcn/ui.
+Plataforma de asistente médico virtual con Next.js, TypeScript y PostgreSQL.
 
-## 🚀 Características
+## Stack
 
-- **Autenticación completa** con NextAuth.js y roles de usuario (Admin/Doctor/Paciente)
-- **Chat médico inteligente** con integración de assistant-ui
-- **Generación automática de reportes médicos** después de 3 mensajes
-- **Base de datos PostgreSQL** con Prisma ORM
-- **Interfaz moderna y responsiva** con TailwindCSS y shadcn/ui
-- **Protección de rutas** según el rol del usuario
-- **Historial de reportes médicos** para pacientes y doctores
-- **Sistema de usernames únicos** generados automáticamente
-- **Almacenamiento de imágenes de perfil** en archivos
-- **Sistema de roles jerárquico** con permisos granulares
+Next.js 15 • TypeScript • PostgreSQL • Prisma • NextAuth.js • TailwindCSS • shadcn/ui
 
-## 🛠️ Tecnologías Utilizadas
+## Instalación Rápida
 
-- **Frontend**: Next.js 15, TypeScript, TailwindCSS
-- **UI Components**: shadcn/ui, assistant-ui
-- **Autenticación**: NextAuth.js
-- **Base de Datos**: PostgreSQL con Prisma ORM
-- **Encriptación**: bcryptjs
-- **Iconos**: Lucide React
-
-## 📋 Requisitos Previos
-
-- Node.js 18+ 
-- npm o yarn
-- PostgreSQL 12+ (instalado y ejecutándose)
-
-## 🚀 Instalación
-
-> **💡 Para una instalación rápida, consulta [guides/QUICK_START.md](guides/QUICK_START.md)**
-
-1. **Clonar el repositorio**
-   ```bash
-   git clone https://github.com/GeoShaPoH/ani-assistant
-   cd ani-assistant
-   ```
-
-2. **Instalar dependencias**
-   ```bash
-   npm install
-   ```
-
-3. **Instalar y configurar PostgreSQL**
-   
-   Si no tienes PostgreSQL instalado:
-   
-   **Windows:**
-   - Descarga desde [https://www.postgresql.org/download/windows/](https://www.postgresql.org/download/windows/)
-   - O usa Chocolatey: `choco install postgresql`
-   
-   **Crear la base de datos:**
-   ```bash
-   psql -U postgres
-   CREATE DATABASE ani_assistant;
-   \q
-   ```
-
-4. **Configurar variables de entorno**
-   
-   Copia el archivo `env.sample.txt` a `.env`:
-   ```bash
-   cp env.sample.txt .env
-   ```
-   
-   Edita el archivo `.env` con tus valores:
-   ```env
-   # NextAuth
-   NEXTAUTH_URL="http://localhost:3000"
-   NEXTAUTH_SECRET="your-secret-key-here"
-   
-   # Database (PostgreSQL)
-   DATABASE_URL="postgresql://postgres:tu-password@localhost:5432/ani_assistant"
-   
-   # OpenRouter (para el chat médico)
-   OPENROUTER_API_KEY="tu-api-key-de-openrouter"
-   OPENROUTER_URL="https://openrouter.ai/api/v1"
-   OPENROUTER_MODEL="deepseek/deepseek-chat-v3-0324:free"
-   ```
-   
-   **Nota**: 
-   - Reemplaza `tu-password` con la contraseña de tu usuario PostgreSQL
-   - Si no configuras `OPENROUTER_API_KEY`, el chat funcionará con respuestas de fallback
-   - Ejecuta `npm run check-env` para verificar la configuración
-
-5. **Configurar la base de datos**
-   ```bash
-   # Verificar configuración
-   npm run check-env
-   
-   # Generar el cliente de Prisma
-   npm run db:generate
-   
-   # Crear las tablas en PostgreSQL
-   npm run db:push
-   
-   # Configurar usuarios de prueba
-   npm run db:setup
-   ```
-
-6. **Ejecutar el servidor de desarrollo**
-   ```bash
-   npm run dev
-   ```
-
-7. **Abrir en el navegador**
-   ```
-   http://localhost:3000
-   ```
-
-## 🗄️ Estructura de la Base de Datos
-
-### Tabla User
-- `id`: String (CUID)
-- `name`: String
-- `lastname`: String
-- `username`: String (único, generado automáticamente)
-- `email`: String (único)
-- `password`: String (hash)
-- `role`: Enum (ADMIN/DOCTOR/PATIENT)
-- `profileImage`: String? (URL de la imagen)
-- `createdAt`: DateTime
-- `updatedAt`: DateTime
-
-### Tabla Record
-- `id`: String (CUID)
-- `userId`: String (referencia a User)
-- `content`: String (reporte médico)
-- `messages`: Json (opcional, mensajes del chat)
-- `createdAt`: DateTime
-
-## 🔐 Roles de Usuario
-
-### Administrador (ADMIN)
-- Control total del sistema
-- Gestión de usuarios (doctores y pacientes)
-- Visualización de todos los reportes médicos
-- Administración de configuraciones del sistema
-- Estadísticas completas del sistema
-- **No tiene acceso al chat médico** (rol administrativo)
-
-### Doctor (DOCTOR)
-- Visualización de pacientes asignados
-- Acceso a reportes médicos de sus pacientes
-- Seguimiento de consultas
-- **No tiene acceso al chat médico** (no es paciente)
-- **No puede gestionar usuarios** (solo visualizar)
-
-### Paciente (PATIENT)
-- Acceso al chat médico (máximo 3 mensajes por sesión)
-- Visualización de sus propios reportes médicos
-- Generación automática de reportes
-- Historial completo de sus consultas
-
-## 📱 Páginas Principales
+```bash
+# 1. Instalar dependencias
+npm install
 
-- **/** - Página de inicio
-- **/auth/login** - Inicio de sesión
-- **/auth/register** - Registro de usuarios
-- **/dashboard** - Panel principal (según rol)
-- **/chat** - Chat médico (solo pacientes)
-- **/records** - Historial de reportes
-- **/admin** - Panel de administración (solo administradores)
+# 2. Configurar .env (copiar de env.sample.txt)
+DATABASE_URL="postgresql://postgres:password@localhost:5432/ani_assistant"
+NEXTAUTH_SECRET="your-secret"
+OPENROUTER_API_KEY="optional"
 
-## 🔧 Configuración para Producción
+# 3. Setup base de datos
+npm run db:push
+npm run db:setup
 
-### Variables de Entorno de Producción
-```env
-NEXTAUTH_URL="https://your-domain.com"
-NEXTAUTH_SECRET="your-production-secret-key"
-DATABASE_URL="postgresql://user:password@host:5432/ani_assistant"
-OPENROUTER_API_KEY="tu-api-key-de-openrouter"
+# 4. Iniciar
+npm run dev
 ```
 
-### Despliegue en VPS (Digital Ocean)
-
-1. **Configurar el servidor**
-   ```bash
-   # Instalar Node.js
-   sudo apt update
-   sudo apt install nodejs npm
-   
-   # Instalar PostgreSQL
-   sudo apt install postgresql postgresql-contrib
-   ```
-
-2. **Configurar PostgreSQL**
-   ```bash
-   # Crear usuario y base de datos
-   sudo -u postgres psql
-   CREATE USER ani_user WITH PASSWORD 'your_password';
-   CREATE DATABASE ani_assistant OWNER ani_user;
-   GRANT ALL PRIVILEGES ON DATABASE ani_assistant TO ani_user;
-   \q
-   ```
-
-3. **Desplegar la aplicación**
-   ```bash
-   # Clonar el repositorio
-   git clone <repository-url>
-   cd ani-assistant
-   
-   # Instalar dependencias
-   npm install
-   
-   # Configurar variables de entorno
-   cp env.sample.txt .env
-   # Editar .env con las configuraciones de producción
-   
-   # Verificar configuración
-   npm run check-env
-   
-   # Generar build de producción
-   npm run build
-   
-   # Configurar base de datos
-   npm run db:push
-   npm run db:setup
-   
-   # Iniciar la aplicación
-   npm start
-   ```
-
-4. **Configurar PM2 (opcional)**
-   ```bash
-   npm install -g pm2
-   pm2 start npm --name "ani-assistant" -- start
-   pm2 startup
-   pm2 save
-   ```
+Ver [guides/QUICK_START.md](guides/QUICK_START.md) para más detalles.
 
-## 🔑 Configuración de OpenRouter
+## Roles
 
-Para que el chat médico funcione con IA, necesitas configurar OpenRouter:
+- **ADMIN**: Gestión de usuarios y sistema
+- **DOCTOR**: Visualización de pacientes y reportes
+- **PATIENT**: Chat médico y reportes personales
 
-1. **Registrarse en OpenRouter**
-   - Ve a [https://openrouter.ai](https://openrouter.ai)
-   - Crea una cuenta gratuita
-   - Obtén tu API key desde el dashboard
-
-2. **Configurar la API key**
-   - Agrega `OPENROUTER_API_KEY="tu-api-key"` en tu archivo `.env`
-   - La aplicación usará el modelo Claude 3.5 Sonnet por defecto
-
-3. **Funcionamiento sin API key**
-   - Si no configuras la API key, el chat funcionará con respuestas de fallback
-   - Las respuestas serán básicas pero funcionales
-
-## 🧪 Datos de Prueba
-
-Para probar la aplicación, puedes usar los usuarios creados automáticamente:
-
-### Usuario Administrador
-- Email: `admin@ani-assistant.com`
-- Password: `admin123`
-- Username: Generado automáticamente (ej: `sadmin`)
-- Role: `ADMIN`
-
-### Usuario Doctor
-- Email: `doctor@ani-assistant.com`
-- Password: `doctor123`
-- Username: Generado automáticamente (ej: `dsistema`)
-- Role: `DOCTOR`
-
-### Usuario Paciente
-- Email: `patient@ani-assistant.com`
-- Password: `patient123`
-- Username: Generado automáticamente (ej: `pprueba`)
-- Role: `PATIENT`
-
-**Nota**: Los usernames se generan automáticamente usando la primera letra del nombre + apellido. Si ya existe, se agrega un número (ej: `pprueba1`, `pprueba2`).
-
-## 📝 Scripts Disponibles
+## Scripts
 
 ```bash
-npm run dev          # Servidor de desarrollo
-npm run build        # Build de producción
-npm run start        # Servidor de producción
-npm run lint         # Linting
-npm run check-env    # Verificar variables de entorno
-npm run db:studio    # Interfaz de Prisma
-npm run db:push      # Crear/actualizar tablas
-npm run db:setup     # Configurar usuarios de prueba
-npm run db:seed      # Cargar datos de ejemplo
+npm run dev          # Desarrollo
+npm run build        # Producción
+npm run db:push      # Migrar DB
+npm run db:setup     # Usuarios de prueba
+npm run check-env    # Verificar config
 ```
 
-## 🔒 Seguridad
-
-- Contraseñas encriptadas con bcryptjs
-- Sesiones JWT seguras
-- Protección de rutas por rol
-- Validación de datos en el servidor
-- Sanitización de inputs
-- Usernames únicos generados automáticamente
-- Almacenamiento seguro de imágenes de perfil
-
-## 🤝 Contribución
-
-1. Fork el proyecto
-2. Crea una rama para tu feature (`git checkout -b feature/AmazingFeature`)
-3. Commit tus cambios (`git commit -m 'Add some AmazingFeature'`)
-4. Push a la rama (`git push origin feature/AmazingFeature`)
-5. Abre un Pull Request
+## Producción
 
-## 📄 Licencia
-
-Este proyecto está bajo la **Licencia Apache 2.0**. Esta licencia proporciona:
-
-- **Protección de propiedad intelectual** más robusta que MIT
-- **Permite uso comercial** y distribución
-- **Requiere atribución** y preservación de copyright
-- **Protección de patentes** explícita
-- **Contribuciones claramente definidas** para evitar conflictos
-
-Ver el archivo [LICENSE](LICENSE) para los términos completos.
-
-### ¿Por qué Apache 2.0?
-
-La Licencia Apache 2.0 es ideal para proyectos que quieren:
-- Mantener el código abierto y colaborativo
-- Proteger mejor la propiedad intelectual del autor original
-- Permitir uso comercial sin restricciones
-- Definir claramente qué constituye una contribución
-- Proporcionar protección de patentes explícita
-
-## ⚠️ Disclaimer
-
-Esta aplicación es para fines educativos y de demostración. No debe usarse para diagnóstico médico real sin la supervisión de profesionales médicos calificados.
-
-## 🆘 Soporte
-
-Si tienes problemas o preguntas:
-
-1. Revisa la documentación
-2. Busca en los issues existentes
-3. Crea un nuevo issue con detalles del problema
+```bash
+# Configurar PostgreSQL
+psql -U postgres
+CREATE DATABASE ani_assistant;
+
+# Desplegar
+npm install
+npm run build
+npm run db:push
+npm run db:setup
+npm start
+```
 
 ---
 
-**Desarrollado con ❤️ para la comunidad médica** 
+⚠️ Solo para fines educativos. No usar para diagnóstico médico real.