Skip to content

lgarbayo/project-manager-API-Rest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Awesome Project Manager API

Java Spring Boot Maven

API REST construida con Spring Boot para gestionar proyectos, hitos y tareas, e incluir un endpoint de analisis que resume el avance de un proyecto. Este README se basa en la definicion del contrato v0.0.1.


Caracteristicas clave

  • CRUD completo para proyectos, hitos y tareas.
  • Analisis de avance por proyecto con detalle por hitos y tareas.
  • Contratos claros: comandos de alta/actualizacion separados de los recursos.
  • Estructura simple lista para evolucionar hacia una arquitectura por capas.

Arquitectura

graph TD
  Client[Cliente REST] -->|HTTP| Controllers[Controllers]
  Controllers --> Services[Servicios]
  Services --> Repositories[Repositorios]
Loading

Estructura del proyecto

graph TD
  A[src/main/java/com/project_manager]
  A --> B[AwesomeProjectManagerApplication.java]
  A --> C[...code...]
  D[src/main/resources]
  D --> D1[application.properties]
Loading

Requisitos previos

  • Java 21 (Temurin recomendado).
  • Maven 3.9+ o el wrapper ./mvnw.

Puesta en marcha

Opcion 1 · Local con Maven

./mvnw clean package
./mvnw spring-boot:run

La aplicacion escucha en http://localhost:8080.


Configuracion

Parametros por defecto (src/main/resources/application.properties):

spring.application.name=awesomeProjectManager

API REST

Metodo Endpoint Descripcion
GET /project Lista proyectos
POST /project Crea un proyecto
GET /project/{projectUuid} Recupera un proyecto
PUT /project/{projectUuid} Actualiza un proyecto
DELETE /project/{projectUuid} Borra un proyecto
GET /project/{projectUuid}/milestone Lista hitos
POST /project/{projectUuid}/milestone Anade un hito
GET /project/{projectUuid}/milestone/{milestoneUuid} Recupera un hito
PUT /project/{projectUuid}/milestone/{milestoneUuid} Actualiza un hito
DELETE /project/{projectUuid}/milestone/{milestoneUuid} Borra un hito
GET /project/{projectUuid}/task Lista tareas
POST /project/{projectUuid}/task Crea una tarea
GET /project/{projectUuid}/task/{taskUuid} Recupera una tarea
PUT /project/{projectUuid}/task/{taskUuid} Actualiza una tarea
DELETE /project/{projectUuid}/task/{taskUuid} Borra una tarea
GET /project/{projectUuid}/analysis Analisis del proyecto

Modelos y comandos

export interface DateType {
  year: number; // YYYY
  month: number; // 0-11
  week: number; // 0-3
}

export interface Project {
  uuid: string;
  title: string;
  description?: string;
  startDate: DateType;
  endDate: DateType;
  additionalFields?: Record<string, string>;
}

export interface Milestone {
  uuid: string;
  projectUuid: string;
  title: string;
  date: DateType;
  description?: string;
}

export interface Task {
  uuid: string;
  projectUuid: string;
  title: string;
  description?: string;
  durationWeeks: number;
  startDate: DateType;
}

export interface UpsertProjectCommand {
  title: string;
  description?: string;
  startDate: DateType;
  endDate: DateType;
  additionalFields?: Record<string, string>;
}

export interface UpsertMilestoneCommand {
  title: string;
  date: DateType;
  description?: string;
}

export interface UpsertTaskCommand {
  title: string;
  description?: string;
  durationWeeks: number;
  startDate: DateType;
}

Ejemplo de creacion de proyecto

POST /project Content-Type: application/json

{
  "title": "Lanzamiento Q4",
  "description": "Plan de entrega de producto",
  "startDate": { "year": 2025, "month": 9, "week": 0 },
  "endDate": { "year": 2025, "month": 11, "week": 2 },
  "additionalFields": {
    "owner": "equipo-producto",
    "priority": "alta"
  }
}

Formato de error

export interface Error {
  type: string;
  description: string;
}

Contribuciones

  1. Haz un fork del repositorio.
  2. Crea una rama feature: git checkout -b feature/nueva-funcionalidad que cuelgue de la rama develop.
  3. Asegurate de pasar los tests y respeta el estilo del proyecto.
  4. Envia un pull request explicando claramente el cambio.

About

a Java Spring Boot REST API with hexagonal architecture for advanced project management with AI-powered analysis. Integrates RAG services for task estimation and automatic description generation

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors