¡Hola! 👋 Soy Alfredo Sobrados, apasionado por la programación, la tecnología y el desarrollo de software. Esto es una recopilación de proyectos y prácticas académicas y extraacadémicas que reflejan mi progreso, aprendizajes y habilidades en diversas tecnologías. 🚀
Descripción: Finanzas Personales es una aplicación Android, diseñada para facilitar la gestión de tus finanzas personales. Implementa la arquitectura MVVM (Model-View-ViewModel) junto con el patrón Repository para garantizar un diseño modular, escalable y fácilmente mantenible. Esta app es mi Práctica Final de Plataformas de Software Móviles.
Tecnologías: Kotlin, Jetpack Compose, Material Design 3, Gradle KTS y Android Studio.
Puntos clave:
- Esta app resuelve el problema de unas finanzas personales mal gestionadas.
- Principales funcionalidades: Ver, Añadir, Editar y Eliminar tanto transacciones de gasto o ingreso como presupuestos asignados a un mes, año y categoría concreta. Estadísticas para visualizar nuestras finanzas y una página principal que nos da un saldo, ingresos y gastos totales.
Descripción:
HotelManagementAPI es una API RESTful diseñada para gestionar un hotel, permitiendo la administración de clientes, habitaciones, reservas, pagos y administradores. Implementa autenticación con JWT y sigue una arquitectura limpia para separar la lógica de negocio, la infraestructura y los adaptadores.
Motivación:
Este proyecto nació como un ejercicio de la comunidad Skool DeHaroHub. Aunque la comunidad ya no está activa, decidí desarrollarlo y publicarlo por mi cuenta como una oportunidad para mejorar mis habilidades en el diseño de APIs RESTful, el manejo de bases de datos con JDBC y la aplicación de buenas prácticas en arquitectura de software.
Tecnologías:
- Lenguaje y Framework: Java 21+ con Spring Boot
- Seguridad: Spring Security con JWT
- Base de Datos: MariaDB en Docker
- Persistencia: JDBC (sin ORM)
- Contenedores: Docker para la base de datos y Adminer
- Documentación: Swagger/OpenAPI
- Pruebas: JUnit5, Mockito y Testcontainers
- Herramientas de construcción: Gradle
Características destacadas:
- CRUD completo para clientes, habitaciones, reservas, pagos y administradores.
- Implementación de autenticación y autorización con JWT.
- Uso de JDBC en lugar de ORM para mayor control sobre las consultas SQL.
- Arquitectura limpia y modular basada en principios hexagonales.
- Configuración con Docker para facilitar la instalación y ejecución.
- Documentación interactiva con Swagger/OpenAPI.
- Pruebas unitarias y de integración para garantizar la estabilidad del sistema.
¿Qué aprendí con este proyecto?
- Profundicé en la arquitectura hexagonal y su aplicación en APIs REST.
- Mejoré el manejo de bases de datos sin ORM utilizando JDBC.
- Implementé autenticación segura con JWT en Spring Boot.
- Aprendí a optimizar la estructura del código para mejorar la mantenibilidad y escalabilidad.
Descripción: Este proyecto implementa un sistema de gestión para un Centro de Convenciones utilizando los principios de la Programación Orientada a Objetos (POO) y varios patrones de diseño. Proporciona funcionalidades para gestionar espacios, reservas, productos y aspectos económicos del centro.
Objetivo: En esta práctica aprendí los pilares de la programación orientada a objetos (herencia, polimorfismo y encapsulación) e implemente varios patrones de diseño.
Herramientas: Java y el IDE NetBeans.
Descripción: La aplicación web permite a los profesores de Tecnologías Web notificar avisos a sus alumnos.
Tecnologías: HTML, CSS, PHP, JavaScript, jQuery y un entorno virtual LAMP(Linux, Apache, MySQL y PHP).
Objetivo: Aprender a desarrollar una aplicación web básica y a prepar el entorno virtual de desarrollo.
Descripción: Ejercicios y ejemplos prácticos de estructuras de datos en Java.
Objetivo: Fortalecer habilidades en lógica y resolución de problemas.
Temas cubiertos:
- Listas enlazadas, pilas, colas, árboles binarios, etc.
Descripción: Ejercicios prácticos para entender conceptos fundamentales de los Sistemas Distribuidos.
Objetivo: Aprender algunos fundamentos prácticos básicos como la ejecución concurrente de hilos o el paso de mensajes de manera bidireccional entre cliente y servidor.
Temas cubiertos:
- Implementación de tareas concurrentes utilizando la clase
Thread
de Java. - Uso de la interfaz
Runnable
para manejar tareas concurrentes. - Implementación de un servidor y cliente de Web Sockets en Java.
Descripción: Este práctica final es una replica del mítico juego Arkanoid desarrollado en Java.
Tecnologías: Java, Swing Java y AWT GUI
Objetivo: Aprender a desarrollar una aplicación de escritorio visual en Java para entender y aplicar el diseño de interfaces de usuario de manera práctica.
Soy un desarrollador en constante aprendizaje, con interés en desarrollo de aplicaciones web y móviles, inteligencia artificial, ciberseguridad y tecnología blockchain. En este portafolio encontrarás desde prácticas básicas hasta proyectos más avanzados, reflejando mi evolución en este duro pero bonito camino.
- LinkedIn: Mi Perfil de LinkedIn
- Correo Electrónico: Mi correo electrónico
¡Gracias por visitar mi portafolio! 😊