Se requieren dos terminales
cd backend
npm run build
npm start
inicia el server
cd frontend
npm run dev
inicia el frontend
FCFMarket es una aplicación web (SPA) que centraliza la oferta de productos y servicios de estudiantes. Hoy la venta ocurre en redes como WhatsApp/Instagram, lo que obliga a los vendedores a repostear para mantener visibilidad y dificulta a los compradores saber quién está disponible en el campus para concretar la entrega.
La solución propone un único catálogo filtrable donde cada vendedor crea su tienda y publica productos con precio, stock, categoría, ubicación y fotos. Un indicador de "En la U" permite señalizar disponibilidad en tiempo real, de modo que los compradores puedan encontrar rápidamente qué hay cerca y coordinar la entrega presencial sin problemas.
Para el estado avanzado, se eligió utilizar Zustand.
UserStore
- Mantiene la información del usuario autenticado
- Gestiona login, logout y acceso global al estado
PostsStore
- Almacena productos publicados
- Gestiona filtros por categoría y disponibilidad
- Expone funciones para agregar, editar y actualizar posts
El proyecto incluye pruebas end-to-end (E2E) implementadas con Playwright. Las pruebas cubren:
- Autenticación y acceso protegido: Login, registro, y protección de rutas
- CRUD de Posts: Crear, listar, ver detalles y eliminar publicaciones
Para ejecutar las pruebas E2E, necesitas tres terminales:
cd backend
npm run start:testcd frontend
npm run devcd e2e-tests
npm install # Solo la primera vez
npx playwright install # Solo la primera vez
npm testcd e2e-tests
npm run test:reportPara más detalles sobre las pruebas E2E, consulta el README de e2e-tests.
/— catálogo público/post/:id— detalle de producto/registery/login/profiley/new-post
- Registro con validación y hash de contraseña
- Login con:
- generación de JWT
- cookie httpOnly + token CSRF separado
- Restauración automática de sesión al cargar la app
- Middleware backend que valida JWT + coincidencia CSRF
- Logout limpiando cookie, CSRF y estado global
Se seleccionó debido a:
- componentes reutilizables
- sistema de theming integrado
- Color principal: morado
#aa6eae - Fondo: lila
#fef0ff - Tipografía: Nunito
colocar link aqui