Laravel desde cero: Desarrolla y publica una app de pedidos

Aprende Laravel desarrollando una aplicación de pedidos en línea, desde cero y paso a paso. El curso explica el desarrollo a detalle y culmina con la publicación de la aplicación web (cómo hacer deploy a un servidor y cómo asociar un dominio).

Lo que aprenderás al seguir este curso
  • Desarrollar aplicaciones web usando Laravel
  • Conocer las ventajas de trabajar con un framework
  • Envíar mails (para informar sobre nuevos pedidos)
  • Integrar una plantilla a un proyecto Laravel
  • Usar Git en tus proyectos
  • Gestionar repositorios remotos con Github
  • Configurar un VPS y asociar un dominio a la aplicación
  • Agilizar tu desarrollo con el uso de comandos para Sublime Text (opcional)
  • Conocer sobre el servidor web Apache
  • Conocer más sobre registros DNS
  • Conocer sobre la vulnerabilidad CSRF y cómo evitarla
  • Subir y eliminar archivos en un proyecto web
  • Cómo hacer deploy de una aplicación web desarrollada con Laravel
  • Comprender el significado de trabajar en un entorno local y otro de producción
  • Hacer modificaciones al sistema de autenticación de Laravel
Este curso es dedicado a

Personas interesadas en desarrollar su primera aplicación web con Laravel

Desarrolladores web que conocen PHP pero no han usado antes un framework

Requisitos

Es recomendable tener nociones básicas de HTML y CSS

Es recomendable pero no indispensable tener conocimientos básicos de PHP

Lo esencial: ganas de aprender a desarrollar tus propias aplicaciones

Contenido del curso

01

Vista previa disponible

1 ¿Qué vamos a aprender en el curso? 03:38

Un vistazo rápido a los temas que vamos a tratar en el curso.


02

Vista previa disponible

2 Introducción al curso 04:16

¿Por qué Laravel? ¿Por qué no otro framework? ¿Por qué no simplemente PHP sin framework?


03

3 Instalando lo necesario 07:08

¿Qué necesitamos para iniciar nuestro proyecto? ¿Cómo descargamos las herramientas necesarias?

+5 recursos asociados a esta clase


04

4 Creando nuestro proyecto de Laravel 03:46

¿Cómo creamos un proyecto de Laravel nuevo? ¿Qué es Composer?

+1 recurso asociado a esta clase


05

5 IDE o Editor de texto 02:17

¿Qué es un IDE y un editor de texto? ¿Cuál de todos es conveniente usar?

+1 recurso asociado a esta clase

06

6 ¿Qué son las rutas? 03:59

¿Cómo definir las rutas de un proyecto? ¿Qué son realmente?


07

Vista previa disponible

7 Rutas y vistas 03:21

¿Qué son las vistas? ¿Qué relación tienen con las rutas?


08

8 ¿Qué son los controladores? 06:17

¿Controladores? ¿Son realmente necesarios? ¿En qué ayudan?


09

9 Sistema de autenticación 13:31

¿Cómo implementamos un inicio de sesión y registro de usuarios? ¿Qué son las migraciones? ¿Qué son los middlewares?


10

10 Git y Github 07:34

¿Qué es Git? ¿Qué es Github? ¿Qué es un repositorio? ¿Cómo subir nuestro proyecto?

+2 recursos asociados a esta clase

11

Vista previa disponible

11 Integrando nuestros assets al proyecto 10:12

¿Qué diseño vamos a usar para nuestra aplicación? ¿Cómo integramos assets a nuestro proyecto? ¿Qué son los assets?

+1 recurso asociado a esta clase


12

12 El sistema de plantillas Blade 03:38

¿Qué es Blade? ¿Cómo imprimir variables sobre la vista? ¿Cuáles son las directivas principales?


13

13 Estructura de la plantilla 15:41

¿Qué tienen en común los diseños de ejemplo? ¿Cómo diferenciar la estructura general del contenido?


14

14 Integrando la plantilla al proyecto 27:12

¿Cómo integramos la plantilla al proyecto luego de agregar los assets y entender su estructura?

