201 lines
5.7 KiB
Markdown
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**
|