Skip to content

arauzkj/ALGSIconsultores

Repository files navigation

ALGSI Consultores

Sistema integral de gestión documental y seguimiento de clientes para consultores legales, desarrollado con tecnologías web modernas y arquitectura escalable.

🚀 Estado del Proyecto (Actualizado Junio 2025)

El proyecto se encuentra en fase de desarrollo activo con las siguientes funcionalidades implementadas:

✅ Funcionalidades Completadas

  • 🔐 Sistema de Autenticación - Login/Register con NextAuth.js
  • 👥 Gestión de Usuarios - Registro y administración de usuarios por empresa
  • 🏢 Gestión de Empresas - Sistema multi-empresa
  • ⚖️ Gestión de Abogados - Registro y administración de profesionales legales
  • 👤 Gestión de Clientes - CRUD completo de clientes con información detallada
  • 📄 Sistema de Documentos - Upload, gestión y clasificación de documentos
  • Tipos de Documentos - Categorización y clasificación documental
  • 📊 Dashboard Administrativo - Panel de control con métricas y datos
  • Sistema de Contacto - Formulario de contacto con notificaciones
  • 🗺️ Integración con Google Maps - Componente de mapas para ubicaciones
  • Interfaz Responsiva - Diseño adaptable para todos los dispositivos
  • 🧪 Testing Suite - Cobertura de pruebas con Jest y Testing Library

� Funcionalidades en Desarrollo

  • 🔍 Búsqueda Avanzada - Filtros y búsqueda en documentos

🛠️ Stack Tecnológico

Frontend

Backend & Database

Servicios Externos

Testing & Desarrollo

🏗️ Arquitectura del Proyecto

Estructura de Base de Datos

- usuario: Gestión de usuarios del sistema
- empresa: Empresas/Firmas legales
- abogado: Profesionales legales registrados
- cliente: Base de datos de clientes
- documento: Documentos legales y archivos
- tipodocumento: Clasificación de documentos
- tipocedula: Tipos de identificación
- citaspresentacion: Gestión de citas y presentaciones
- clientedocumento: Relación cliente-documento

API Endpoints Disponibles

/api/auth/[...nextauth] - Autenticación NextAuth
/api/contact - Formulario de contacto
/api/customer - CRUD de clientes
/api/dashboard - Datos del dashboard
/api/files - Gestión de archivos
/api/lawyer - Gestión de abogados
/api/send - Envío de emails
/api/user - Gestión de usuarios

🚀 Instalación y Configuración

Prerrequisitos

  • Node.js 18+
  • npm o yarn
  • Base de datos CockroachDB (o compatible con PostgreSQL)
  • Cuenta de Cloudinary para gestión de archivos

Pasos de Instalación

  1. Clonar el repositorio:
git clone https://github.com/kjarj54/ALGSIconsultores.git
cd ALGSIconsultores
  1. Instalar dependencias:
npm install
  1. Configurar variables de entorno:
# Crear archivo .env.local en la raíz del proyecto
copy .env.example .env.local
  1. Configurar las siguientes variables en .env.local:
# Base de datos
DATABASE_URL="postgresql://username:password@host:port/database"

# Autenticación
NEXTAUTH_SECRET="tu-secreto-super-seguro"
NEXTAUTH_URL="http://localhost:3000"

# Cloudinary
CLOUDINARY_CLOUD_NAME="tu-cloud-name"
CLOUDINARY_API_KEY="tu-api-key"
CLOUDINARY_API_SECRET="tu-api-secret"

# Resend (Email)
RESEND_API_KEY="tu-resend-api-key"

# Google Maps (opcional)
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY="tu-google-maps-key"
  1. Configurar la base de datos:
# Generar cliente de Prisma
npx prisma generate

# Ejecutar migraciones
npx prisma migrate deploy

# (Opcional) Poblar base de datos
npx prisma db seed
  1. Iniciar el servidor de desarrollo:
npm run dev

La aplicación estará disponible en http://localhost:3000

📁 Estructura del Proyecto

