- Acerca del Proyecto
- Características Principales
- Stack Tecnológico
- Capturas de Pantalla
- Instalación Rápida
- Configuración
- Despliegue
- Desarrollo
- Testing
- Seguridad
- Roadmap
- Contribuir
- Licencia
- Contacto
OPENCRM es una solución CRM moderna y completa diseñada para equipos de ventas que necesitan gestionar prospectos, empresas y cotizaciones de manera eficiente. Construido con las últimas tecnologías web, ofrece una experiencia de usuario fluida y profesional.
- ✅ 100% Opensource: Código abierto bajo licencia MIT
- ✅ Moderno: Stack tecnológico de última generación
- ✅ Completo: Desde leads hasta cotizaciones en PDF
- ✅ Seguro: Autenticación 2FA y sistema RBAC robusto
- ✅ Escalable: Arquitectura preparada para crecer
- ✅ Docker Ready: Despliegue simplificado con contenedores
- Login y registro con validación robusta
- Autenticación de dos factores (2FA/TOTP)
- Recuperación de contraseña por email
- Sistema RBAC (Role-Based Access Control)
- Tokens de API con Laravel Sanctum
- Roles personalizables (Jefatura, Vendedor, etc.)
- Permisos granulares por recurso
- Perfil de usuario con avatar
- Gestión de equipos de venta
- CRUD completo de prospectos
- Tracking UTM para análisis de origen
- Estados configurables del embudo de ventas
- Asignación de leads a vendedores
- Búsqueda y filtros avanzados
- Historial de interacciones
- Tablero visual drag & drop
- Paginación por columna
- Filtros por fecha y agente
- Actualización en tiempo real
- Responsive design
- Base de datos de clientes
- Validación de RUT chileno
- Categorización por industria y tamaño
- Información de contacto completa
- Relación con múltiples leads
- Creación de presupuestos profesionales
- Numeración automática
- Ítems con cálculo de subtotal e IVA
- Estados del proceso (borrador, enviada, aceptada)
- Exportación a PDF de alta calidad
- Vinculación con leads
- Vista de reuniones agendadas
- Integración con leads
- Links de videollamada
- Notas y seguimiento
- Métricas en tiempo real
- Embudo de ventas visual
- Tasas de conversión
- Total cotizado
- Mini-Kanban de resumen
- Filtros por agente (vendedores ven solo sus leads)
- Personalización del sistema
- Logo de empresa
- Ajustes de moneda e IVA
- Gestión de estados de leads
- Configuración de roles y permisos
| Tecnología | Versión | Propósito |
|---|---|---|
| PHP | 8.4+ | Lenguaje principal |
| Laravel | 12 | Framework backend |
| Inertia.js | 2 | SPA sin API REST |
| Laravel Fortify | 1 | Autenticación headless |
| Laravel Sanctum | 4 | API tokens |
| Laravel Wayfinder | 0 | Rutas tipadas TypeScript |
| DomPDF | 3 | Generación de PDFs |
| Pest | 4 | Testing framework |
| PostgreSQL | 16 | Base de datos |
| Tecnología | Versión | Propósito |
|---|---|---|
| Vue.js | 3 | Framework reactivo |
| TypeScript | 5 | Type safety |
| Inertia.js | 2 | Routing SPA |
| TailwindCSS | 4 | Estilos utilitarios |
| Radix Vue | 1 | Componentes UI (shadcn/ui) |
| TanStack Table | 8 | Tablas avanzadas |
| Lucide Icons | — | Sistema de íconos |
| VueUse | 12 | Composables |
| Vite | 7 | Build tool |
- Docker & Docker Compose: Contenedorización
- Nginx: Servidor web
- Supervisor: Gestión de procesos
- GitHub Actions: CI/CD (próximamente)
🚧 Próximamente: Capturas de pantalla del dashboard, kanban, y otras vistas principales.
- PHP 8.4+ con extensiones:
pdo,pdo_sqlite,gd,mbstring,xml - Composer 2.x
- Node.js 20+ y npm
- SQLite (desarrollo) o PostgreSQL 16 (producción)
# 1. Clonar el repositorio
git clone https://github.com/ecr17dev/OpenCRM-laravel#
cd opencrm
# 2. Instalar dependencias
composer install
npm install
# 3. Configurar entorno
cp .env.example .env
php artisan key:generate
# 4. Crear base de datos y datos de prueba
php artisan migrate --seed
# 5. Iniciar servidor de desarrollo
composer run devLa aplicación estará disponible en http://localhost:8000
Después de ejecutar los seeders:
- Admin:
admin@example.com/password - Vendedor:
vendedor@example.com/password
# Clonar y configurar
git clone https://github.com/ecr17/opencrm.git
cd opencrm
# Ejecutar script de inicio
./scripts/docker-start.sh# Copiar configuración
cp .env.docker .env
# Construir y levantar contenedores
docker-compose build
docker-compose up -d
# Ejecutar migraciones
docker-compose exec app php artisan migrate --seed# Instalación completa en un comando
make install
# Otros comandos útiles
make up # Levantar contenedores
make down # Detener contenedores
make logs # Ver logs
make shell # Acceder al contenedor
make test # Ejecutar testsLa aplicación estará disponible en http://localhost
# Aplicación
APP_NAME=OPENCRM
APP_ENV=production
APP_DEBUG=false
APP_URL=https://tu-dominio.com
# Base de Datos (PostgreSQL)
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=opencrm
DB_USERNAME=opencrm_user
DB_PASSWORD=tu_password_seguro
# Email (SMTP)
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=tu-email@gmail.com
MAIL_PASSWORD=tu-password-app
MAIL_FROM_ADDRESS=noreply@tu-dominio.comVer .env.example para todas las opciones disponibles.
- Crear proyecto en Dokploy
- Conectar repositorio Git
- Configurar variables de entorno
- Deploy automático
El archivo dokploy.json incluye toda la configuración necesaria.
- DigitalOcean App Platform: Compatible
- AWS ECS: Con configuración Docker
- Heroku: Requiere buildpack PHP
- VPS Manual: Usar Docker Compose
- Configurar
APP_ENV=production - Desactivar
APP_DEBUG=false - Configurar SMTP real
- Configurar dominio y SSL
- Configurar backups automáticos
- Revisar permisos de storage
- Configurar queue workers
- Optimizar caches:
php artisan optimize
opencrm/
├── .config/ # Configuración de herramientas
│ ├── boost.json # Laravel Boost
│ ├── components.json # shadcn/ui
│ ├── mcp.json # Model Context Protocol
│ └── pint.json # Laravel Pint
├── app/ # Lógica de negocio
│ ├── Http/Controllers/ # Controladores
│ ├── Models/ # Modelos Eloquent
│ └── Providers/ # Service Providers
├── database/
│ ├── migrations/ # Migraciones
│ └── seeders/ # Datos de prueba
├── docs/ # Documentación
│ ├── ABOUT.md # Acerca del proyecto
│ ├── CLAUDE.md # Guías de desarrollo
│ └── LICENSE # Licencia MIT
├── docker/ # Configuración Docker
│ ├── nginx/ # Nginx config
│ ├── php/ # PHP-FPM config
│ └── supervisor/ # Supervisor config
├── resources/
│ ├── js/ # Frontend Vue
│ │ ├── pages/ # Páginas Inertia
│ │ ├── components/ # Componentes Vue
│ │ └── layouts/ # Layouts
│ └── css/ # Estilos
├── routes/ # Definición de rutas
├── scripts/ # Scripts de utilidad
│ ├── docker-start.sh # Inicio automatizado
│ ├── docker-verify.sh # Verificación Docker
│ └── fix-logo-upload.sh # Corrección de permisos
├── tests/ # Tests automatizados
├── docker-compose.yml # Orquestación Docker
├── Dockerfile # Imagen Docker
└── Makefile # Comandos Make
# Backend
composer run dev # Servidor completo (PHP + Queue + Vite)
composer run lint # Formatear código PHP
composer run test # Ejecutar tests
# Frontend
npm run dev # Vite dev server
npm run build # Build producción
npm run lint # ESLint
npm run format # Prettierphp artisan route:list # Listar rutas
php artisan migrate:fresh --seed # Resetear DB
php artisan tinker # REPL interactivo
php artisan queue:work # Procesar colas
php artisan pail # Ver logs en tiempo realEl proyecto usa Pest 4 para testing.
# Ejecutar todos los tests
php artisan test
# Tests específicos
php artisan test --filter=LeadTest
# Con cobertura
php artisan test --coverage
# En Docker
make test// tests/Feature/LeadTest.php
test('usuario puede crear un lead', function () {
$user = User::factory()->create();
$response = $this->actingAs($user)->post('/leads', [
'name' => 'Juan Pérez',
'email' => 'juan@example.com',
]);
$response->assertRedirect('/leads');
$this->assertDatabaseHas('leads', ['email' => 'juan@example.com']);
});- ✅ Autenticación 2FA (TOTP)
- ✅ Protección CSRF automática
- ✅ Rate limiting en rutas sensibles
- ✅ Validación de entrada robusta
- ✅ Hashing de contraseñas (bcrypt)
- ✅ Sesiones seguras en base de datos
- ✅ Tokens de API con Sanctum
- ✅ Sistema RBAC completo
Si encuentras una vulnerabilidad de seguridad, por favor envía un email a security@ecr17.dev en lugar de usar el issue tracker público.
- Integración con WhatsApp Business API
- Notificaciones push
- Exportación de reportes a Excel
- Dashboard personalizable
- Integración con Zapier
- API REST pública documentada
- Webhooks para eventos
- Multi-idioma (i18n)
- Módulo de email marketing
- Automatizaciones de ventas
- Inteligencia artificial para scoring de leads
- App móvil (React Native)
Ver Issues para más detalles.
¡Las contribuciones son bienvenidas! Este es un proyecto opensource y valoramos tu ayuda.
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add: nueva característica') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
- Sigue el estilo de código existente (Laravel Pint + ESLint)
- Escribe tests para nuevas funcionalidades
- Actualiza la documentación si es necesario
- Usa commits descriptivos (Conventional Commits)
- 🐛 Reportar bugs
- 💡 Proponer nuevas características
- 📝 Mejorar documentación
- 🌐 Traducciones
- 🎨 Mejoras de UI/UX
- ⚡️ Optimizaciones de rendimiento
Este proyecto está bajo la licencia MIT. Ver el archivo LICENSE para más detalles.
MIT License
Copyright (c) 2026 ECR17.DEV
Se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia
de este software y archivos de documentación asociados (el "Software"), para
utilizar el Software sin restricciones...
- Website: https://ecr17.dev
- Email: contact@ecr17.dev
- GitHub: @ecr17
- Twitter: @ecr17dev
Hecho con ❤️ por ECR17.DEV
Laravel • Vue.js • Inertia.js • TailwindCSS