+1 recurso asociado a esta clase


15

15 Definiendo el menú de navegación 08:06

¿Cómo mostramos enlaces diferentes para los invitados y para usuarios que han iniciado sesión? ¿Es obligatorio usar el helper url?


16

16 Aplicando la plantilla a la vista de registro 09:41

En esta ocasión terminamos de aplicar la plantilla a la vista de registro y a la de inicio de sesión.


17

Vista previa disponible

17 Aplicando la plantilla a la página principal (landing page) 04:33

Definimos la landing page de nuestra aplicación, sobre nuestra vista welcome.

18

18 ¿Qué son las migraciones y modelos? 08:24

¿Qué es una migración? ¿Y qué es un modelo? ¿Es necesario usar comandos para crearlos?


19

19 Creando nuestra primera migración y primer modelo 10:21

¿Cómo podemos crear nuestro modelo y su migración correspondiente?

20

20 Entidad Producto 09:40

Definimos los datos para nuestros productos. Así mismo vemos cómo crear claves foráneas entre tablas en nuestras migraciones.


21

21 Eloquent, el ORM de Laravel 04:58

¿Qué es un ORM? ¿Qué es Eloquent y para qué nos sirve? ¿Qué son los seeders?


22

22 Seeders 05:59

¿Cómo definir un seeder? ¿Cómo añadimos datos de prueba a nuestra app?


23

23 Model factories 09:52

¿Qué son los model factories? ¿Cómo podemos generar data ficticia sin escribir los datos manualmente?


24

24 Inyectar datos sobre una vista 08:23

¿Cómo podemos consultar datos vía Eloquent y mostrar tales datos en una vista?


25

25 Entidad Imagen 15:10

Definimos la entidad imagen, y creamos los model factories que hacen falta.


26

26 Tinker, la consola interactiva 04:52

Resuelve tus dudas inmediatamente: sin rutas, sin controladores.


27

27 Relación 1 a muchos 06:10

¡Por fin! Vamos a definir las relaciones entre nuestros modelos: Category, Product y ProductImage.

+2 recursos asociados a esta clase


28

28 Model factories con relaciones 09:41

Veamos cómo generar datos, cuando éstos tienen relaciones entre sí.

29

29 Listar productos y sus imágenes destacadas 07:57

En este capítulo aprendemos a listar los productos y sus imágenes correspondientes. Además aprendemos a definir secciones con un valor por defecto. Por último, vemos qué ocurre si mostramos un objeto completo en una vista, en vez de mostrar uno de sus atributos.


30

30 ¿Qué es un CRUD y qué tanto demoras en hacer uno? 02:25

¿Qué es un CRUD? En español se conoce también como ABM (altas, bajas y modificaciones).


31

31 CRUD de Productos 15:51

¿Qué son GET y POST? ¿Cómo empezamos a crear nuestro CRUD?


32

32 Paginación 05:14

¿Cómo mostramos los productos en distintas páginas? ¡Con Laravel es muy sencillo!


33

33 Peticiones HTTP y la clase Request 07:28

¿Cómo se ejecutan las peticiones HTTP? ¿Cuál es el funcionamiento por defecto de un formulario? ¿Qué es Ajax?

+1 recurso asociado a esta clase


34

34 Formulario de registro 15:20

Implementamos el registro de productos usando los métodos create y store.


35

35 Formulario de edición 12:21

Implementamos la edición de productos usando los métodos edit y update.


36

36 Formulario de eliminación 12:18

¿Podemos usar el verbo GET para TODAS nuestras rutas?

+1 recurso asociado a esta clase


37

37 Opción de Eliminar al mismo nivel que Ver y Editar 01:30

¿Cómo ponemos el formulario de eliminación en la misma fila que los otros botones?


38

38 Validación de datos 20:29

¿Cómo podemos validar los datos que se ingresan en un formulario? ¿Por qué es importante validar?

+1 recurso asociado a esta clase

39

39 ¿Qué son los middlewares? 07:38

