cotizador/README.md

201 lines
5.7 KiB
Markdown

# 💰 Comparador de Precios Internacional
Sistema web para comparar precios entre Argentina y otros países (Brasil, Chile) con cotizaciones en tiempo real y autenticación por PIN.
## 📁 Estructura del Proyecto
```
calculos/
├── index.php # Entrada principal (redirige a login)
├── app.php # Router para páginas
├── .htaccess # URL rewriting
├── favicon.ico # Icono del sitio
├── api/ # APIs PHP
│ ├── auth.php # Autenticación y sesiones
│ ├── brasil.php # API para productos de Brasil
│ └── chile.php # API para productos de Chile
├── config/ # Configuración
│ ├── pins.php # PINs de usuarios
│ └── config.php # Configuración general
├── data/ # Archivos JSON de datos
│ ├── productos_brasil.json
│ └── productos_chile.json
├── pages/ # Páginas
│ ├── login.php # Login con PIN
│ ├── brasil.html # Contenido Brasil
│ └── chile.html # Contenido Chile
└── assets/
└── js/
├── auth.js # Sistema de autenticación
├── layout.js # Gestor de layout común
└── app.js # Lógica JavaScript común
```
## 🚀 Características
-**Autenticación con PIN** - Sistema de login con PIN de 4 dígitos + teclado numérico
-**Cotizador integrado** - Modal para convertir precios extranjeros a ARS
-**Sesiones seguras** - Gestión de sesiones con PHP
-**URLs Amigables** - `/brasil`, `/chile` (mod_rewrite)
-**Layout Unificado** - Navbar y Footer gestionados centralmente
-**Menú Hamburguesa** - Navegación móvil optimizada
-**Cotización en tiempo real** - API de exchangerate-api.com
-**Múltiples países** - Brasil (BRL) y Chile (CLP)
-**Gestión de productos** - Agregar, editar, eliminar
-**Cálculo automático** - Diferencias de precio
-**Organización por responsable** - Marce / Eli
-**Persistencia** - Datos guardados en JSON vía PHP
-**100% Responsive** - Mobile-first design con TailwindCSS
## 🛠️ Instalación
1. **Servidor PHP requerido** (XAMPP, WAMP, o similar)
2. **Habilitar mod_rewrite** en Apache
3. Copiar el proyecto en la carpeta del servidor web
4. Asegurar permisos de escritura en la carpeta `data/`
5. Verificar que `.htaccess` esté en la raíz
6. Acceder a `https://cotizador.penki.com.ar/login`
### URLs Disponibles
**Producción:** https://cotizador.penki.com.ar
- `/` (raíz) - Página de inicio de sesión
- `/login` - Redirige a la raíz
- `/brasil` - Comparador Argentina-Brasil
- `/chile` - Comparador Argentina-Chile
Ver [README_URLS.md](README_URLS.md) para más detalles sobre el sistema de URLs.
## 📖 Uso
### 1. Inicio de Sesión
1. Accede a https://cotizador.penki.com.ar
2. Introduce tu PIN de 4 dígitos
3. Puedes usar el teclado numérico en pantalla o tu teclado físico
4. Una vez autenticado, selecciona el país
**PINs predeterminados:**
- **1234** - Marce
- **5678** - Eli
- **0000** - Admin
### 2. Selección de País
- Click en la tarjeta de Brasil o Chile
- Serás redirigido a la página de comparación correspondiente
### 3. Gestión de Productos
1. Completa el formulario con:
- Nombre del artículo
- Precio en Argentina (ARS)
- Precio en el país extranjero
- Responsable
2. Click en "Agregar"
3. Edita precios directamente en la tabla
4. Elimina productos con el botón "Eliminar"
### Interpretación de Resultados
- **Verde** = Conviene comprar en el país extranjero
- **Rojo** = Conviene comprar en Argentina
- Totales por responsable y global
## 🔧 APIs
### Autenticación
**Endpoint**: `api/auth.php`
**Métodos:**
- `POST` - Autenticar con PIN
```json
{ "pin": "1234" }
```
- `GET` - Verificar sesión activa
- `DELETE` - Cerrar sesión
### Productos por País
**Brasil**: `api/brasil.php`
**Chile**: `api/chile.php`
**Métodos soportados:**
- `GET` - Obtener todos los productos
- `POST` - Guardar productos (JSON array)
- `DELETE` - Eliminar producto por ID
### Ejemplo de Producto
```json
{
"id": 1,
"articulo": "Producto Ejemplo",
"precioAr": 100000,
"precioBra": 500,
"responsable": "Marce"
}
```
## 🎨 Tecnologías
- HTML5
- **TailwindCSS** - Framework CSS utility-first
- JavaScript ES6+ (Vanilla JS)
- PHP 7+ con sesiones
- JSON para persistencia
- Fetch API para comunicación con backend
## 🔑 Configuración de PINs
Para agregar o modificar PINs, edita el archivo `config/pins.php`:
```php
$pines_validos = [
'1234' => 'Marce',
'5678' => 'Eli',
'0000' => 'Admin',
'XXXX' => 'Nuevo Usuario' // Agregar aquí
];
```
## 🔐 Seguridad
**Implementado:**
- Sistema de autenticación con PIN
- Sesiones PHP
- Protección de páginas (requieren login).
⚠️ **Para producción se recomienda:**
- Hashear PINs en base de datos
- Validación más estricta de datos en servidor
- Protección CSRF
- HTTPS obligatorio
- Rate limiting en APIs
- Bloqueo tras intentos fallidos
- Logs de acceso
## 📝 Cambios Recientes
### v2.0 (Octubre 2025)
- ✅ Sistema de autenticación con PIN de 4 dígitos
- ✅ Migración completa a TailwindCSS
- ✅ Eliminación de Bootstrap y jQuery
- ✅ Código JavaScript moderno (ES6+, Fetch API)
- ✅ Interfaz mejorada con gradientes y animaciones
- ✅ Teclado numérico en pantalla para móviles
- ✅ Gestión de sesiones PHP
- ✅ Reorganización de estructura de archivos
- ✅ APIs separadas por país
- ✅ Botón de logout en todas las páginas
## 📄 Licencia
Proyecto personal - Uso libre
---
**Desarrollado con ❤️ | 2025**