Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pblnahu1/dashboard-task-with-users
Gestión de Tareas con Autenticación de Usuarios. (finalizada ambas versiones con Supabase (postgres) y MySQL de forma local). [Ver las ramas]
https://github.com/pblnahu1/dashboard-task-with-users
axios expressjs javascript mysql nodejs nodemon postgresql supabase tailwindcss
Last synced: about 2 months ago
JSON representation
Gestión de Tareas con Autenticación de Usuarios. (finalizada ambas versiones con Supabase (postgres) y MySQL de forma local). [Ver las ramas]
- Host: GitHub
- URL: https://github.com/pblnahu1/dashboard-task-with-users
- Owner: pblnahu1
- Created: 2024-08-25T22:06:22.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-12-14T18:47:48.000Z (2 months ago)
- Last Synced: 2024-12-14T19:35:03.715Z (2 months ago)
- Topics: axios, expressjs, javascript, mysql, nodejs, nodemon, postgresql, supabase, tailwindcss
- Language: JavaScript
- Homepage:
- Size: 2.59 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🚀 Proyecto: Sistema de Gestión de Tareas con Autenticación de Usuarios
Este sistema utiliza, en dos ramas, versiones muy diferentes:
- En la rama `version_db` implementé MEJN Stack: **JavaScript Vanilla**, **Node.js**, **Express**, **MySQL** con **Axios**, **CORS** y **localStorage** para el manejo de la base de datos, autenticación y almacenamiento en el lado del cliente.
- Luego, en la rama `version_supabase`, usé: **JavaScript Vanilla**, **Node.js**, **Express**, **SUPABASE** (alternativa a Firebase, usa PostgreSQL) con **CORS** y **localStorage**.
- Para los estilos usé TailwindCSS en complemento con Daisy.ui## Imágen del Proyecto


## Estructura del Proyecto:
- Pantalla Principal: Un dashboard donde se muestran las tareas pendientes y completadas, con un resumen del progreso.
- Gestión de Tareas: Formulario para agregar nuevas tareas.
- Listado de tareas donde se puede marcar como completadas o eliminarlas.
- Posibilidad de editar tareas existentes.
- Gestión de Usuarios (Opcional): Implementación de un sistema simple de usuarios para asignar tareas y ver progreso individual.---
## 📁 Archivo: `mysql/db.sql`
La base de datos contiene una tabla `USUARIOS` que almacena los datos de los usuarios registrados. Los campos principales incluyen:
- `ID_USUARIO`
- `NOMBRE_APELLIDO`
- `EMAIL`
- `PASSWORD`
- `CREATED_AT`Se utiliza un esquema sencillo para registrar usuarios en la tabla y probar la funcionalidad de registro y autenticación.
---
## 📁 Archivo: `api/rutas.js`
En esta carpeta están almacenadas variables de rutas de la api
## 📁 Archivo: `backend/debugger/solicitud.js`
Este archivo sirve para hacer depuración por si hay alguna falla en el código. Es totalmente independiente de todo el proyecto. Se puede editar si se requiere.
## 📁 Archivo: `backend/uploads`
En esta carpeta se almacenan los íconos (fotos de perfil) de cada usuario cuando se registra por primera vez.
## 📁 Archivo: `backend/server.js`
Este archivo es crucial ya que permite la interacción entre el **frontend** y la **base de datos**. Algunas de las características clave incluyen:
- **CORS**: Se utiliza para permitir solicitudes entre diferentes dominios, habilitando la interacción entre el frontend y backend.
- **Configuración del servidor**:
- `app.use(express.json())`: Para parsear el body de las solicitudes HTTP.
- `app.use(cors({...}))`: Permite el acceso al servidor desde diferentes orígenes.
- `app.use((req, res, next) => { res.set('Cache-Control', 'no-store'); ... })`: Evita el almacenamiento en caché para gestionar correctamente el historial de navegación.
- **Endpoints**:
- `/register` y `/login`: Gestionan el registro e inicio de sesión de usuarios.
- **Manejo de errores**: Implementa diferentes estados de respuesta (`200`, `400`, `401`, `500`) para gestionar los errores y respuestas del servidor.
---## 📁 Archivo: `src/historyObj.js`
Este archivo gestiona el historial de navegación del usuario, detectando si la navegación es desde caché o usando las flechas del historial. Aún se deben resolver algunos problemas de redirección.
---
## 📁 Archivo: `src/loader.js`
Crea una animación de "cargando" para mejorar la interactividad del sistema. Se usa `setTimeout` para manejar el tiempo de carga.
---
## 📁 Archivo: `src/logoutbutton.js`
Configura el botón "Cerrar Sesión", eliminando al usuario logueado del `localStorage`, mejorando la experiencia cuando se desea cambiar de cuenta.
---
## 📁 Archivo: `src/main.js`
Maneja los eventos globales, la carga del dashboard de tareas y la lógica del usuario. Usa `async/await` para gestionar la lógica de las tareas.
---
## 📁 Archivo: `src/registro.js`
Archivo clave para la autenticación del usuario. Usa `axios` para enviar solicitudes POST al servidor en los endpoints `/register` y `/login`, y maneja la respuesta de manera asíncrona.
---
## 📁 Archivo: `src/taskManager.js`
Maneja la lógica de las tareas usando clases y objetos. Proporciona funcionalidades como:
- `calcularPorcentaje()`: Calcula el porcentaje de tareas completadas.
- `addOrUpdateTask()`: Agrega o actualiza tareas, asignándoles un color y almacenándolas en la base de datos.
- `toggleTaskCompletion(id)`: Marca las tareas como completadas según su ID.
- `deleteTask(id)`: Elimina tareas por su ID.
- `renderTasks()`: Renderiza las tareas en el DOM, manipulando elementos de forma dinámica.---
## 📁 Archivo: `src/userLogged.mjs`
Módulo para la autenticación de usuarios, gestionando el `localStorage`. Algunas funciones clave incluyen:
1. `saveUserToLS(email, nombreApellido)`: Guarda los datos del usuario en `localStorage`.
2. `getLoggedInUser()`: Recupera los datos del usuario logueado desde `localStorage`.
3. `userLogged(selector)`: Muestra el nombre del usuario logueado en la UI.El sistema actual solo gestiona un usuario logueado a la vez.
---
## 📁 Archivo: `src/userManager.js`
Módulo para la lógica de gestión de usuarios. (opcional)
---
## 📁 Archivo: `src/utils.js`
Funciones auxiliares para operaciones comunes. (opcional)
---
## Instalaciones / Dependencias
### Rama `version_db`
* CORS: `npm install cors`
* EXPRESS: `npm install express`
* AXIOS: `npm install axios`
* MYSQL: `npm install mysql`
* MULTER: `npm install multer`
* FS: `npm install fs`
* PATH: `npm install path`### Rama `version_supabase`
* CORS: `npm install cors`
* EXPRESS: `npm install express`
* MULTER: `npm install multer`
* FS: `npm install fs`
* PATH: `npm install path`
* SUPABASE: `npm install @supabase/supabase-js`
* NODEMON: `npm install nodemon`# Breve resumen
- Básicamente la diferencia de `version_db` es que uso MySQL con Axios y en la otra rama `version_supabase` me manejo sin ellos, directamente con la API de Supabase. (express uso para manejar el servidor en ambas ramas)## Proyecto hecho por [Pablo Torrez](https://wwww.github.com/pblnahu1/)