Historia de usuario
Como administrador de la organización, quiero crear, listar, editar y eliminar proyectos, para poder organizar el trabajo de vault, openreport, state-iac (y futuras herramientas) en unidades independientes.
Contexto
Es la base del nuevo modelo de jerarquía Organization > Project > Module. Esta issue cubre únicamente la entidad Project y su gestión CRUD desde el panel de admin. La activación de módulos por proyecto, y la asignación de usuarios/roles/permisos por proyecto, se implementan en issues posteriores.
Criterios de aceptación
Notas técnicas
Seguir el patrón ya existente en auth (roles): capas domain/application/infrastructure + endpoints REST en /api/projects con guard isAdmin(locals.user).
Definir el modelo de datos: Project { id, name, slug, description?, status (active/archived), createdAt, updatedAt }. La referencia a Organization se puede omitir por ahora (instancia única) pero dejar el campo preparado (organizationId) para cuando existan múltiples organizaciones.
Resolver la colisión de nombre con el projects module actual (state-iac) antes de tocar rutas.
Fuera de alcance (issues futuras)
Activar/desactivar módulos por proyecto.
Asignar usuarios, roles y permisos por proyecto.
Settings propias de cada proyecto.
Historia de usuario
Como administrador de la organización, quiero crear, listar, editar y eliminar proyectos, para poder organizar el trabajo de vault, openreport, state-iac (y futuras herramientas) en unidades independientes.
Contexto
Es la base del nuevo modelo de jerarquía Organization > Project > Module. Esta issue cubre únicamente la entidad Project y su gestión CRUD desde el panel de admin. La activación de módulos por proyecto, y la asignación de usuarios/roles/permisos por proyecto, se implementan en issues posteriores.
Criterios de aceptación
Notas técnicas
Seguir el patrón ya existente en auth (roles): capas domain/application/infrastructure + endpoints REST en /api/projects con guard isAdmin(locals.user).
Definir el modelo de datos: Project { id, name, slug, description?, status (active/archived), createdAt, updatedAt }. La referencia a Organization se puede omitir por ahora (instancia única) pero dejar el campo preparado (organizationId) para cuando existan múltiples organizaciones.
Resolver la colisión de nombre con el projects module actual (state-iac) antes de tocar rutas.
Fuera de alcance (issues futuras)
Activar/desactivar módulos por proyecto.
Asignar usuarios, roles y permisos por proyecto.
Settings propias de cada proyecto.