Introducción
Arquitectura de la aplicación
Instalar todo lo necesario
Instalación JDK JAVA
Instalación Visual Studio Code
Instalación de Node y NPM
Crear proyecto Sprint boot
Creando proyecto Spring Initialzer
Abrir aplicación con Visual Studio Code
Primer controlador User Controller
Metodos Get y post
Instalar Xampp
Crear base de datos
Configurando dependencias para conectar base de datos
Conexion a base de datos
Crear autenticación para nuestro sistema
Especificar a nuestro endpoint los datos a recibir
Crear la clase User Details Request Model
Crear la clase User Rest
Solución de problema en clase User Rest
Crear clase User Dto
Utilizar las clases User Request, User Rest y User DTO en nuestro controlador
Implementar User Service Interface
Crear una entidad para los usuarios
Interfaz User Repository
Crear el usuario en User Service
Probar la aplicación
Comprobar si el usuario ya existe en la base de datos
Crear un id publico para el usuario
Añadir Spring boot security
Encriptar la contraseña
Hacer que nuestro endpoint para registrar sea usuarios publico
Crear clase login request model
Implementar Load User By Username
Crear clase Security constants
Inicio de sesión en nuestro sistema
Implementando inicio de sesión parte 1
Implementando inicio de sesión parte 2
Probar inicio de sesión
Refactorizar proyecto
Modificar URL de inicio de sesión
Hacer nuestra aplicación stateless
Creando clase authorization filter
Creando clase authorization filter parte 2
Probar endpoint get user
Creando clase SpringApplicationContext
Añadir el id publico del usuario en el header
Leer el token secret desde el archivo de configuracion
Creando índices para email y userid
Implementando endpoint para obtener datos de usuario
Agregando soporte XML
Excepciones
Manejo de excepciones
Email exists exception
Clase para manejar nuestras excepciones especificas
Retornando un objeto de error message
Manejar el resto de las excepciones
Relaciones entre tablas
Modelo Entidad Relación de nuestro sistema
Crear entidades
Fechas automáticas
Relación user post
Relación post exposure
Comprobar que nuestras relaciones estén bien
Creando exposures
Creando DTO para post y exposure
Creando PostCreationDto
Crear controlador y request para los posts
Agregar dependencia model mapper
Crear post service y repository
Crear los post en nuestro sistema
Crear nuestro post parte 1
Crear nuestro post parte 2
Crear nuestro post parte 3
Probando nuestro endpoint para crear post
Corrigiendo fechas y expiración del post
Creando endpoint para los post del usuario
Crear método para la consulta
Convertir de una lista de Post Entity a Post Dto
Probando nuestro endpoint
Omitiendo campos en modelmapper
Consultas usando lenguaje SQL
Terminar endpoint para post públicos
Probar endpoint de post públicos
Quitando autenticación de nuestro endpoint de post públicos
Comprobar si el post ya ha expirado
Endpoint para retornar detalles de un post
Endpoint para retornar detalles de un post parte 2
Probar endpoint para los detalles del post
Endpoint para eliminar post
Endpoint para actualizar post
Probar endpoint para actualizar post
Aplicación en React usando hooks
Crear una app en React
Instalar dependencias
Configurar nuestra react app
Configurar el router
Configurar react redux
Inicio de sesión en React
Formulario de inicio de sesión
Validar formulario de inicio de sesión
Crear acción para el inicio de sesión
Enviar formulario de inicio de sesión
Habilitar CORS en Spring boot
Procesar JWT token
Cargar token al recargar la aplicación
Comprobar si el usuario esta en el sistema
Cerrando sesión
Corrigiendo error dispatch
Rutas protegidas por autenticación
Mensaje de error por credenciales incorrectas
Registro de usuarios en React
Crear Registro en el sistema
Finalizar nuestro registro de usuarios
Posts en nuestra aplicación de React
Corregir nombre de función
Lista de post públicos
Utilizar moment en nuestro proyecto
Creando vista detalles del post
Creando vista detalles del post parte 2
Instalar SystaxHighlighter
Copiar contenido del post al portapapeles
Usando alertas en nuestra aplicación
Permitir la descarga del post
Creando vista para los post del usuario
Añadir botones a controles
Placeholder cuando esta cargando posts
Crear formulario para crear post
Crear post
Notificación que el post se ha creado
Solucionando nombre endpoint
Crear un reducer para los posts del usuario
Cargar posts del usuario al store
Traer los posts al crear un nuevo post
Eliminar post
Editar post parte 1
Editar post parte 2
Imagen para cuando no hay posts
Mostrar mensaje que no hay posts
Refactorizando código
Corrigiendo warnings eslint
Lanzar nuestra React app en AWS con GitLab
Crear nuestro bucket en S3
Crear una política para nuestro bucket
Crear nuestro repositorio en Gitlab
Archivo de configuración despliegue continuo
Crear un usuario para S3
Enviando cambios a nuestro repositorio remoto
Lanzando nuestra app en S3
Refactorizando código en app de Java
Instalar paquetes de validación
Validando modelo para crear usuario
Retornando un objeto con los errores de validación
Validando modelo para crear post
Refactorizando nuestro código
Creando datos en la base de datos al inicializar aplicación
Lanzar nuestra Spring Boot API en AWS EC2
Crear EC2 instance en AWS
Conectarnos a la instancia EC2 con SSH
Instalar Mysql en EC2
Crear usuario y base de datos
Crear repositorio en Github
Clonando repositorio en EC2
Instalando Java y Maven
Generar archivo para lanzar aplicación
Instalar Docker y Docker compose
Crear archivos de configuración de docker y docker-compose
Probando API
Cambiando endpoint en nuestra app de react
Probando nuestra app completa