¿Dónde se ubican los Middleware de nuestra app? ¿Qué son realmente?


40

40 Middleware para el Rol de administrador 06:44

¿Cómo definir nuestro propio Middleware?

+1 recurso asociado a esta clase


41

41 Grupo de rutas 09:23

¡Vamos a definir un grupo de rutas! Y vamos a aplicar un middleware y un prefijo sobre todas ellas.


42

42 Vista home y directivas condicionales 07:24

Aplicamos las clases de la plantilla Material Kit a nuestra vista home, y además añadimos algunas opciones al menú que solo estarán disponibles para usuarios administradores.


43

43 Directiva @include para un footer general 08:15

¿Cómo incluir una vista dentro de otra usando @include?

44

44 Imágenes por producto 18:53

Veamos cómo gestionar las imágenes asociadas a cada producto.

+1 recurso asociado a esta clase


45

45 Campos calculados y cómo subir imágenes 11:30

¿Cómo podemos subir y guardar imágenes? ¿Qué es y cómo definir un Accessor?


46

46 Eliminación de imágenes (archivo y registro de la bd) 11:41

¿Cómo podemos eliminar un archivo y su registro correspondiente en la base de datos?


47

47 Accessor para la imagen destacada 06:04

Vamos a definir un accessor que nos devuelva la imagen destacada de cada producto.


48

48 Destacar imagen 10:30

Veamos cómo destacar una imagen para cada producto.

49

Vista previa disponible

49 Entidades Cart y CartDetail 12:52

¡Ahora sí vamos a modelar las entidades necesarias para gestionar los carritos de compra y los pedidos de los clientes!


50

50 Namespaces 09:04

¿Qué es un Namespace? ¿Cómo aplicamos un Namespace a un conjunto de rutas?


51

51 Paginar productos y corregir problema con las columnas 14:46

Nuestra ruta principal se ha visto infestada de pequeños errores visuales. Ahora los corregimos.


52

52 Página de producto 20:03

Implementamos la página para cada producto: diseñamos la vista y la devolvemos en el método show.


53

53 Añadir al carrito de compras 08:47

Cuando un cliente presione "Añadir al carrito de compras", se le mostrará un modal que le preguntará por la cantidad que desea agregar, y un botón para confirmar o cancelar la acción.

+1 recurso asociado a esta clase


54

54 Carrito de compras activo 18:00

Asociar un carrito de compras a cada usuario, de forma que siempre pueda seleccionar los productos de su preferencia.


55

55 Mostrar productos cargados 07:50

Vamos a mostrar al usuario los productos que tiene cargados actualmente en su carrito de compras.


56

56 Eliminar un producto del carrito 03:46

Vamos a añadir un formulario para hacer una petición DELETE y como resultado eliminar un detalle del carrito de compras activo.


57

57 Una vulnerabilidad y su corrección 08:34

Hay un detalle que debemos tener en cuenta, respecto a la eliminación de detalles en el carrito de compras.


58

58 Notificaciones usando flash data 09:01

¿Cómo podemos mostrar un mensaje de notificación indicando que una operación se llevó a cabo de forma exitosa?


59

59 Realizar pedido 08:37

El cliente ya está listo para realizar su pedido. ¿Qué procede?

60

60 ¿Qué diferencia hay entre config y el archivo .env? 15:45

¿Qué es realmente el archivo .env? ¿Se puede eliminar? ¿Y qué hay de la carpeta config?


61

61 ¿Cómo vamos a configurar y publicar nuestra app? 07:52

Introducción a los servicios de hosting y dominio que usaremos.

+2 recursos asociados a esta clase


62

62 Configuración Digital Ocean + Namecheap 37:27

Vamos a publicar nuestra app (subir nuestro proyecto al droplet vía git), y a asociar un dominio a nuestro droplet (para acceder usando este dominio en vez de la IP).

+4 recursos asociados a esta clase


63

63 Configuración del envío de mails 24:05

En esta clase vemos cómo configurar el envío de mails usando Mailgun. También adjunto un artículo sobre cómo configurar los mails usando un correo Gmail (por si tienen un proyecto sin dominio).

