Aplicación que permite al usuario leer, crear, actualizar y borrar tareas y sitios favoritos, con un sistema de autenticación.
El proyecto es un API REST desarrollado utilizando Node.js y Express en el backend, y React con Vite en el frontend. Permite a los usuarios realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en tareas y sitios favoritos. También cuenta con un sistema de autenticación para proteger las rutas y asegurar el acceso a las funcionalidades.
- express
- mysql2
- jsonwebtoken
- cookie-parser
- cors
- dotenv
- mysql2
No pude utilizar el paquete express-session
ya que parece no ser compatible con los módulos ECMAScript (ESM). Aunque se afirma que es compatible, en realidad parece no funcionar correctamente con la función pool
de mysql2
. Por el momento, no tengo una solución para este problema. En su lugar, utilicé jsonwebtoken
para crear y verificar tokens, los cuales son enviados a través de las cookies sin ser almacenados en la base de datos.
-
users (ED)
- user_id INT (PK)
- email varchar (UQ)
- name varchar not null
- password varchar not null
- completed_tasks_count INT NULL
- create_at DATETIME NOT NULL DEFAULT = NULL
- default_url_id INT (FK)
-
tasks (ED)
- task_is INT (PK)
- user_id (FK)
- name varchar not null
- description varchar not null
- done bool
-
sites (ED)
- site_id INT (PK)
- user_id (FK)
- name VARCHAR
- url VARCHAR
-
default_url_gravatar (EC)
- id INT (PK)
- default_url VARCHAR(100)
- description VARCHAR(100)
-
glosario
-
PRIMARY KEY (PK)
-
FOREIGN KEY (FK)
-
UNIQUE (UQ)
-
ENTIDAD DE DATOS (ED)
-
ENTIDAD PIVOTE (EP)
-
ENTIDAD CATALOGO (EC)
- user 1 a m task.
- user 1 a m sites.
- user 1 a 1 default_url_gravatar.
- Vite
- React
- axios
- md5.
- moment
- react-hot-toast
- react-icons
- react-router-dom
- sweetalert2
- Clona este repositorio
- Navega al directorio del backend: cd app-fullstack/backend
- Instala las dependencias del backend: npm install
- Crea un archivo .env en el directorio del backend y configura las variables de entorno necesarias o modifica el archivo .env.example
- Inicia el servidor backend: npm run dev
- Navega al directorio del frontend: cd ../client
- Instala las dependencias del frontend: npm install
- Configura el archivo config.js del frontend con las variables de entorno necesarias.
- Inicia el servidor de desarrollo del frontend: npm run dev
- Accede a la aplicación en tu navegador: http://localhost:5173 o el especificado
Puedes encontrar un demostración de la app 👉🏽 DEMO TASKIFY
Por favor ten en cuenta que la demostración en línea de la aplicación no incluye la funcionalidad de los sitios favoritos. Además, la aplicación puede estar en suspensión en ciertos momentos debido a tareas de mantenimiento o actualizaciones del servidor.
- API de citas de anime 👉🏽 anime chan
Las contribuciones son bienvenidas. Si tienes alguna sugerencia, mejora o corrección, no dudes en abrir un problema o enviar una solicitud de extracción.
- 07/07/2023
Al desplegar el backend, la base de datos y el front, me di cuenta que no se enviaban las cookies desde el back al
probe tratando de configurar el back y las cookies pero no pude
buscando información me dí que podia hacerlo por los headers lo cual me parece una mejor forma.
Cambio en el back:
const {token} = req.cookies
por:const token = req.headers.authorization
y la validación es la misma. En el frond guardo el token en el localStorage (no sé si sea una buena práctica) y configuro axios para que lo envie en los headers.
Ahora debo ver como manejar cuando se expiran o se da logout.