README
Este es el proyecto frontend para PixelScribe, una aplicación web de galería de imágenes. Permite a los usuarios crear una cuenta, iniciar sesión, subir sus propias imágenes y verlas en una galería personal.
Este proyecto está construido con React + TypeScript y está diseñado para conectarse con el backend HijosDeAndresBack.
- React (v18+)
- TypeScript
- Vite (Como entorno de desarrollo)
- React Router DOM (Para la navegación entre páginas)
- Axios (Para hacer peticiones HTTP al backend)
- react-icons (Para los íconos)
- CSS Puro (Todo el estilo se maneja con archivos
.csspor componente)
Sigue estos pasos para levantar el proyecto en tu máquina local.
- Clona el repositorio (o descarga el ZIP) en tu máquina.
- Abre una terminal en la carpeta raíz del proyecto.
- Instala las dependencias de Node.js:
(Esto instalará React, React Router, Axios, y todo lo demás que necesites).
npm install
-
Inicia el backend: Asegúrate de que tu servidor de Spring Boot (HijosDeAndresBack) esté corriendo, típicamente en
http://localhost:8080. -
Inicia el frontend: En la terminal de tu proyecto frontend, ejecuta:
npm run dev
-
¡Listo! Vite te dará una URL local. Ábrela en tu navegador, usualmente es http://localhost:5173/.
El proyecto está organizado por funcionalidades dentro de la carpeta src/pages.
-
src/main.tsx- Punto de entrada de la aplicación.
- Configura el
createBrowserRouterde React Router para definir las rutas públicas.
-
src/pages/Login/- Contiene la pantalla de Inicio de Sesión (
Login.tsx). - Maneja el estado del formulario y envía las credenciales al backend (
/auth/login) usandoaxios. - Si tiene éxito, guarda el token JWT en
localStoragey redirige a/home.
- Contiene la pantalla de Inicio de Sesión (
-
src/pages/Register/- Contiene la pantalla de Registro (
Register.tsx). - Maneja el formulario para crear un nuevo usuario.
- Nota: Aún falta implementar la lógica de
axios.post()a tu endpoint de registro.
- Contiene la pantalla de Registro (
-
src/pages/Home/- Contiene la pantalla Principal (
Home.tsx) donde el usuario ve su galería. - Utiliza
useEffectpara cargar las imágenes del usuario al montar el componente (requiere token). - Permite subir nuevos archivos (
handleUpload). - Permite borrar imágenes (
handleDelete). - Tiene un botón de "Logout" que limpia
localStoragey redirige a/.
- Contiene la pantalla Principal (
Este frontend está diseñado para fallar si no puede conectarse al backend.
El frontend hace peticiones a las siguientes rutas (hardcodeadas):
- Login:
POST http://localhost:8080/auth/login - Ver Imágenes:
GET http://localhost:8080/api/images/my-images - Subir Imagen:
POST http://localhost:8080/api/images/upload - Borrar Imagen:
DELETE http://localhost:8080/api/images/{imageId}
Para que el frontend (localhost:5173) pueda comunicarse con el backend (localhost:8080), debes habilitar CORS en tu proyecto de Spring Boot.
Si ves errores de CORS en la consola del navegador, asegúrate de tener una clase de configuración en tu backend similar a esta:
WebConfig.java (Ejemplo para el Backend)
package edu.hackaton.config; // (o tu paquete de config)
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") // Permite a todas las rutas
.allowedOrigins("http://localhost:5173") // El origen de tu frontend
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // Métodos permitidos
.allowedHeaders("*") // Todos los headers
.allowCredentials(true);
}
}