2.0 KiB
2.0 KiB
Lead Gen Scraper — Google Maps
Concepto
Aplicación web que scrapea datos de Google Maps usando la API de Apify. Permite buscar negocios por keyword, ciudad y estado/provincia, mostrando resultados en tabla con panel de detalle.
Stack (adaptado a nuestro entorno)
- Backend: Node.js + Express
- Templates: EJS
- Estilos: Tailwind CSS via CDN (no build step)
- Scraping:
apify-clientNPM con actorcompass/crawler-google-places - Database: JSON file-backed store (portable, sin dependencia Replit)
- Deploy: VPS (systemd, como el resto de proyectos)
Funcionalidades
Core
- Búsqueda — Formulario con keyword, ciudad, estado, max resultados
- Resultados — Tabla con nombre, teléfono, email, web, reviews + panel detalle slide-in
- Historial — Búsquedas guardadas, ordenadas por fecha, con acciones View/Delete
- Leads — Bookmark de negocios, página dedicada con gestión completa
UI
- Sidebar fija oscura (dark olive #1a1f1e + green accent #4a7c59)
- Filter bar horizontal superior
- Click en fila → panel detalle deslizante derecha
- Loading states (Apify tarda 30-120s)
- Empty states para todas las páginas
- Error handling con mensajes claros
Gestión de Leads
- Bookmark toggle (save/unsave) desde tabla y panel
- Sync bidireccional tabla↔panel
- Remove from Leads con actualización en vivo
- Persistencia en JSON local
Detalles técnicos
- Server timeout 5 min (búsquedas largas)
- Formato búsqueda: "{keyword} in {city}, {state}"
- Keys:
search:{timestamp},lead:{timestamp} - dotenv para API token
- .gitignore: node_modules, .env, data/, .DS_Store
Adaptaciones vs briefing original
- ❌ Replit Database → ✅ JSON file store (siempre)
- ❌ Replit deploy → ✅ VPS systemd
- ❌ Replit Secrets → ✅ .env file
- Se mantiene opción de empaquetado zip para portabilidad
Notas
- Apify Actor ID: nwua9Gu5YrADL7ZDj
- El usuario necesitará su propio API token de Apify
- Puerto: 8086 (siguiente disponible en VPS)