05b99e9ed4
- Fixed Primor URL format and selectors - Created simple N8N webhook that calls scraper API - All 3 sources now working: - Promofarma: 20 products - DocMorris: 10 products - Primor: 20 products - Total: 130 products in database - N8N webhook at /webhook/scrape working correctly
FarmaFinder Parapharmacy API
Microservicio para productos de parafarmacia de múltiples tiendas españolas.
Arquitectura
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ N8N Workflows │────▶│ Parapharmacy │────▶│ MongoDB │
│ (Scraper) │ │ API (Express) │ │ │
└─────────────────┘ └────────┬─────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ FarmaFinder │
│ Backend │
└─────────────────┘
Endpoints
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/products/search?q=term |
Buscar productos |
| GET | /api/products/:id |
Detalle de producto |
| GET | /api/products |
Listar productos |
| POST | /api/products |
Crear producto |
| POST | /api/products/bulk |
Crear/actualizar múltiples |
| PUT | /api/products/:id |
Actualizar producto |
| DELETE | /api/products/:id |
Eliminar producto |
| GET | /api/products/categories |
Listar categorías |
| GET | /api/products/brands |
Listar marcas |
| GET | /api/sources |
Fuentes configuradas |
| GET | /api/health |
Health check |
| GET | /api/docs |
Swagger UI |
Desarrollo
Requisitos
- Node.js 20+
- MongoDB 7+
Instalación
cd apps/parapharmacy-api
npm install
Ejecutar
# Desarrollo
npm run dev
# Producción
npm start
Variables de Entorno
PORT=3002
MONGODB_URI=mongodb://localhost:27017/parapharmacy
CORS_ORIGIN=http://localhost:3000
Docker
# Construir imagen
docker build -t farmafinder-parapharmacy-api .
# Ejecutar
docker run -p 3002:3002 -e MONGODB_URI=mongodb://host:27017/parapharmacy farmafinder-parapharmacy-api
Fuentes de Scraping
| Fuente | URL | Estado |
|---|---|---|
| Promofarma | promofarma.com | ✅ |
| Pharmarket | pharmarket.es | 🔄 Pendiente |
| DocMorris | docmorris.es | 🔄 Pendiente |
| 1001Farma | 1001farma.net | 🔄 Pendiente |
| Primor | primor.eu | 🔄 Pendiente |
| MiFarma | mifarma.es | 🔄 Pendiente |
Schema MongoDB
{
name: String, // Nombre del producto
brand: String, // Marca
category: String, // Categoría
subcategory: String, // Subcategoría
description: String, // Descripción
image_url: String, // URL imagen
source_url: String, // URL tienda original
price: Number, // Precio actual
original_price: Number, // Precio anterior
source: String, // Fuente
source_product_id: String,
available: Boolean,
rating: Number,
review_count: Number,
scraped_at: Date
}
Tests
npm test
Swagger
Documentación disponible en: http://localhost:3002/api/docs