Este proyecto es un acortador de enlaces, que permite a los usuarios crear enlaces cortos para compartirlos con otras personas. El proyecto ha sido desarrollado utilizando el framework NestJS, y se ha implementado un sistema de autenticación basado en JSON Web Tokens (JWT). El proyecto ha sido desplegado en un entorno de producción, y se ha implementado un sistema de cacheo utilizando Redis. El proyecto ha sido desarrollado como parte de una practica didáctica.
-
Contabilizar las visitas a los enlaces: Se ha implementado un sistema para contabilizar las visitas a los enlaces, para permitir a los usuarios obtener estadísticas sobre sus enlaces.
-
Publicación en producción: El proyecto ha sido desplegado en un entorno de producción, como tambien las bases de datos SQL Lite + Redis.
-
Pruebas en producción: Se han realizado pruebas exhaustivas en el entorno de producción para garantizar la funcionalidad y estabilidad del proyecto.
-
Personalización de slugs: Se ha implementado la funcionalidad para personalizar slugs, permitiendo una mayor flexibilidad en la creación de URLs para los usuarios.
-
Creación de usuarios: Se ha implementado un sistema para la creación de usuarios, permitiendo a los visitantes registrarse y tener su propio perfil.
-
Autenticación - JWT: Se ha implementado la autenticación mediante JSON Web Tokens (JWT), proporcionando una forma segura de manejar la autenticación de usuarios.
-
Obtención de enlaces por parte de los usuarios: Los usuarios registrados pueden obtener todos sus enlaces, permitiendo un fácil acceso y gestión de sus recursos.
-
Creación de un decorador personalizado para obtener el usuario: Se ha creado un decorador personalizado para obtener el usuario actualmente autenticado, facilitando la gestión de usuarios en diferentes partes del código.
-
Implementación de cache Redis: Se ha implementado un sistema de cacheo utilizando Redis, mejorando la eficiencia y velocidad de las operaciones de lectura.
-
Creación de enlaces temporales para usuarios no registrados: Se ha implementado la funcionalidad para que los usuarios no registrados puedan crear enlaces temporales con una duración de 1 semana.
-
Creación de enlaces temporales con límite personalizado por parte de los usuarios: Los usuarios pueden crear enlaces temporales con un límite de tiempo personalizado, proporcionando una mayor flexibilidad en la gestión de recursos.
-
Clonar el repositorio
# Clonar el repositorio $ git clone git@github.com:rsbmk/shortener.git # Entrar en el directorio $ cd shortener # Instalar las dependencias $ npm install
-
Correr el servidor
A. Usando Docker: Es la mejor forma puesto que te levantara los servicios necesarios como la base de datos en redis.
# Correr el servidor $ docker-compose up
El servidor estara corriendo en el puerto 3000.
B. Sin usar Docker: Debes tener instalado redis en tu maquina.
# development $ npm run start # watch mode $ npm run start:dev
- Crear una UI para el proyecto
En el proyecto esta incluido el archivo insomnia_endpoints.json
que contiene todos los endpoints para probar el proyecto.
Solo tienes que importar el archivo en el cliente de insomnia y probar los endpoints.