Segundo proyecto del Máster Desarrollador Full Stack (2025-2026).
Réplica de una galería tipo Pinterest desarrollada con JavaScript y Vite. La aplicación consulta la API de Unsplash para mostrar fotografías recientes, permite buscar por texto y añade nuevas páginas mediante scroll infinito. El diseño es responsive y las tarjetas conservan las proporciones variables de las imágenes.
- Justificación de los requisitos: guía rápida para comprobar cómo se cumple cada criterio de evaluación.
- Notas de desarrollo: arquitectura, flujo de datos y decisiones técnicas del proyecto.
| Escritorio | Móvil |
|---|---|
![]() |
![]() |
- Node.js y npm.
- Una cuenta de desarrollador de Unsplash y una Access Key.
-
Clonar el repositorio y entrar en la carpeta:
git clone <URL-del-repositorio> cd pinterest-clone
-
Instalar las dependencias:
npm install
-
Copiar
.env.examplecomo.envy añadir la clave de Unsplash:VITE_UNSPLASH_ACCESS_KEY=TU_ACCESS_KEY
-
Iniciar el servidor de desarrollo:
npm run dev
-
Abrir en el navegador la dirección que muestre Vite, normalmente
http://localhost:5173.
La clave debe empezar por VITE_ para que Vite pueda exponerla a la aplicación. El archivo .env no debe subirse al repositorio.
npm run build
npm run previewbuild genera la aplicación en dist/ y preview permite revisar esa versión localmente.
- Carga inicial de fotografías recientes.
- Búsqueda de imágenes por texto.
- Scroll infinito con paginación.
- Reinicio del contenido al pulsar el logo.
- Limpieza automática del buscador después de cada búsqueda.
- Tarjetas responsive con fotografía, autor, avatar, fecha, enlaces y datos de Unsplash.
- Skeletons de carga y cancelación de peticiones obsoletas.
- HTML5 y CSS3.
- JavaScript con módulos ES.
- Vite 8.
- API del DOM: componentes creados sin framework de interfaz.
- Unsplash API.
pinterest-clone/
├── index.html
├── package.json
├── .env.example
├── public/
├── docs/
│ ├── dev-notes/
│ │ ├── justificacion-requisitos.md
│ │ └── notas-desarrollo.md
│ └── shots/
└── src/
├── main.js
├── app.js
├── assets/
├── components/
│ ├── gallery/
│ ├── header/
│ ├── pin-card/
│ └── ui/
├── services/
├── state/
├── styles/
└── utils/

