Plataforma de gestión de comercios y webs para pequeños negocios, compuesta por una API RESTful (Node.js + Express + MongoDB) y un frontend en Next.js.
- Características
- Requisitos
- Instalación
- Configuración
- Ejecución
- Estructura del Proyecto
- API Docs
- Testing
- Licencia
- Registro y login de usuarios con roles (
user,admin) - Gestión de comercios (crear, actualizar, eliminar, listar)
- Gestión de webs asociadas a comercios
- Subida de imágenes y textos a webs
- Sistema de reseñas y puntuaciones
- Filtros por ciudad, intereses y scoring
- Notificaciones de logs a Slack (opcional)
- Documentación Swagger
- Node.js >= 16.x
- MongoDB >= 4.x
- npm >= 8.x
- Clona el repositorio:
git clone https://github.com/tuusuario/tu-repo.git
cd tu-repo- Instala dependencias en ambos proyectos:
cd CommercyAPI
npm install
cd ../CommercyFront
npm install --legacy-peer-depsCrea un archivo .env en la carpeta CommercyAPI/ con el siguiente contenido:
DB_URI=mongodb+srv://usuario:password@host/tu_db
JWT_SECRET=un_secreto_seguro
PORT=8000
DB_URIes obligatorio para la conexion con MongoDB.JWT_SECRETes obligatorio para firmar tokens.PORTes el puerto del backend (por defecto 3000 si no se define).SLACK_WEBHOOKes opcional; el envio a Slack esta comentado enCommercyAPI/app.js.
Crea un archivo .env.local en la carpeta CommercyFront/ con el siguiente contenido:
NEXT_PUBLIC_API_URL=http://localhost:8000
NEXT_PUBLIC_API_URLdeberia apuntar al backend.- Actualmente hay URLs hardcodeadas a
http://localhost:3000en el frontend; si cambias el puerto del backend, ajusta esas rutas o agrega rewrites.
Asegúrate de que exista la carpeta CommercyAPI/uploads/ para el guardado de imágenes. Se crea automáticamente, pero puedes crearla manualmente si tienes problemas de permisos.
cd CommercyAPI
npm startLa API estara disponible en http://localhost:8000 si usas el puerto recomendado.
cd CommercyFront
npm run devEl frontend estará disponible en http://localhost:3000 o http://localhost:3001 según el puerto configurado.
Nota: Si ambos usan el mismo puerto, cambia el puerto de uno de ellos en el
.envo configuración de Next.js.
La aplicacion usa MongoDB con las siguientes colecciones y campos minimos:
name(String)age(Number)email(String, unique)password(String)ciudad(String)intereses([String], default [])ofertas(Boolean)role("user" | "admin", default "user")createdAt,updatedAt(timestamps)
nombre(String)cif(String, unique)direccion(String)email(String, unique)telefono(String)id(Number)createdAt,updatedAt(timestamps)
ciudad(String)actividad(String)titulo(String)resumen(String)textos([String])imagenes([String])cifComercio(String, referencia alcifde comercios)resenas(Array de objetos:scoringNumber 0-5,puntuacionNumber,textoString)
Nota: Los modelos users y webs usan soft delete (mongoose-delete) y agregan campos internos como deleted y deletedAt.
CommercyAPI/
app.js
config/
controllers/
docs/
middleware/
models/
routes/
test/
uploads/
utils/
validators/
CommercyFront/
app/
components/
context/
public/
styles/
...
README.md
La documentación interactiva de la API está disponible en:
http://localhost:8000/api-docs
Para ejecutar los tests de la API:
cd CommercyAPI
npm testLos derechos de uso personal y comercial quedan reservados al dueño del proyecto actual. No se permite la distribución, modificación o uso comercial sin el consentimiento explícito del autor.
Desarrollado por Jose Suárez Ares.