ALGSIconsultores/
├── 📁 src/
│   ├── 📁 app/                    # App Router de Next.js
│   │   ├── 📁 api/               # API Routes
│   │   │   ├── 📁 auth/          # Autenticación
│   │   │   ├── 📁 contact/       # Contacto
│   │   │   ├── 📁 customer/      # Clientes
│   │   │   ├── 📁 dashboard/     # Dashboard
│   │   │   ├── 📁 files/         # Archivos
│   │   │   ├── 📁 lawyer/        # Abogados
│   │   │   ├── 📁 send/          # Emails
│   │   │   └── 📁 user/          # Usuarios
│   │   ├── 📁 About/             # Página Acerca de
│   │   ├── 📁 Contact/           # Página de Contacto
│   │   ├── 📁 Dashboard/         # Dashboard principal
│   │   ├── 📁 Login/             # Página de login
│   │   ├── 📁 Register/          # Página de registro
│   │   └── 📁 Services/          # Página de servicios
│   ├── 📁 components/            # Componentes reutilizables
│   │   ├── 📁 About/             # Componentes de About
│   │   ├── 📁 Contact/           # Componentes de contacto
│   │   ├── 📁 Dashboard/         # Componentes del dashboard
│   │   ├── 📁 EmailTemplate/     # Templates de email
│   │   ├── 📁 Footer/            # Componentes de footer
│   │   ├── 📁 Header/            # Componentes de header
│   │   ├── 📁 Icons/             # Iconos personalizados
│   │   ├── 📁 LandingPage/       # Componentes de landing
│   │   ├── 📁 Login/             # Componentes de login
│   │   ├── 📁 MapComponent/      # Componentes de mapas
│   │   ├── 📁 Register/          # Componentes de registro
│   │   ├── 📁 Services/          # Componentes de servicios
│   │   ├── 📁 Skeletons/         # Loading skeletons
│   │   ├── 📁 Tabs/              # Componentes de tabs
│   │   └── 📁 ui/                # Componentes UI base
│   ├── 📁 hooks/                 # Custom hooks
│   ├── 📁 lib/                   # Utilidades y configuraciones
│   │   ├── 📁 utils/             # Funciones utilitarias
│   │   ├── authOptions.ts        # Configuración NextAuth
│   │   ├── cloudinary.ts         # Configuración Cloudinary
│   │   ├── prisma.ts             # Cliente Prisma
│   │   ├── schemas.ts            # Esquemas de validación
│   │   └── utils.ts              # Utilidades generales
│   └── 📁 types/                 # Definiciones de tipos TypeScript
├── 📁 prisma/                    # Configuración de base de datos
│   ├── 📁 migrations/            # Migraciones de BD
│   └── schema.prisma             # Esquema de base de datos
├── 📁 public/                    # Archivos estáticos
├── 📁 __tests__/                 # Pruebas unitarias
├── 📁 coverage/                  # Reportes de cobertura
└── 📁 lib/                       # Configuraciones adicionales

🧪 Testing

El proyecto incluye una suite completa de pruebas:

Ejecutar Pruebas

# Ejecutar todas las pruebas
npm run test

# Ejecutar pruebas en modo watch
npm run test:watch

# Generar reporte de cobertura
npm run test:coverage

Cobertura de Pruebas

  • ✅ Componentes de páginas principales
  • ✅ Funcionalidades de autenticación
  • ✅ Formularios y validaciones
  • ✅ Componentes de dashboard
  • ✅ Helpers y utilidades

📋 Scripts Disponibles

npm run dev          # Servidor de desarrollo
npm run build        # Build de producción
npm start            # Servidor de producción
npm run lint         # Análisis de código con ESLint
npm run test         # Ejecutar pruebas
npm run test:watch   # Pruebas en modo watch
npm run test:coverage # Generar reporte de cobertura

🔧 Configuración Adicional

Configuración de Cloudinary

Para el correcto funcionamiento del sistema de archivos, asegúrate de:

  1. Crear una cuenta en Cloudinary
  2. Obtener las credenciales (Cloud Name, API Key, API Secret)
  3. Configurar las variables de entorno correspondientes

