{"id":31999583,"url":"https://github.com/thekaki/proyectofullstack","last_synced_at":"2026-04-12T09:02:41.335Z","repository":{"id":317726020,"uuid":"1062666778","full_name":"thekaki/ProyectoFullStack","owner":"thekaki","description":"Este proyecto implementa un backend con spring (Boot \u0026 Security) para la gestión de un blog. Permite la creación de artículos, así como la gestión de estos por usuarios con un sistema de roles y permisos. Implementa conexión a una bbdd mysql utilizando JPA.","archived":false,"fork":false,"pushed_at":"2025-10-02T16:06:23.000Z","size":5138,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-16T06:05:33.783Z","etag":null,"topics":["jpa-hibernate","jwt","mysql","spring","spring-boot","spring-security"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thekaki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-23T14:59:18.000Z","updated_at":"2025-10-02T16:06:26.000Z","dependencies_parsed_at":"2025-10-06T07:05:23.745Z","dependency_job_id":null,"html_url":"https://github.com/thekaki/ProyectoFullStack","commit_stats":null,"previous_names":["thekaki/proyectofullstack"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thekaki/ProyectoFullStack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thekaki%2FProyectoFullStack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thekaki%2FProyectoFullStack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thekaki%2FProyectoFullStack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thekaki%2FProyectoFullStack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thekaki","download_url":"https://codeload.github.com/thekaki/ProyectoFullStack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thekaki%2FProyectoFullStack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31709295,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T06:22:27.080Z","status":"ssl_error","status_checked_at":"2026-04-12T06:21:52.710Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jpa-hibernate","jwt","mysql","spring","spring-boot","spring-security"],"created_at":"2025-10-15T14:32:36.748Z","updated_at":"2026-04-12T09:02:41.329Z","avatar_url":"https://github.com/thekaki.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"🛠️ Nuevo proyecto: Back-end de gestión de artículos con control de acceso personalizado\n\nHoy quiero compartir una mirada general a un proyecto en el que he estado trabajando recientemente. No es perfecto ni terminado, pero ha sido una gran oportunidad para aprender y aplicar buenas prácticas reales.\n\n📌 Qué hace el proyecto\n\nEs una API / servicio backend para gestionar “artículos”: creación, consulta, borrado, filtrado por título o propietario.\n\nIncluye control de acceso fino: cada operación crítica (por ejemplo borrar un artículo) está protegida con lógica propia que comprueba si el usuario es el propietario del recurso o tiene un permiso asignado.\n\nLa seguridad se basa en Spring Security / JWT: los usuarios se autentican con tokens, y luego cada llamada verifica permisos dinámicamente.\n\nImplementé una capa de autorización personalizada: un bean que decide si un usuario puede hacer una acción basándose en su rol, permisos y si es propietario del recurso (modelo «Ownable»).\n\n💡 Tecnologías utilizadas\n\nAlgunas de las herramientas clave que he usado:\n\nJava + Spring Boot como núcleo backend (controladores, servicios, repositorios)\n\nSpring Security + JWT para manejo de autenticación/autorización\n\nPersistencia con JPA / Hibernate para entidades en base de datos\n\nArquitectura orientada a capas (controladores, servicios, repositorios)\n\nBuenas prácticas como separar lógica de negocios, comprobaciones de seguridad, reutilización de componentes\n\nLogs y trazas para depurar decisiones de seguridad\n\n🧠 Lo que aprendí / retos interesantes\n\nCómo integrar reglas de negocio con seguridad personalizada — por ejemplo que un usuario pueda eliminar solo sus propios artículos, aunque no tenga un permiso global explícito.\n\nEl desafío de usar @PreAuthorize(hasPermission(…)) con distintos tipos de parámetros (cuando solo tengo el id, no el objeto completo)\n\nPensar en expansión futura: que el mecanismo de autorización sirva para otras entidades igual que para Articulo.\n\nLa importancia de la trazabilidad y logs al tomar decisiones de seguridad, porque ayuda mucho a depurar por qué algo fue permitido o denegado.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthekaki%2Fproyectofullstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthekaki%2Fproyectofullstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthekaki%2Fproyectofullstack/lists"}