Skip to content

ToDoListAPI es una API RESTful desarrollada con Spring Boot que permite a los usuarios registrarse, autenticarse y gestionar sus tareas personales de forma segura. Implementa roles, permisos y autenticación JWT, ofreciendo endpoints para crear, listar, actualizar y eliminar tareas.

Notifications You must be signed in to change notification settings

kgonzagao/ToDoListAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ToDoListAPI

API RESTful para la gestión de tareas con autenticación y autorización basada en JWT, desarrollada con Spring Boot.

Este proyecto es una práctica realizada a partir de la página roadmap.sh


Tabla de Contenidos


Descripción

ToDoListAPI es una API REST que permite a los usuarios registrarse, autenticarse y gestionar sus tareas personales. Cada usuario puede crear, listar, actualizar y eliminar sus propias tareas. El sistema implementa roles y permisos, y protege los endpoints usando JWT para garantizar la seguridad y privacidad de los datos.


Tecnologías Utilizadas

  • Spring Boot: Framework principal para desarrollo rápido de aplicaciones Java.
  • Spring Web (MVC): Para la creación de controladores REST y manejo de rutas HTTP.
  • Spring Data JPA: Acceso y persistencia de datos en bases de datos relacionales.
  • Spring Security: Autenticación y autorización, integración con JWT.
  • JWT (JSON Web Token): Autenticación stateless y segura.
  • Lombok: Reducción de código repetitivo (getters, setters, builders, etc.).
  • JUnit 5 & Mockito: Pruebas unitarias y de integración.
  • Bean Validation: Validación automática de datos de entrada en DTOs.

Arquitectura y Diseño

Patrón de Capas (Layered Architecture)

  • Presentación (Controllers): Expone endpoints REST y recibe las peticiones HTTP.
  • Servicio (Services): Contiene la lógica de negocio y validaciones.
  • Persistencia (Repositories): Acceso a la base de datos mediante JPA.
  • Seguridad: Filtros y utilidades para autenticación y autorización con JWT.

Otros Patrones

  • DTO (Data Transfer Object): Para transferir datos entre capas sin exponer entidades.
  • Builder: Construcción de objetos complejos de forma segura y legible.
  • Singleton (Spring Beans): Servicios y repositorios gestionados por Spring.

Características Principales

  • Registro y autenticación de usuarios.
  • Gestión de tareas personales (CRUD).
  • Roles y permisos para control de acceso.
  • Seguridad basada en JWT (stateless).
  • Paginación en la consulta de tareas.
  • Manejo global de errores y respuestas estructuradas.
  • Pruebas unitarias y de integración.
  • Código limpio, modular y fácil de mantener.

Estructura del Proyecto

src/
├── main/
│   ├── java/
│   │   └── com/kg/ToDoListAPI/
│   │       ├── auth/           # Módulo de autenticación y seguridad
│   │       ├── module/task/    # Módulo de gestión de tareas
│   │       ├── common/         # Utilidades y excepciones globales
│   │       └── ToDoListApiApplication.java
│   └── resources/
│       └── application.properties
└── test/
    └── java/
        └── com/kg/ToDoListAPI/
            ├── auth/
            └── module/task/

Seguridad

  • JWT: Todos los endpoints protegidos requieren un token JWT válido.
  • Roles y Permisos: Control granular de acceso a recursos.
  • Spring Security: Configuración de filtros, políticas stateless y manejo de excepciones de seguridad.

Manejo de Errores

  • GlobalExceptionHandler: Captura y responde con mensajes claros y estructurados ante errores de validación, acceso denegado, recursos no encontrados, etc.

Pruebas

  • JUnit 5 & Mockito: Pruebas unitarias para servicios y controladores.
  • MockMvc: Pruebas de integración para endpoints REST.
  • Cobertura: Alta cobertura de código y validación de flujos críticos.

Fortalezas del Proyecto

  • Modularidad: Separación clara de responsabilidades por capas y módulos.
  • Escalabilidad: Fácil de extender con nuevos módulos, entidades o endpoints.
  • Seguridad: Implementación robusta de autenticación y autorización.
  • Mantenibilidad: Código limpio, uso de DTOs y buenas prácticas de Java/Spring.
  • Testabilidad: Pruebas unitarias y de integración bien estructuradas.
  • Documentación: Código autoexplicativo y fácil de entender.

Cómo Ejecutar

  1. Clona el repositorio:
    git clone https://github.com/kgonzagao/ToDoListAPI.git
    cd ToDoListAPI
  2. Configura la base de datos en src/main/resources/application.properties.
  3. Ejecuta la aplicación:
    ./mvnw spring-boot:run
  4. La API estará disponible en http://localhost:8080.

Endpoints Principales

Autenticación

  • POST /auth/sign-up — Registro de usuario
  • POST /auth/login — Login de usuario
  • POST /auth/refresh-token — Renovar token JWT

Tareas

  • GET /api/tasks — Listar tareas del usuario autenticado (paginado)
  • POST /api/tasks — Crear nueva tarea
  • PUT /api/tasks/{id} — Actualizar tarea existente
  • DELETE /api/tasks/{id} — Eliminar tarea

Contribuciones

¡Contribuciones, issues y sugerencias son bienvenidas!
Por favor, abre un issue o pull request para discutir cualquier cambio importante antes de realizarlo.


Licencia

Este proyecto está bajo la Licencia Apache 2.0.

About

ToDoListAPI es una API RESTful desarrollada con Spring Boot que permite a los usuarios registrarse, autenticarse y gestionar sus tareas personales de forma segura. Implementa roles, permisos y autenticación JWT, ofreciendo endpoints para crear, listar, actualizar y eliminar tareas.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages