CINXE.COM
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width"> <meta property="og:site_name" content="Laracasts"> <link rel="icon" type="image/png" href="/favicons/favicon-96x96.png" sizes="96x96" /> <link rel="icon" type="image/svg+xml" href="/favicons/favicon.svg" /> <link rel="shortcut icon" href="/favicons/favicon.ico" /> <link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png" /> <meta name="apple-mobile-web-app-title" content="Laracasts" /> <link rel="manifest" href="/favicons/site.webmanifest" /> <meta name="msapplication-TileColor" content="#ffffff"> <meta name="theme-color" content="#182a41"> <link rel="alternate" type="application/atom+xml" title="Laracasts" href="/feed"> <link rel="preconnect" href="https://challenges.cloudflare.com"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500;600;700;800&family=Kanit:wght@500;700&display=swap" rel="stylesheet" > <script src="https://cdn.usefathom.com/script.js" data-spa="auto" data-site="QUIECCHD" defer></script> <script src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit" async defer></script> <link rel="preload" as="style" href="https://laracasts.com/build/assets/css/components-BI92MAo4.css" /><link rel="preload" as="style" href="https://laracasts.com/build/assets/css/charts-1G75bg4J.css" /><link rel="preload" as="style" href="https://laracasts.com/build/assets/css/app-Cln-Z5Al.css" /><link rel="modulepreload" href="https://laracasts.com/build/assets/js/app-v7bWaKId.js" /><link rel="modulepreload" href="https://laracasts.com/build/assets/js/components-D9zWMaG1.js" /><link rel="modulepreload" href="https://laracasts.com/build/assets/js/framework-UlXaWXXq.js" /><link rel="modulepreload" href="https://laracasts.com/build/assets/js/vendors-CD8iU_x1.js" /><link rel="modulepreload" href="https://laracasts.com/build/assets/js/utils-N5dDfE1i.js" /><link rel="modulepreload" href="https://laracasts.com/build/assets/js/charts-C7f2XTzA.js" /><link rel="stylesheet" href="https://laracasts.com/build/assets/css/components-BI92MAo4.css" data-navigate-track="reload" /><link rel="stylesheet" href="https://laracasts.com/build/assets/css/charts-1G75bg4J.css" data-navigate-track="reload" /><link rel="stylesheet" href="https://laracasts.com/build/assets/css/app-Cln-Z5Al.css" data-navigate-track="reload" /><script type="module" src="https://laracasts.com/build/assets/js/app-v7bWaKId.js" data-navigate-track="reload"></script> <script> window.addEventListener('load', () => window.setTimeout(() => { const makeLink = (asset) => { const link = document.createElement('link') Object.keys(asset).forEach((attribute) => { link.setAttribute(attribute, asset[attribute]) }) return link } const loadNext = (assets, count) => window.setTimeout(() => { if (count > assets.length) { count = assets.length if (count === 0) { return } } const fragment = new DocumentFragment while (count > 0) { const link = makeLink(assets.shift()) fragment.append(link) count-- if (assets.length) { link.onload = () => loadNext(assets, 1) link.onerror = () => loadNext(assets, 1) } } document.head.append(fragment) }) loadNext(JSON.parse('[{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ValidCheckbox-JULP_nmm.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/editor-C8_hr02Z.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ReportedUsers-i45UzEAF.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Layout-ieTzoIDE.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022style\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/css\\\/Layout-jxeDgoB6.css\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SettingsLayout-C-UTnCpl.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/BaseLayout-wmimShpF.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022style\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/css\\\/BaseLayout-efOgRX7h.css\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Modals-CTy6F11f.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/FormButton-B2auyso_.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-BW9VywYV.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022style\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/css\\\/Index-CGWNJQvs.css\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-Cy2L35mX.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-yUoaRE2I.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-C0OOv6-9.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-CrDJaR8s.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-o3H8TdCZ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/EpisodeDisallowedCard-7GdkR4cg.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LessonComment-DA9m-sFy.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ReportSpamButton-r6WlZSuS.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/useClipboard-C56RudtE.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LessonComments-aeEMuMyk.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ReplyModal-DQRKSTBe.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ConvertsMarkdown-DYvu9vzu.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-ZxyokcVv.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Discussion.vue_vue_type_script_setup_true_lang-zP-UilHY.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoDescriptionCard.vue_vue_type_script_setup_true_lang-B9HKK3pY.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoCardStats.vue_vue_type_script_setup_true_lang-U6ffIW4k.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoCardButtons.vue_vue_type_script_setup_true_lang-DM5m3CoH.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoCardPreviousButton.vue_vue_type_script_setup_true_lang-Dy8IJg0y.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoCardNextButton.vue_vue_type_script_setup_true_lang-MbQkhklx.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoCardButtons-BsofiLuV.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoCardNextButton-CqSM9K45.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoCardPreviousButton-L_FrKIfs.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoCardStats-Crogihkl.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoDescriptionCard-Bjq3WVdm.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_AdCard-CvQdIZgb.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Discussion-CtG2LZZ6.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_EpisodeListHeader-CcjrHP6w.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Panel-CH3ZMc-S.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Requirement-CvfXkPFc.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_VideoCard-BMaqQ2hb.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Error-B9iyJQPw.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022style\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/css\\\/Error-BdefgJFN.css\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-DrtEWxEZ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ConversationListCarbonAd-CaPuyKnC.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022style\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/css\\\/ConversationListCarbonAd-DKU-bAaM.css\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ConversationListRecommendedSeries-DCmSgMu7.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ConversationMetrics-D6J3zfR_.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ConversationMetrics.vue_vue_type_script_setup_true_lang-mxPoTgPR.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ConversationStats-zTeWnENB.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022style\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/css\\\/ConversationStats-BUgV9SGJ.css\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-Dmf06nlz.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/RandomPromotionCard.vue_vue_type_script_setup_true_lang-DiiYFQeO.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PromotionCardLink.vue_vue_type_script_setup_true_lang-DT6FdqgO.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ConversationListPromotionCard-Uy5PIJj3.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/GiftCertificateCard-CVs0iCJC.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PromotionCard-BqGufUV-.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PromotionCardArrow-C-9WrnXU.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PromotionCardDescription-p0pAhmjW.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PromotionCardHeading-DntSmjfL.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PromotionCardLink-OxKpARLW.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/RandomPromotionCard-CH-5Iyh5.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ShopCard-WiSpC_Um.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SignupCard-DT5JizRM.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-BIGl0XH7.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_ConversationListItem-Hu9NqpaR.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_ConversationsList-whErnU2g.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Admirers-BdH_UyFm.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Following-DBbixQAJ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-BiDn6jrY.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Layout-Djd5AY3S.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ForumLayout-D2saOdMr.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-DwqVN4m4.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LeaderboardCardHeader.vue_vue_type_script_setup_true_lang-DyNWST-R.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LeaderboardCardStat.vue_vue_type_script_setup_true_lang-DDBZbkST.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LeaderboardCardTableRow.vue_vue_type_script_setup_true_lang-Dn8BnVmQ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LeaderboardCardHeader-BWnZl7-V.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LeaderboardCardLinks-DkHE24Ka.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LeaderboardCardStat-DqGvY9So.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LeaderboardCardTableRow-pqOhrUlw.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_LeaderboardCard-DivB3uup.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_LeaderboardSection-BardXSq8.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Friends-CJM7PtQ3.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/CompletePurchase-BahIngcR.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Date-C0WBNgeE.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-CmoDNtI5.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/MobileProgressTracker-B7dit-cU.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PlanCard-Dujvbpvp.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ProgressBar-BcewSf6C.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ProgressTracker-BYmo5Mq9.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Redeem-Dsw3_2zN.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ReviewCard-CPGSb_JO.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-DBaZMSez.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Step-BF7jqmE4.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Home-CjMKf8dw.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeExams.vue_vue_type_script_setup_true_lang-o0Pa0m0g.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeBannerInstructors.vue_vue_type_script_setup_true_lang-BVK86yA_.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeBanner-CWs6YCmS.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeBannerBackground-BjFu9C31.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeBannerInstructors-CRW2Xkb4.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeBannerLinks-BtRjMqEs.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeBannerVideo-BGe7_RFa.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeCreatorSeries-DfN74Xze.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeExams-DX2yWwtn.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeFeaturedSeries-uaxRo3pJ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeInstructors-DQUGfKbC.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022style\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/css\\\/_HomeInstructors-DZjyO6UA.css\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeSampleVideo-D5PISol5.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeTestimonials-DdUnDdHG.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeTopics-DnbO9qZP.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-Dg8D1HKX.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LibrarySection-Dg71q75w.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-bqS1kHd4.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-CVeDCrYK.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-DlGGVluM.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PodcastEpisodeCard-DWO8k-cv.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PodcastNumber-JzywznHq.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-BzxiKxry.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-CxvtRiWq.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-R2AXF1dt.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Vector-wEZCjRhe.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/AuthorCard-DUmfGExA.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-Dujf8vT5.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesCreatorSeriesDetails-BvwRKv94.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesDetails-CWXdcp_Y.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesHeader-DuFveXqo.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesHeader.vue_vue_type_script_setup_true_lang-BY5MwW9C.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesHeaderMeta.vue_vue_type_script_setup_true_lang-BCLufIBa.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesHeaderMeta-Bso0n8nI.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesPathFlow-TZT4cy9H.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesTranslations-CfyLFAR6.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesTranslations.vue_vue_type_script_setup_true_lang-BySePmZs.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-sAbBL4az.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index--QYnX0WD.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Photo-CSHaAnjq.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Preferences-CvYexn4i.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_UpdateAccountPreferences.vue_vue_type_script_setup_true_lang-jMdX83aQ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Profile-CrP3pIW8.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_DeleteAccount-CQ140eFd.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_LeaveTeam-DrzBI50B.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_UpdateAccountDetails-Dmo-B27C.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_UpdateAccountPreferences-CPBXRqVY.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_UpdateProfileDetails-BfgMpQGO.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_UpdateProfilePhoto-CEtm9tM5.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Goodbye-CkYnRzwM.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022style\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/css\\\/Goodbye-BZCJOBds.css\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Banner-u7SjdvYW.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-B8zxxxLS.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-D7aepomW.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_ManageNotifications-B735a_L-.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-BLi17iH-.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Contact-DNsawiMF.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Accordion-Da2DOvQb.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022style\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/css\\\/Contact-C4nk-o_j.css\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Faq-CSO-JYhq.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/BannerSection-DDPAAxr9.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/BannerSection.vue_vue_type_script_setup_true_lang-Cm-IA5T1.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-CJ1fxsZ1.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/InstructorsSection.vue_vue_type_script_setup_true_lang-Bq7P9ymj.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/InstructorsSection-GWITDcZ2.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Privacy-xLllNLqK.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ReferralTerms-CKrgw2h4.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Terms-gIeWSFr_.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Instructor-Bzlo85oL.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Partnerships--oaH9kVO.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/UI-QZhgeVnM.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Banner-DnqcfUvg.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Faq-DdwoxvM9.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_FaqItem-3frcs2uZ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022style\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/css\\\/_FaqItem-B5GPntMo.css\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-D6Zpj6BN.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Create-CRfQbXej.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Banner-CzDHGKuC.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-BkYOYJZN.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Point-Bchg0GhQ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Points-zkVBNgzN.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-DWAL7yP1.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/TeamStore-BbfIlG7Y.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_ActivityFeed-BRdsjsj0.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_AddDeveloperModal-d9E82U4w.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_AssignmentInputCreate-VTFHeqh3.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_AssignmentMemberSelect-BsuSSKgj.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_AssignmentsCard-CAsM6GLN.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_AssignmentsList-C6df6pKB.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_EditableTeamName-Dkv9Xj4q.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Leaderboard-C6EYgDmT.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_MemberCard-nkBfaNxw.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_StatsAndMembers-D4o_qx_F.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Banner-Bwd0Yeg-.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-B6aYUilU.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/WeekInReview-DL6K-pM0.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_FunStats-z1916TLF.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_NewContent-DcNa_ZDO.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_NewPodcast-D84AjxDl.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_TrendingConversations-DvxeZSHC.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Recaptcha-CXNUigO0.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_EpisodeListHeader.vue_vue_type_script_setup_true_lang-BhwyNpA3.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/EpisodeStore-DHwJ7jTn.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_EpisodeList-LcwoXxvO.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/EpisodeChapters-PEqXoFzW.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/EpisodeListChapter-XNNyw-9A.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/EpisodeListItem-MK07x1Dv.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022style\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/css\\\/EpisodeListItem-D9GewDIr.css\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/CondensedEpisodeListItem-D1B8ClaP.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022style\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/css\\\/CondensedEpisodeListItem-DSHST0MT.css\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_EpisodeListSeriesCard-OwlcGz7z.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022}]'), 3) })) </script></head> <body class="leading-normal" style="min-height: 100vh; min-height: -webkit-fill-available;"> <div id="app" data-page="{"component":"Series\/Show","props":{"errors":{},"forum":{"leaders":[{"username":"Snapey","avatar":"\/\/unavatar.io\/github\/snapey","points":"3,720,585","link":"https:\/\/laracasts.com\/@Snapey"},{"username":"tykus","avatar":"\/\/unavatar.io\/github\/tykus","points":"2,885,500","link":"https:\/\/laracasts.com\/@tykus"},{"username":"Sinnbeck","avatar":"\/\/unavatar.io\/github\/Sinnbeck","points":"2,850,720","link":"https:\/\/laracasts.com\/@Sinnbeck"},{"username":"bobbybouwmann","avatar":"https:\/\/laracasts.s3.us-east-1.amazonaws.com\/avatars\/bobby-bouwmann.jpg","points":"2,175,945","link":"https:\/\/laracasts.com\/@bobbybouwmann"},{"username":"martinbean","avatar":"\/\/unavatar.io\/github\/martinbean","points":"1,621,425","link":"https:\/\/laracasts.com\/@martinbean"},{"username":"MichalOravec","avatar":"\/\/unavatar.io\/github\/michaloravec","points":"1,510,440","link":"https:\/\/laracasts.com\/@MichalOravec"},{"username":"Nakov","avatar":"\/\/unavatar.io\/github\/nakov0301","points":"1,379,850","link":"https:\/\/laracasts.com\/@Nakov"},{"username":"jlrdw","avatar":"https:\/\/laracasts.nyc3.digitaloceanspaces.com\/members\/avatars\/21880.png?v=806","points":"1,377,590","link":"https:\/\/laracasts.com\/@jlrdw"},{"username":"tisuchi","avatar":"https:\/\/laracasts.nyc3.digitaloceanspaces.com\/members\/avatars\/13270.jpg?v=379","points":"1,251,465","link":"https:\/\/laracasts.com\/@tisuchi"},{"username":"Tray2","avatar":"\/\/unavatar.io\/github\/Tray2","points":"1,226,500","link":"https:\/\/laracasts.com\/@Tray2"}]},"auth":{"signedIn":false,"user":null},"bookmarks":[],"flash":{"success":null,"error":null,"overlay":null},"app":{"expired":false,"env":"production","status":{"newBits":false,"newPodcasts":false,"lastUpdated":"4 days ago"}},"announcement":{"message":"April Sale! All subscriptions are 30% off this week only.","link":"\/join?coupon=SFQNOI6t0xEds91QhGzDwNGhjbS6DW","shouldDisplay":true,"sale":{"coupon":"SFQNOI6t0xEds91QhGzDwNGhjbS6DW"}},"recaptchaKey":"0x4AAAAAAACQcLxtW0lUz22W","series":{"id":22,"title":"Envoyer","body":"<div><a href=\"http:\/\/envoyer.io\">Envoyer<\/a> deploys your PHP applications with zero downtime. Just push your code, and let Envoyer deliver your application to one or many servers without interrupting a single customer. In this series, we'll discuss each feature of Envoyer, demonstrating how to use them with a sample project.<\/div>","translations":null,"path":"\/series\/envoyer","strippedBody":"Envoyer deploys your PHP applications with zero downtime. Just push your code, and let Envoyer deliver your application to one or many servers without interrupting a single customer. In this series, we'll discuss each feature of Envoyer, demonstrating how to use them with a sample project.","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/envoyer.png","large_thumbnail":"https:\/\/laracasts.s3.amazonaws.com\/series\/thumbnails\/social-cards\/envoyer.png?v=2","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/envoyer.svg","slug":"envoyer","episodeCount":10,"difficultyLevel":"Intermediate","customUrl":null,"version":null,"complete":1,"archived":0,"replacedBy":null,"runTime":"36m","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"author":{"id":335,"username":"TaylorOtwell","avatar":"https:\/\/laracasts.s3.amazonaws.com\/avatars\/taylorotwell.jpg","experience":{"points":"22,550","level":5,"elite":0},"reported":null,"staff":false,"subscribed":true,"ai":false,"elite":0,"leaderboardPosition":null,"profile":{"full_name":"Taylor Otwell","bio":"I founded and created Laravel for the happiness of all sentient beings, especially developers. Space pilgrim. ","twitter":"taylorotwell","github":"taylorotwell","website":"https:\/\/laravel.com","employment":"Laravel","job_title":"Owner","location":"","flag":"us","available_for_hire":0},"dateSegments":{"created_diff":"11 years ago"},"settings":{"show_profile":true},"links":{"profile":"https:\/\/laracasts.com\/@TaylorOtwell"}},"hasChapters":false,"chapters":[{"heading":null,"number":1,"count":10,"completed":false,"episodes":[{"id":461,"chapter":1,"title":"The First Deployment","body":"<p>Welcome. In this video, I'll introduce you to Envoyer; a brand new way to deploy PHP and Laravel applications with zero downtime.<\/p>","excerpt":"Welcome. In this video, I'll introduce you to Envoyer; a brand new way to deploy PHP and...","source_code":null,"position":1,"dateSegments":{"published":"March 16, 2015","publishedAlt":"Mar 16th, 2015","publishedDiff":"10 years ago","whenAvailableForHumans":"10 years"},"length":332,"lengthForHumans":"5m 32s","largeThumbnail":"https:\/\/laracasts.s3.amazonaws.com\/videos\/thumbnails\/youtube\/envoyer-1.png","isNew":false,"free":true,"isScheduled":false,"path":"\/episodes\/461","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"series":{"title":"Envoyer","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/envoyer.png","path":"\/series\/envoyer"},"exam":null,"viewingStatus":{"scheduled":false,"watchable":true,"requiresReactivation":null,"requiresBillingDetails":false,"isCompleted":null},"vimeoId":"122257278","links":{"bookmark":"\/episodes\/461\/bookmark"}},{"id":462,"chapter":1,"title":"Server Directory Structure","body":"<p>In this video, we'll talk a bit more about what Envoyer does behind the scenes, when we deploy our applications.<\/p>","excerpt":"In this video, we'll talk a bit more about what Envoyer does behind the scenes, when we...","source_code":null,"position":2,"dateSegments":{"published":"March 16, 2015","publishedAlt":"Mar 16th, 2015","publishedDiff":"10 years ago","whenAvailableForHumans":"10 years"},"length":181,"lengthForHumans":"3m 01s","largeThumbnail":"https:\/\/laracasts.s3.amazonaws.com\/videos\/thumbnails\/youtube\/envoyer-2.png","isNew":false,"free":true,"isScheduled":false,"path":"\/episodes\/462","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"series":{"title":"Envoyer","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/envoyer.png","path":"\/series\/envoyer"},"exam":null,"viewingStatus":{"scheduled":false,"watchable":true,"requiresReactivation":null,"requiresBillingDetails":false,"isCompleted":null},"vimeoId":"122257376","links":{"bookmark":"\/episodes\/462\/bookmark"}},{"id":463,"chapter":1,"title":"Health Checks and Rollbacks","body":"<p>Let's discuss deployment health and rollbacks with Envoyer in this episode.<\/p>","excerpt":"Let's discuss deployment health and rollbacks with Envoyer in this episode.","source_code":null,"position":3,"dateSegments":{"published":"March 16, 2015","publishedAlt":"Mar 16th, 2015","publishedDiff":"10 years ago","whenAvailableForHumans":"10 years"},"length":140,"lengthForHumans":"2m 20s","largeThumbnail":"https:\/\/laracasts.s3.amazonaws.com\/videos\/thumbnails\/youtube\/envoyer-3.png","isNew":false,"free":true,"isScheduled":false,"path":"\/episodes\/463","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"series":{"title":"Envoyer","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/envoyer.png","path":"\/series\/envoyer"},"exam":null,"viewingStatus":{"scheduled":false,"watchable":true,"requiresReactivation":null,"requiresBillingDetails":false,"isCompleted":null},"vimeoId":"122257377","links":{"bookmark":"\/episodes\/463\/bookmark"}},{"id":464,"chapter":1,"title":"Deployment Hooks","body":"<p>Now, let's talk about deployment hooks in Envoyer. You'll learn about the default hooks, and even how to add new custom ones.<\/p>","excerpt":"Now, let's talk about deployment hooks in Envoyer. You'll learn about the default hooks, and even how...","source_code":null,"position":4,"dateSegments":{"published":"March 16, 2015","publishedAlt":"Mar 16th, 2015","publishedDiff":"10 years ago","whenAvailableForHumans":"10 years"},"length":250,"lengthForHumans":"4m 10s","largeThumbnail":"https:\/\/laracasts.s3.amazonaws.com\/videos\/thumbnails\/youtube\/envoyer-4.png","isNew":false,"free":true,"isScheduled":false,"path":"\/episodes\/464","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"series":{"title":"Envoyer","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/envoyer.png","path":"\/series\/envoyer"},"exam":null,"viewingStatus":{"scheduled":false,"watchable":true,"requiresReactivation":null,"requiresBillingDetails":false,"isCompleted":null},"vimeoId":"122257378","links":{"bookmark":"\/episodes\/464\/bookmark"}},{"id":465,"chapter":1,"title":"When Deployment Scripts Break","body":"<p>What happens when something goes wrong with your server deployments? Well, as you'll learn, Envoyer will cancel the deployment, and your application will remain unaffected.<\/p>\n<\/p>","excerpt":"What happens when something goes wrong with your server deployments? Well, as you'll learn, Envoyer will cancel...","source_code":null,"position":5,"dateSegments":{"published":"March 16, 2015","publishedAlt":"Mar 16th, 2015","publishedDiff":"10 years ago","whenAvailableForHumans":"10 years"},"length":181,"lengthForHumans":"3m 01s","largeThumbnail":"https:\/\/laracasts.s3.amazonaws.com\/videos\/thumbnails\/youtube\/envoyer-5.png","isNew":false,"free":true,"isScheduled":false,"path":"\/episodes\/465","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"series":{"title":"Envoyer","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/envoyer.png","path":"\/series\/envoyer"},"exam":null,"viewingStatus":{"scheduled":false,"watchable":true,"requiresReactivation":null,"requiresBillingDetails":false,"isCompleted":null},"vimeoId":"122257381","links":{"bookmark":"\/episodes\/465\/bookmark"}},{"id":466,"chapter":1,"title":"Multi-Server Deployment","body":"<p>In this video, let's discuss Envoyer's multi-server deployment capabilities.<\/p>","excerpt":"In this video, let's discuss Envoyer's multi-server deployment capabilities.","source_code":null,"position":6,"dateSegments":{"published":"March 16, 2015","publishedAlt":"Mar 16th, 2015","publishedDiff":"10 years ago","whenAvailableForHumans":"10 years"},"length":252,"lengthForHumans":"4m 12s","largeThumbnail":"https:\/\/laracasts.s3.amazonaws.com\/videos\/thumbnails\/youtube\/envoyer-6.png","isNew":false,"free":true,"isScheduled":false,"path":"\/episodes\/466","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"series":{"title":"Envoyer","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/envoyer.png","path":"\/series\/envoyer"},"exam":null,"viewingStatus":{"scheduled":false,"watchable":true,"requiresReactivation":null,"requiresBillingDetails":false,"isCompleted":null},"vimeoId":"122257383","links":{"bookmark":"\/episodes\/466\/bookmark"}},{"id":467,"chapter":1,"title":"Notifications","body":"<p>In this lesson, we'll review Envoyer's notification capabilities, such as the ability to update Slack upon deployment.<\/p>","excerpt":"In this lesson, we'll review Envoyer's notification capabilities, such as the ability to update Slack upon deployment.","source_code":null,"position":7,"dateSegments":{"published":"March 16, 2015","publishedAlt":"Mar 16th, 2015","publishedDiff":"10 years ago","whenAvailableForHumans":"10 years"},"length":124,"lengthForHumans":"2m 04s","largeThumbnail":"https:\/\/laracasts.s3.amazonaws.com\/videos\/thumbnails\/youtube\/envoyer-7.png","isNew":false,"free":true,"isScheduled":false,"path":"\/episodes\/467","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"series":{"title":"Envoyer","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/envoyer.png","path":"\/series\/envoyer"},"exam":null,"viewingStatus":{"scheduled":false,"watchable":true,"requiresReactivation":null,"requiresBillingDetails":false,"isCompleted":null},"vimeoId":"122257574","links":{"bookmark":"\/episodes\/467\/bookmark"}},{"id":468,"chapter":1,"title":"Heartbeats","body":"<p>Heartbeats offer a great way to monitor cron jobs for your applications. For example, they can inform you if, for some reason, they've stopped running. Let me show you.<\/p>","excerpt":"Heartbeats offer a great way to monitor cron jobs for your applications. For example, they can inform...","source_code":null,"position":8,"dateSegments":{"published":"March 16, 2015","publishedAlt":"Mar 16th, 2015","publishedDiff":"10 years ago","whenAvailableForHumans":"10 years"},"length":309,"lengthForHumans":"5m 09s","largeThumbnail":"https:\/\/laracasts.s3.amazonaws.com\/videos\/thumbnails\/youtube\/envoyer-8.png","isNew":false,"free":true,"isScheduled":false,"path":"\/episodes\/468","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"series":{"title":"Envoyer","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/envoyer.png","path":"\/series\/envoyer"},"exam":null,"viewingStatus":{"scheduled":false,"watchable":true,"requiresReactivation":null,"requiresBillingDetails":false,"isCompleted":null},"vimeoId":"122257576","links":{"bookmark":"\/episodes\/468\/bookmark"}},{"id":469,"chapter":1,"title":"Environment Management","body":"<p>Let's review environment management with Envoyer in this episode. If you have multiple servers, managing your environment file can prove to be somewhat cumbersome. Luckily, with Envoyer, the whole process is much simpler!<\/p>","excerpt":"Let's review environment management with Envoyer in this episode. If you have multiple servers, managing your environment...","source_code":null,"position":9,"dateSegments":{"published":"March 16, 2015","publishedAlt":"Mar 16th, 2015","publishedDiff":"10 years ago","whenAvailableForHumans":"10 years"},"length":252,"lengthForHumans":"4m 12s","largeThumbnail":"https:\/\/laracasts.s3.amazonaws.com\/videos\/thumbnails\/youtube\/envoyer-9.png","isNew":false,"free":true,"isScheduled":false,"path":"\/episodes\/469","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"series":{"title":"Envoyer","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/envoyer.png","path":"\/series\/envoyer"},"exam":null,"viewingStatus":{"scheduled":false,"watchable":true,"requiresReactivation":null,"requiresBillingDetails":false,"isCompleted":null},"vimeoId":"122257577","links":{"bookmark":"\/episodes\/469\/bookmark"}},{"id":470,"chapter":1,"title":"Collaborators","body":"<p>Collaborators are not required to have paid accounts, in order to collaborate with a particular project owner. In this lesson, I'll give you the specifics.<\/p>","excerpt":"Collaborators are not required to have paid accounts, in order to collaborate with a particular project owner....","source_code":null,"position":10,"dateSegments":{"published":"March 16, 2015","publishedAlt":"Mar 16th, 2015","publishedDiff":"10 years ago","whenAvailableForHumans":"10 years"},"length":142,"lengthForHumans":"2m 22s","largeThumbnail":"https:\/\/laracasts.s3.amazonaws.com\/videos\/thumbnails\/youtube\/envoyer-10.png","isNew":false,"free":true,"isScheduled":false,"path":"\/episodes\/470","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"series":{"title":"Envoyer","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/envoyer.png","path":"\/series\/envoyer"},"exam":null,"viewingStatus":{"scheduled":false,"watchable":true,"requiresReactivation":null,"requiresBillingDetails":false,"isCompleted":null},"vimeoId":"122257575","links":{"bookmark":"\/episodes\/470\/bookmark"}}]}],"topics":[{"name":"Laravel","episode_count":1034,"series_count":77,"path":"https:\/\/laracasts.com\/topics\/laravel","thumbnail":"laravel-logo.svg"},{"name":"Envoyer","episode_count":10,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/envoyer","thumbnail":"envoyer-logo.svg"}],"isLarabit":0,"isCreatorSeries":0,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"lastUpdated":"Nov 11, 2015","links":{"continue":"\/series\/envoyer\/episodes\/1","bookmark":"\/series\/envoyer\/bookmark"},"og":{"card":"summary_large_image"}},"latestEpisode":{"id":470,"chapter":1,"title":"Collaborators","body":"<p>Collaborators are not required to have paid accounts, in order to collaborate with a particular project owner. In this lesson, I'll give you the specifics.<\/p>","excerpt":"Collaborators are not required to have paid accounts, in order to collaborate with a particular project owner....","source_code":null,"position":10,"dateSegments":{"published":"March 16, 2015","publishedAlt":"Mar 16th, 2015","publishedDiff":"10 years ago","whenAvailableForHumans":"10 years"},"length":142,"lengthForHumans":"2m 22s","largeThumbnail":"https:\/\/laracasts.s3.amazonaws.com\/videos\/thumbnails\/youtube\/envoyer-10.png","isNew":false,"free":true,"isScheduled":false,"path":"\/episodes\/470","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"series":{"title":"Envoyer","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/envoyer.png","path":"\/series\/envoyer"},"exam":null,"viewingStatus":{"scheduled":false,"watchable":true,"requiresReactivation":null,"requiresBillingDetails":false,"isCompleted":null},"vimeoId":"122257575","links":{"bookmark":"\/episodes\/470\/bookmark"}},"progress":{"lastEpisodePositionCompleted":null},"shareMessage":"I%27m+watching+%22Envoyer%22+at+Laracasts%21+https%3A%2F%2Flaracasts.com%2Fseries%2Fenvoyer","previousUrl":"https:\/\/laracasts.com\/series","path":null},"url":"\/series\/envoyer","version":"53fb31a06755ad60bfa03f37ab338951","clearHistory":false,"encryptHistory":false}"></div> </body> </html>