Este repositorio contiene el frontend de la aplicación Trivia Board Challenge. Este proyecto está desarrollado con React y Vite y JWT.
- React: Biblioteca principal para el desarrollo del frontend.
- Vite: Herramienta de construcción rápida y ligera.
- React Router: Utilizado para la navegación de diferentes rutas.
- Axios: Cliente HTTP para hacer las peticiones al backend.
- Context API: Manejo de estado global de autenticación con
AuthProvider
. - CSS: Para los estilos de los diferentes componentes.
- ESLint: Para mantener un código limpio y consistente.
-
Clonar el repositorio:
-
Instalar dependencias:
yarn install
-
Crear un archivo
.env
en la raíz del proyecto con la URL del backend:VITE_BACKEND_URL=http://localhost:3000
*NOTAR QUE no se inlcuyen los css en esta estructura por largo, sin embargo, cada pagina tiene su propio CSS.
├── src
│ ├── auth
│ │ ├── AuthContext.jsx
│ │ ├── AuthProvider.jsx
│ ├── common
│ │ ├── App.jsx
│ │ ├── Routing.jsx
│ │ ├── main.jsx
│ │ ├── LoggedIn.jsx
│ │ ├── index.jsx
│ │ ├── Routing.jsx
│ │ ├── About.jsx
│ ├── game
│ │ ├── Board.jsx
│ │ ├── Box.jsx
│ │ ├── Question.jsx
│ │ ├── BoxButton.jsx
│ ├── profile
│ │ ├── Login.jsx
│ │ ├── Register.jsx
│ │ ├── Logout.jsx
│ └── assets
│ └── images
├── public
└── vite.config.js
auth
: Incluye el contexto de autenticación (AuthContext
) y el proveedor (AuthProvider
) que permite el manejo de sesiones y autenticación con JWT.common
: Contiene componentes comunes comoApp.jsx
yRouting.jsx
para la navegación.game
: Contiene todos los componentes relacionados con el juego comoBoard
,Box
, yQuestion
.profile
: Incluye los componentes de autenticación,Login
yRegister
, donde los usuarios pueden iniciar sesión y registrarse.
- Registro (
/register
): Permite a los usuarios crear una cuenta nueva. Envía una petición al backend para registrar la información del usuario. - Login (
/login
): Permite a los usuarios autenticar su sesión. Si el login es exitoso, el token JWT se guarda en el almacenamiento local y se actualiza el estado de autenticación.
- Tablero de Juego (
Board.jsx
): Muestra el tablero con diferentes casillas que corresponden a preguntas de diversas categorías. - Casillas (
Box.jsx
): Representa cada casilla en el tablero, muestra las preguntas correspondientes al hacer clic. - Preguntas (
Question.jsx
): Muestra las preguntas asociadas a cada casilla y ofrece opciones de respuesta.
- Utiliza
AuthContext
yAuthProvider
para el manejo global del estado de sesión. - Autenticación con JWT para acceso seguro a recursos restringidos.
eslint-plugin-react
: Se configuró para detectar automáticamente la versión de React y para asegurar que el código sigue las mejores prácticas de desarrollo.
- Registro: El usuario debe registrarse a través del formulario en
/register
. - Login: Después de registrarse, el usuario puede iniciar sesión en
/login
. - Acceso al Juego: Si la autenticación es exitosa, el usuario puede acceder al tablero del juego y ver las preguntas correspondientes a cada categoría.
- Cerrar Sesión: Existe un botón de logout para cerrar la sesión del usuario, eliminando el token de autenticación del almacenamiento local.