Configuración de Google Maps

Para la funcionalidad de mapas:

  1. Crear un proyecto en Google Cloud Console
  2. Habilitar Google Maps JavaScript API
  3. Obtener una API Key
  4. Configurar la variable NEXT_PUBLIC_GOOGLE_MAPS_API_KEY

Configuración de Email (Resend)

Para el sistema de notificaciones por email:

  1. Crear una cuenta en Resend
  2. Obtener la API Key
  3. Configurar la variable RESEND_API_KEY

🤝 Contribución al Proyecto

Desarrollador Principal

Desarrollado por: kjarj54 - Desarrollador Full Stack

Este proyecto ha sido desarrollado íntegramente por un solo desarrollador, implementando todas las funcionalidades desde el diseño de la base de datos hasta la interfaz de usuario.

Flujo de Desarrollo

  1. Fork del repositorio
  2. Crear una rama para la funcionalidad:
    git checkout -b feature/nueva-funcionalidad
  3. Realizar cambios y commits:
    git add .
    git commit -m "feat: descripción de la nueva funcionalidad"
  4. Ejecutar pruebas:
    npm run test
    npm run lint
  5. Push y crear Pull Request

Estándares de Código

  • TypeScript: Uso obligatorio para type safety
  • ESLint: Seguir las reglas configuradas
  • Prettier: Formateo automático de código
  • Conventional Commits: Usar formato de commits convencionales
  • Testing: Incluir pruebas para nuevas funcionalidades

Estructura de Commits

feat: nueva funcionalidad
fix: corrección de bug
docs: actualización de documentación
style: cambios de estilo/formato
refactor: refactorización de código
test: adición o modificación de pruebas
chore: tareas de mantenimiento

🚀 Deployment

Variables de Entorno de Producción

Asegúrate de configurar las siguientes variables en tu plataforma de deployment:

DATABASE_URL=
NEXTAUTH_SECRET=
NEXTAUTH_URL=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
RESEND_API_KEY=
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=

Build de Producción

# Generar build optimizado
npm run build

# Iniciar servidor de producción
npm start

📊 Métricas del Proyecto

Estado de Testing

  • Cobertura: ~85% de cobertura de código
  • Pruebas: 7 suites de pruebas principales
  • Componentes Probados: Todas las páginas principales

Rendimiento

  • Lighthouse Score: 90+ en todas las métricas
  • Core Web Vitals: Optimizado para móviles y escritorio
  • SEO: Configurado para motores de búsqueda

🛡️ Seguridad

Medidas Implementadas

  • ✅ Autenticación robusta con NextAuth.js
  • ✅ Encriptación de contraseñas con bcrypt
  • ✅ Validación de entrada con Zod
  • ✅ Sanitización de datos
  • ✅ Headers de seguridad configurados
  • ✅ Variables de entorno protegidas

📱 Responsive Design

El sistema está completamente optimizado para:

  • 📱 Móviles (320px+)
  • 📱 Tablets (768px+)
  • 💻 Desktop (1024px+)
  • 🖥️ Large Screens (1440px+)

📞 Soporte y Contacto

Equipo de Desarrollo

Reportar Issues

Para reportar bugs o solicitar funcionalidades:

  1. Ir a la sección de Issues
  2. Usar los templates disponibles
  3. Proporcionar información detallada

📄 Licencia

Software Propietario - Todos los derechos reservados © 2025 ALGSI Consultores

Este proyecto es propiedad exclusiva de ALGSI Consultores. El software está protegido por leyes de derechos de autor y tratados internacionales.

Restricciones de Uso:

  • ❌ Uso no autorizado está prohibido
  • ❌ Copia o distribución sin permiso está prohibida
  • ❌ Modificación o ingeniería inversa está prohibida
  • ❌ Transferencia a terceros está prohibida

Para más detalles, consulte el archivo LICENSE en la raíz del proyecto.

Desarrollado por: kjarj54 para ALGSI Consultores


About

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages