You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Marketplace de productos de segunda mano desarrollado con React. Permite a los usuarios registrarse, iniciar sesión, ver y añadir productos al carrito, y a los vendedores publicar sus artículos.
¿Qué hace el proyecto?
Catálogo de productos: Muestra productos de segunda mano (electrónicos, moda, etc.) con imagen, precio, descripción y datos del vendedor.
Registro e inicio de sesión: Los usuarios pueden registrarse (nombre, correo, teléfono, contraseña) e iniciar sesión para poder comprar.
Carrito de compras: Los usuarios autenticados pueden añadir productos al carrito, ver resumen (cantidad y total) y proceder a “Comprar” (con modal de pago).
Publicar productos: Usuarios logueados pueden subir nuevos productos (nombre, tipo, precio, descripción e imagen).
Rutas según autenticación: Si no estás logueado ves Home, Registro, Login y Términos; si estás logueado ves Home, Añadir producto y Carrito.
Cómo funciona
Estado global (Redux): Se usa Redux Toolkit para manejar auth, user, products, car (carrito) y show (modal de usuario). Los productos iniciales y los añadidos se guardan en el store.
Rutas: React Router define las rutas. Según auth se muestran unas u otras (ver MainRoutes.jsx).
Flujo de compra: En Home se listan los productos; al hacer clic en “Añadir al carrito” se despacha setCar(product). Solo usuarios logueados pueden añadir. En /carrito se ve el listado, el resumen y el botón “Comprar”, que abre un modal de pago.
Formularios: Registro, Login y Añadir producto usan react-hook-form para validación y envío. En registro hay validación de nombre (solo letras) y contraseñas.
Datos: Por ahora no hay backend; usuarios y productos viven en el store de Redux (los productos iniciales están en slices.js). El “pago” es solo la apertura del modal.
Tecnologías utilizadas
Tecnología
Uso
React (18.x)
Interfaz y componentes
Redux Toolkit
Estado global (auth, usuario, productos, carrito)
React Router DOM (v6)
Navegación y rutas condicionales
Tailwind CSS
Estilos y tema (incl. paleta custom alabaster)
React Hook Form
Formularios (registro, login, añadir producto)
Font Awesome (React)
Iconos (carrito, usuario, ojo, candado, etc.)
Create React App
Scaffolding y scripts de desarrollo/build
Estructura del proyecto (resumen)
src/
├── App.jsx # Punto de entrada, renderiza MainRoutes
├── index.js # ReactDOM + Provider de Redux
├── routes/
│ └── MainRoutes.jsx # Router, Header, Footer y rutas según auth
├── pages/
│ ├── Home.jsx # Listado de productos y “Añadir al carrito”
│ ├── Login.jsx # Inicio de sesión
│ ├── Register.jsx # Registro de usuario
│ ├── CarPage.jsx # Carrito y resumen de compra
│ ├── AddProduct.jsx # Formulario para subir producto
│ └── Terminos.jsx # Página de términos
├── Components/
│ ├── Header.jsx # Logo, título “Tesegunda”, carrito, usuario
│ ├── Footer.jsx # Pie de página
│ ├── HiddenUser.jsx # Componente de usuario (oculto por defecto)
│ ├── Modal.jsx # Modal reutilizable
│ └── ModalPayment.jsx # Modal “Proceder a Pago”
├── store/
│ ├── store.js # configureStore con mainSlice
│ └── slices.js # mainSlice: estado y reducers (auth, user, products, car)
└── assets/ # Imágenes (logo, productos, etc.)
Requisitos previos
Node.js (recomendado v18 o superior)
npm o yarn
Instalación y ejecución
# Clonar el repositorio (si aplica) y entrar al proyectocd TeseVenta
# Instalar dependencias
npm install
# Modo desarrollo (abre http://localhost:3000)
npm start
# Build de producción
npm run build
# Ejecutar tests
npm test