+1 recurso asociado a esta clase


64

64 Nuevo panel de Mailgun 08:26

Este video es una actualización del anterior. Aquí vemos cómo configurar un dominio en el nuevo panel que nos ofrece Mailgun (distinto diseño, misma idea).

65

65 Gestión de categorías 25:07

Implementemos un CRUD para las categorías. Esta vez un poco más rápido y con unos trucos nuevos!


66

66 Categorizar productos 13:36

Asignemos categorías a los productos. Carguemos un select con información de la base de datos.


67

67 Página de categoría 12:47

En vez de mostrar los productos directamente, ahora vamos a mostrar un índice de productos en base a las categorías existentes.


68

68 Buscador en la página principal 10:25

Vamos a añadir una búsqueda de productos para facilitar la navegación de nuestros clientes.


69

69 Buscador predictivo y resultados inteligentes 20:59

¿Qué son los conflictos de rutas? ¿Cómo implementamos un buscador con autocompletado?

+2 recursos asociados a esta clase


70

70 Envío de nuestro 1er mail y Variables de configuración 25:03

En esta lección vemos cómo hacer uso de clases Mailable. Así mismo configuramos algunas variables importantes.

+2 recursos asociados a esta clase


71

71 Enviar detalles de una orden vía mail 06:57

Vamos a añadir un título al email que enviamos por cada nuevo pedido, y así mismo mostrar los detalles del pedido.


72

72 Subir cambios a nuestro droplet 03:22

Cada vez que hagamos cambios a nuestro proyecto, debemos seguir estos pasos para actualizar la aplicación en nuestro servidor de producción.


73

73 Imágenes para las categorías 21:15

Los productos se asocian con varias imágenes. ¿Las categorías merecen al menos una imagen verdad? De forma opcional es decir, sino mostramos un producto que la represente!

74

74 Usuarios con distintos datos (nuevas migraciones y rollback) 28:10

¿Te has preguntado cómo modificar los campos de un usuario? ¿O incluso el funcionamiento del inicio de sesión o registro? Veamos cómo hacer ello.


75

75 Limitaciones del middleware auth para peticiones POST 04:44

Cuando una página está protegida bajo el middleware auth, el visitante es redirigido a /login. ¿Pero qué pasa si se trata de una ruta POST?


76

76 Redirección dinámica luego del login 09:40

En esta lección vamos a ver cómo redirigir a un usuario a una página determinada luego de iniciar sesión, en base al valor de un parámetro GET.

77

77 Para muestra un botón

Ya que has llegado al final del curso, este es un mensaje final para darte ánimos de continuar aprendiendo.


78

78 Precios que cambian en el tiempo

El precio de los productos puede cambiar de un día a otro. ¿Cómo afecta esto a nuestra aplicación?


79

79 Evitar productos repetidos

¿Cómo podemos solucionar el hecho de que un cliente pueda cargar el mismo producto varias veces a su carrito activo?


80

80 Considerar stock de productos

El administrador quiere limitar la venta de algunos productos. ¿Cómo lo hacemos?


81

81 Informes y reportes estadísticos gráficos

Los reportes e informes de ventas siempre son interesantes.

Preguntas frecuentes

Con una membresía premium obtienes acceso a todos los cursos de la plataforma, incluyendo este.

Como usuario premium tendrás acceso a la sección de preguntas y respuestas de la plataforma.

En nuestro foro privado, el 100% de las preguntas reciben respuesta 🙂.

Los pagos se pueden realizar vía PayPal o con tarjeta (crédito o débito).

Escríbenos a [email protected] si deseas coordinar otro medio de pago.

Laravel desde cero: Desarrolla y publica una app de pedidos

Esta serie consta de 81 capítulos.

Nivel de dificultad: Aprendiz.

Recuerda que debes iniciar sesión para llevar un control de tu progreso.

¿Aún no te has registrado?

Regístrate y mide tu progreso!


¿Te gustaría compartir este curso?

Antes que te vayas

Inscríbete en nuestro curso gratuito de Laravel