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-7j8-4jcV.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-BDbdiD7N.css" /><link rel="modulepreload" href="https://laracasts.com/build/assets/js/app-C7Jtn5ew.js" /><link rel="modulepreload" href="https://laracasts.com/build/assets/js/components-oamz6p6P.js" /><link rel="modulepreload" href="https://laracasts.com/build/assets/js/framework-CGE8MX8S.js" /><link rel="modulepreload" href="https://laracasts.com/build/assets/js/vendors-CURb7DAX.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-7j8-4jcV.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-BDbdiD7N.css" data-navigate-track="reload" /><script type="module" src="https://laracasts.com/build/assets/js/app-C7Jtn5ew.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-bYFePpoz.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/editor-7pJbjYv1.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ReportedUsers-C6JlE3Xn.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Layout-DePl_mAQ.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-pRCngb62.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/BaseLayout-CZqeXuOK.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-Dz3HWFjj.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/FormButton-BCVt72F6.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-CqRn4BdF.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-Bv3rr80n.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-SbCz6tmG.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-D_iD4_H4.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-DTRiV-P5.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-0qOzC9XE.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/EpisodeDisallowedCard-Y4QHFXoD.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LessonComment-DpxZ0J8c.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ReportSpamButton-Cj_Uo6T8.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/useClipboard-CpAlihZi.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LessonComments-Db9Rel6M.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ReplyModal-DK3eUqov.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ConvertsMarkdown-CnrQth4R.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-DYjRNfmX.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-Ep2yS7v5.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-BYkDFiGX.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-wzIiqq6o.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-DOYJsitC.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-B5Peh2XA.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-BN8XNfk2.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoCardButtons-BrKTjL9v.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoCardNextButton-DRlB6h6v.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoCardPreviousButton-CpXY4Soe.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoCardStats-BCuvW7WB.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/VideoDescriptionCard-DEuBCa6J.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_AdCard-B6lPiJpr.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Discussion-BC6NB-U3.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_EpisodeListHeader-cpAcKVCU.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Panel-BF4e_5cR.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Requirement-cYcP_x7K.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_VideoCard-DM4qEzRA.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Error-zKlMsIOw.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-BSoNGH0d.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ConversationListCarbonAd-BA0tiR9f.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-BGpbyCeg.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ConversationMetrics-_SbULsOh.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--m6oOUJt.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ConversationStats-CU_ftUcy.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-IqCkMtJC.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-CRu7HX8N.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-B_pYOHBR.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ConversationListPromotionCard-c12p_nKB.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/GiftCertificateCard-DTZCSyeO.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PromotionCard-DbyagjdQ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PromotionCardArrow-CZVuR0G-.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PromotionCardDescription-C8NFhId_.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PromotionCardHeading-rok0q6vz.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PromotionCardLink-Bp0Bk5XE.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/RandomPromotionCard-BpgI6Omn.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ShopCard-CRVFOVqg.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SignupCard-Dz2g2OLI.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-R5ChvuAs.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_ConversationListItem-BBMln5Cx.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_ConversationsList-CUMh1xWy.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Admirers-DGpgVLcG.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Following-ykYnRYYc.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-DsLo_kxg.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Layout-Bzv5b7YV.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ForumLayout-DY8yaXim.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-Lb1DNpf3.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-DSSig6QP.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-CeckqclV.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-PuHgM1fU.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LeaderboardCardHeader-xUu_Et6x.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LeaderboardCardLinks-YsJ6Ne3y.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LeaderboardCardStat-CTfvbGMr.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LeaderboardCardTableRow-wrRNCC_p.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_LeaderboardCard-aLAPRbfs.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_LeaderboardSection-CdmySQMj.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Friends-CzWxL3Zf.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/CompletePurchase-gT9vzR34.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Date-CSIuNOQg.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-C11WTdW9.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/MobileProgressTracker-CUrJlJ67.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PlanCard-D7D72dmy.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ProgressBar-VVBucoc9.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ProgressTracker-Ct2_iaDS.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Redeem-ddna5D2m.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ReviewCard-BAMONXwv.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-C6gWK8fl.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Step-CjVNWZxj.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Home-C5vVtlOk.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-COpX411U.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-BtvUPGat.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeBanner-C8NY6RZm.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeBannerBackground-BUDPYGnC.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeBannerInstructors-ehfnBvre.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeBannerLinks-B3CGSFFW.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeBannerVideo-DSr2beyL.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeCreatorSeries-BKWzFx1v.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeExams-Cl2oStUX.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeFeaturedSeries-CsoKNurF.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeInstructors-BH-F31Na.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-B7_WrDHS.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeTestimonials-1TBpru4F.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_HomeTopics-CLwW3Mk7.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-C0USAr_f.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/LibrarySection-wOpJeGs2.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-CfPi-aVc.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-DIN708b0.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-CMx7R8JU.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PodcastEpisodeCard-Cj7ZTFc7.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/PodcastNumber-CvXZfE04.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-Bx6Arsa9.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-UPIT4n67.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-DwluUwJp.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Vector-Dw-f5cvH.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/AuthorCard-cLK0hg-r.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-BSueu1IU.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesCreatorSeriesDetails-kylmanZ2.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesDetails-a3wpK6ci.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesHeader-DyeGTGtg.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-pXViyRUV.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-BhAKWb_E.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesHeaderMeta-CVRbrbN9.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesPathFlow-DIodYJjM.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/SeriesTranslations-B6RtZ2wi.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-Qo29QWBM.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-D48QPzez.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-BBTNsmNd.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Photo-B7gugws4.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Preferences-DADdRdbi.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-HLopr0BQ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Profile-DtGzXnkZ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_DeleteAccount-DAgY7lwf.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_LeaveTeam-C8e12BoO.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_UpdateAccountDetails-B8gHewds.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_UpdateAccountPreferences-DITryqJ_.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_UpdateProfileDetails-BAQG9VPD.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_UpdateProfilePhoto-D288xB0A.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Goodbye-BM3euw0k.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-B1TA2ivt.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-CCmsIkE4.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-CS8_nCGg.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_ManageNotifications-BNJmFIzl.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-BN_qYZqy.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Contact-w3obUUvp.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Accordion-BkJmGYVT.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-B8HaFR-Q.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/BannerSection-JN2JRsBM.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-BZF-4qqt.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-DEZ_c6Ah.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-BYuDlPuZ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/InstructorsSection-BLAUlfOp.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Privacy-C2al1w-v.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/ReferralTerms-DuJ-0nfP.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Terms-Dj0tYxPA.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Instructor-BF2-0EJh.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Partnerships-D476v2LO.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/UI-By8xNYSE.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Banner-DIWm9Ym7.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Faq-DD3kd5i_.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_FaqItem-kJcQnTBP.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-BrpkJOwR.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Create-ByIMaDMN.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Banner-BVn8i3Ak.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Index-CjAIFpHw.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Point-DCKU90vV.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Points-C0bOvChF.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-B4yIWK_x.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/TeamStore-Dz-Ri0PU.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_ActivityFeed-Kzd1CtWY.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_AddDeveloperModal-DLG82Y1X.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_AssignmentInputCreate-D6QY4UVb.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_AssignmentMemberSelect-C-V7jLK-.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_AssignmentsCard-tuyU2mZs.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_AssignmentsList-Cvfy5ohf.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_EditableTeamName-2YsDha8c.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_Leaderboard-yQelBeNV.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_MemberCard-DtVNF_9_.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_StatsAndMembers-Si5NfJn4.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Banner-DwK8C0bc.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Show-C3bTofSV.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/WeekInReview-CNDZAwxg.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_FunStats-CdjcMzXg.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_NewContent-oOshCRxT.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_NewPodcast-d3xnB9Jf.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_TrendingConversations-C2_fioID.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/Recaptcha-D1wFPwPY.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-DToIXAnS.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/EpisodeStore-DTOprfdY.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/_EpisodeList-DZLExHXZ.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/EpisodeChapters-CQnew-2A.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/EpisodeListChapter-Bezw04ql.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022href\u0022:\u0022https:\\\/\\\/laracasts.com\\\/build\\\/assets\\\/js\\\/EpisodeListItem-Raig5pOU.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-CJCpnvc2.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-BMOgj2eE.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":"Home\/Home","props":{"errors":{},"forum":{"leaders":[{"username":"Snapey","avatar":"\/\/unavatar.io\/github\/snapey","points":"3,717,785","link":"https:\/\/laracasts.com\/@Snapey"},{"username":"tykus","avatar":"\/\/unavatar.io\/github\/tykus","points":"2,883,800","link":"https:\/\/laracasts.com\/@tykus"},{"username":"Sinnbeck","avatar":"\/\/unavatar.io\/github\/Sinnbeck","points":"2,850,220","link":"https:\/\/laracasts.com\/@Sinnbeck"},{"username":"bobbybouwmann","avatar":"https:\/\/laracasts.s3.us-east-1.amazonaws.com\/avatars\/bobby-bouwmann.jpg","points":"2,175,845","link":"https:\/\/laracasts.com\/@bobbybouwmann"},{"username":"martinbean","avatar":"\/\/unavatar.io\/github\/martinbean","points":"1,618,825","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,375,190","link":"https:\/\/laracasts.com\/@jlrdw"},{"username":"tisuchi","avatar":"https:\/\/laracasts.nyc3.digitaloceanspaces.com\/members\/avatars\/13270.jpg?v=379","points":"1,251,365","link":"https:\/\/laracasts.com\/@tisuchi"},{"username":"Tray2","avatar":"\/\/unavatar.io\/github\/Tray2","points":"1,224,300","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":"0 seconds ago"}},"announcement":false,"recaptchaKey":"0x4AAAAAAACQcLxtW0lUz22W","taxonomies":[{"id":6,"name":"DevOps","slug":"devops","path":"https:\/\/laracasts.com\/browse\/devops","series_count":6,"episode_count":58},{"id":1,"name":"Frameworks","slug":"frameworks","path":"https:\/\/laracasts.com\/browse\/frameworks","series_count":63,"episode_count":800},{"id":3,"name":"Languages","slug":"languages","path":"https:\/\/laracasts.com\/browse\/languages","series_count":21,"episode_count":259},{"id":5,"name":"Techniques","slug":"techniques","path":"https:\/\/laracasts.com\/browse\/techniques","series_count":47,"episode_count":687},{"id":2,"name":"Testing","slug":"testing","path":"https:\/\/laracasts.com\/browse\/testing","series_count":10,"episode_count":120},{"id":4,"name":"Tooling","slug":"tooling","path":"https:\/\/laracasts.com\/browse\/tooling","series_count":36,"episode_count":431}],"featured":[{"id":237,"title":"React from Scratch","body":"<p>React from Scratch is a hands-on, beginner-friendly video series that takes you from an empty folder to a fully interactive React app \u2014 no prior React knowledge required. You'll learn about JSX, components, state management, controlled inputs, data fetching, and even TypeScript!<\/p><p>I hope you'll come to appreciate React for what it truly is: a flexible, powerful UI library \u2014 not a full-blown framework. I'll teach you where its boundaries lie, and how to scale beyond them.<\/p>\r\n","path":"\/series\/react-from-scratch","strippedBody":"React from Scratch is a hands-on, beginner-friendly video series that takes you from an empty folder to a fully interactive React app \u2014 no prior React knowledge required. You'll learn about JSX, components, state management, controlled inputs, data fetching, and even TypeScript!I hope you'll come to appreciate React for what it truly is: a flexible, powerful UI library \u2014 not a full-blown framework. I'll teach you where its boundaries lie, and how to scale beyond them.\r\n","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/react-from-scratch.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/react-from-scratch.svg","slug":"react-from-scratch","episodeCount":27,"difficultyLevel":"Beginner","complete":1,"runTime":"4h 10m","taxonomy":{"name":"Frameworks","path":"https:\/\/laracasts.com\/browse\/frameworks"},"author":{"id":80737,"avatar":"\/\/unavatar.io\/github\/simonswiss","username":"simonswiss","profile":{"full_name":"Simon Vrachliotis"}},"isCreatorSeries":0,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/react-from-scratch\/episodes\/1","bookmark":"\/series\/react-from-scratch\/bookmark"}},{"id":236,"title":"JavaScript Essentials for PHP Developers\r\n","body":"<p>Unlock the power of JavaScript with this tailored series designed for PHP developers looking to expand their skills. Learn key concepts, syntax, and practical applications to seamlessly transition from server-side to client-side coding.<\/p>\r\n","path":"\/series\/javascript-essentials-for-php-developers","strippedBody":"Unlock the power of JavaScript with this tailored series designed for PHP developers looking to expand their skills. Learn key concepts, syntax, and practical applications to seamlessly transition from server-side to client-side coding.\r\n","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/javascript-for-php-devs.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/javascript-for-php-devs.svg","slug":"javascript-essentials-for-php-developers","episodeCount":17,"difficultyLevel":"Beginner","complete":0,"runTime":"3h 3m","taxonomy":{"name":"Languages","path":"https:\/\/laracasts.com\/browse\/languages"},"author":{"id":24345,"avatar":"\/\/unavatar.io\/x\/jwmcpeak","username":"jwmcpeak","profile":{"full_name":"Jeremy McPeak"}},"isCreatorSeries":0,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/javascript-essentials-for-php-developers\/episodes\/1","bookmark":"\/series\/javascript-essentials-for-php-developers\/bookmark"}},{"id":234,"title":"The Definition Series","body":"<p>In this series, we'll do things just a little bit differently. Let's take a step back from our code editors and instead review some fundamental technology and software development terms. I'm willing to bet that there are certain bedrock terms that you somehow accidentally skipped over and never learned properly.<\/p><p>Let's fix that! Each episode below will focus on a single topic, condensed to the essentials, and animated to perfection for your enjoyment.<\/p>\r\n","path":"\/series\/the-definition-series","strippedBody":"In this series, we'll do things just a little bit differently. Let's take a step back from our code editors and instead review some fundamental technology and software development terms. I'm willing to bet that there are certain bedrock terms that you somehow accidentally skipped over and never learned properly.Let's fix that! Each episode below will focus on a single topic, condensed to the essentials, and animated to perfection for your enjoyment.\r\n","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/definition-series.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/definition-series.svg","slug":"the-definition-series","episodeCount":5,"difficultyLevel":"Beginner","complete":0,"runTime":"17m","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"author":{"id":24345,"avatar":"\/\/unavatar.io\/x\/jwmcpeak","username":"jwmcpeak","profile":{"full_name":"Jeremy McPeak"}},"isCreatorSeries":0,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/the-definition-series\/episodes\/1","bookmark":"\/series\/the-definition-series\/bookmark"}},{"id":228,"title":"Inertia 2 Unleashed","body":"<p><a href=\"https:\/\/inertiajs.com\/upgrade-guide\">Inertia 2<\/a> is now available, and it's packed with new features and improvements. In this series, one topic at a time, we'll take a look at each of these new features. You'll learn about polling, infinite scrolling, deferred props, and more!<\/p>\r\n","path":"\/series\/inertia-2-unleashed","strippedBody":"Inertia 2 is now available, and it's packed with new features and improvements. In this series, one topic at a time, we'll take a look at each of these new features. You'll learn about polling, infinite scrolling, deferred props, and more!\r\n","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/inertia-2-unleashed.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/inertia-2-unleashed.svg","slug":"inertia-2-unleashed","episodeCount":5,"difficultyLevel":"Intermediate","complete":1,"runTime":"1h 7m","taxonomy":{"name":"Frameworks","path":"https:\/\/laracasts.com\/browse\/frameworks"},"author":{"id":1770,"avatar":"https:\/\/laracasts.nyc3.digitaloceanspaces.com\/members\/avatars\/1770.jpg?v=943","username":"JeffreyWay","profile":{"full_name":"Jeffrey Way"}},"isCreatorSeries":0,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/inertia-2-unleashed\/episodes\/1","bookmark":"\/series\/inertia-2-unleashed\/bookmark"}},{"id":227,"title":"Mastering Permissions in Laravel","body":"<p>User authorization is one of the most complex systems to build in your application, but also one of the most essential. From setting up role-based access and custom policies to exploring advanced permissions - and group-based authorization - you\u2019ll gain the skills needed to build secure, scalable applications. Join me as I guide you through everything required to incorporate a robust user authorization system into your application.<\/p>\r\n","path":"\/series\/mastering-permissions-in-laravel","strippedBody":"User authorization is one of the most complex systems to build in your application, but also one of the most essential. From setting up role-based access and custom policies to exploring advanced permissions - and group-based authorization - you\u2019ll gain the skills needed to build secure, scalable applications. Join me as I guide you through everything required to incorporate a robust user authorization system into your application.\r\n","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/mastering-permissions-in-laravel.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/mastering-permissions-in-laravel.svg","slug":"mastering-permissions-in-laravel","episodeCount":17,"difficultyLevel":"Advanced","complete":1,"runTime":"2h 39m","taxonomy":{"name":"Techniques","path":"https:\/\/laracasts.com\/browse\/techniques"},"author":{"id":24345,"avatar":"\/\/unavatar.io\/x\/jwmcpeak","username":"jwmcpeak","profile":{"full_name":"Jeremy McPeak"}},"isCreatorSeries":0,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/mastering-permissions-in-laravel\/episodes\/1","bookmark":"\/series\/mastering-permissions-in-laravel\/bookmark"}},{"id":226,"title":"Get Real with Laravel Reverb","body":"<p>Hi, I'm Joe, the creator of <a href=\"https:\/\/reverb.laravel.com\/\" target=\"_blank\" class=\"link\">Laravel Reverb<\/a>. In this course, I'll walk you through everything you need to know to start using real-time WebSocket communication in your Laravel applications. Join me as we cover everything from installation to deployment and monitoring on our journey getting real with Laravel Reverb! Let's go!<\/p>\r\n","path":"\/series\/get-real-with-laravel-reverb","strippedBody":"Hi, I'm Joe, the creator of Laravel Reverb. In this course, I'll walk you through everything you need to know to start using real-time WebSocket communication in your Laravel applications. Join me as we cover everything from installation to deployment and monitoring on our journey getting real with Laravel Reverb! Let's go!\r\n","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/get-real-with-laravel-reverb.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/get-real-with-laravel-reverb.svg","slug":"get-real-with-laravel-reverb","episodeCount":10,"difficultyLevel":"Advanced","complete":1,"runTime":"54m","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"author":{"id":5005,"avatar":"\/\/unavatar.io\/github\/joedixon","username":"joedixon","profile":{"full_name":"Joe Dixon"}},"isCreatorSeries":1,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/get-real-with-laravel-reverb\/episodes\/1","bookmark":"\/series\/get-real-with-laravel-reverb\/bookmark"}},{"id":225,"title":"Object-Oriented Principles in PHP","body":"<p>Beginning developers are usually first introduced to procedural programming. But, before too long, they level up. Suddenly, an entirely different paradigm is introduced: object-oriented programming. Little do they know that they'll spend years researching and learning exactly what it means to work with objects and messages.<\/p> <p>In this course, you'll be introduced to the core principles of object-oriented programming through the lens of PHP. We'll begin with the basic constructs and work our way up. The only prerequisite is an elementary understanding of the PHP language and syntax.<\/p>\r\n","path":"\/series\/object-oriented-principles-in-php-2024-edition","strippedBody":"Beginning developers are usually first introduced to procedural programming. But, before too long, they level up. Suddenly, an entirely different paradigm is introduced: object-oriented programming. Little do they know that they'll spend years researching and learning exactly what it means to work with objects and messages. In this course, you'll be introduced to the core principles of object-oriented programming through the lens of PHP. We'll begin with the basic constructs and work our way up. The only prerequisite is an elementary understanding of the PHP language and syntax.\r\n","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/object-oriented-principles-in-php.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/object-oriented-principles-in-php.svg","slug":"object-oriented-principles-in-php-2024-edition","episodeCount":10,"difficultyLevel":"Beginner","complete":0,"runTime":"2h 50m","taxonomy":{"name":"Languages","path":"https:\/\/laracasts.com\/browse\/languages"},"author":{"id":1770,"avatar":"https:\/\/laracasts.nyc3.digitaloceanspaces.com\/members\/avatars\/1770.jpg?v=943","username":"JeffreyWay","profile":{"full_name":"Jeffrey Way"}},"isCreatorSeries":0,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/object-oriented-principles-in-php-2024-edition\/episodes\/1","bookmark":"\/series\/object-oriented-principles-in-php-2024-edition\/bookmark"}},{"id":224,"title":"Continuous Integration Step by Step","body":"<p>When it comes to continuous integration, Github Actions changed the game. With a few lines of YAML, we can now automate repetitive tasks and ensure code quality across our codebase. So, let's pair Github Actions with Laravel to build some really cool workflows that you can drop into almost any project. You'll be applying for that DevOps role before you know it!<\/p>\r\n","path":"\/series\/continuous-integration-step-by-step","strippedBody":"When it comes to continuous integration, Github Actions changed the game. With a few lines of YAML, we can now automate repetitive tasks and ensure code quality across our codebase. So, let's pair Github Actions with Laravel to build some really cool workflows that you can drop into almost any project. You'll be applying for that DevOps role before you know it!\r\n","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/devops-continous-git-integration.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/devops-continous-git-integration.svg","slug":"continuous-integration-step-by-step","episodeCount":9,"difficultyLevel":"Advanced","complete":1,"runTime":"1h 42m","taxonomy":{"name":"DevOps","path":"https:\/\/laracasts.com\/browse\/devops"},"author":{"id":253739,"avatar":"https:\/\/laracasts.nyc3.digitaloceanspaces.com\/members\/avatars\/253739.jpg?v=352","username":"lukedowning19","profile":{"full_name":"Luke Downing"}},"isCreatorSeries":0,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/continuous-integration-step-by-step\/episodes\/1","bookmark":"\/series\/continuous-integration-step-by-step\/bookmark"}},{"id":223,"title":"Livewire 3 From Scratch","body":"<p>Building modern, reactive web apps is difficult and time consuming - if you use traditional tools, that is. But with Livewire, you can easily build modern, responsive applications in a fraction of the time. Join Jeremy as he walks you through all of the concepts and features you need to know to start using Livewire 3 in your Laravel apps today.<\/p>\r\n","path":"\/series\/livewire-3-from-scratch","strippedBody":"Building modern, reactive web apps is difficult and time consuming - if you use traditional tools, that is. But with Livewire, you can easily build modern, responsive applications in a fraction of the time. Join Jeremy as he walks you through all of the concepts and features you need to know to start using Livewire 3 in your Laravel apps today.\r\n","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/livewire-3-from-scratch.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/livewire-3-from-scratch.svg","slug":"livewire-3-from-scratch","episodeCount":29,"difficultyLevel":"Intermediate","complete":1,"runTime":"3h 52m","taxonomy":{"name":"Frameworks","path":"https:\/\/laracasts.com\/browse\/frameworks"},"author":{"id":24345,"avatar":"\/\/unavatar.io\/x\/jwmcpeak","username":"jwmcpeak","profile":{"full_name":"Jeremy McPeak"}},"isCreatorSeries":0,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/livewire-3-from-scratch\/episodes\/1","bookmark":"\/series\/livewire-3-from-scratch\/bookmark"}}],"topics":[{"name":"AlpineJS","episode_count":140,"series_count":9,"path":"https:\/\/laracasts.com\/topics\/alpine-js","thumbnail":"alpine-logo.svg"},{"name":"APIs","episode_count":24,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/api","thumbnail":"api-logo.svg"},{"name":"Authentication","episode_count":37,"series_count":4,"path":"https:\/\/laracasts.com\/topics\/authentication","thumbnail":"authentication-logo.svg"},{"name":"Authorization","episode_count":17,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/authorization","thumbnail":"authorization-logo.svg"},{"name":"AWS","episode_count":29,"series_count":3,"path":"https:\/\/laracasts.com\/topics\/aws","thumbnail":"aws-logo.svg"},{"name":"Billing","episode_count":41,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/billing","thumbnail":"billing-logo.svg"},{"name":"Blade","episode_count":20,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/blade","thumbnail":"blade-logo.svg"},{"name":"Clean Code","episode_count":95,"series_count":11,"path":"https:\/\/laracasts.com\/topics\/clean-code","thumbnail":"clean-code-logo.svg"},{"name":"CLI","episode_count":12,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/cli","thumbnail":"command-line-logo.svg"},{"name":"Continuous Integration","episode_count":9,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/continuous-integration","thumbnail":"continuous-integration.svg"},{"name":"CSS","episode_count":62,"series_count":7,"path":"https:\/\/laracasts.com\/topics\/css","thumbnail":"css-logo.svg"},{"name":"Cypress","episode_count":14,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/cypress","thumbnail":"cypress-logo.svg"},{"name":"Debugging","episode_count":6,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/debugging","thumbnail":"debugging-logo.svg"},{"name":"Docker","episode_count":8,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/docker","thumbnail":"docker-logo.svg"},{"name":"Eloquent","episode_count":34,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/eloquent","thumbnail":"eloquent-logo.svg"},{"name":"Envoyer","episode_count":10,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/envoyer","thumbnail":"envoyer-logo.svg"},{"name":"Filament","episode_count":36,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/filament","thumbnail":"filament-logo.svg"},{"name":"Git","episode_count":44,"series_count":3,"path":"https:\/\/laracasts.com\/topics\/git","thumbnail":"git-logo.svg"},{"name":"GraphQL","episode_count":16,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/graphql","thumbnail":"graphql-logo.svg"},{"name":"Inertia","episode_count":53,"series_count":5,"path":"https:\/\/laracasts.com\/topics\/inertia","thumbnail":"inertia-logo.svg"},{"name":"JavaScript","episode_count":282,"series_count":26,"path":"https:\/\/laracasts.com\/topics\/javascript","thumbnail":"js-logo.svg"},{"name":"Laravel","episode_count":1034,"series_count":77,"path":"https:\/\/laracasts.com\/topics\/laravel","thumbnail":"laravel-logo.svg"},{"name":"Laravel Cashier","episode_count":14,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/laravel-cashier","thumbnail":"cashier-logo.svg"},{"name":"Laravel Forge","episode_count":30,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/laravel-forge","thumbnail":"laravel-forge-logo.svg"},{"name":"Laravel Livewire","episode_count":241,"series_count":11,"path":"https:\/\/laracasts.com\/topics\/laravel-livewire","thumbnail":"livewire-logo.svg"},{"name":"Laravel Octane","episode_count":8,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/laravel-octane","thumbnail":"octane-logo.svg"},{"name":"Laravel Packages","episode_count":98,"series_count":11,"path":"https:\/\/laracasts.com\/topics\/laravel-packages","thumbnail":"laravel-logo.svg"},{"name":"Laravel Reverb","episode_count":17,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/laravel-reverb","thumbnail":"laravel-reverb.svg"},{"name":"Laravel Vapor","episode_count":13,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/laravel-vapor","thumbnail":"vapor-logo.svg"},{"name":"MySQL","episode_count":45,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/mysql","thumbnail":"mysql-logo.svg"},{"name":"Nova","episode_count":25,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/nova","thumbnail":"nova-logo.svg"},{"name":"Nuxt","episode_count":11,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/nuxt","thumbnail":"nuxtjs-logo.svg"},{"name":"OOP","episode_count":18,"series_count":3,"path":"https:\/\/laracasts.com\/topics\/object-oriented-programming","thumbnail":"OOP-logo.svg"},{"name":"Pagination","episode_count":4,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/pagination","thumbnail":"pagination-logo.svg"},{"name":"Pest","episode_count":59,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/pest","thumbnail":"pest-logo.svg"},{"name":"PHP ","episode_count":280,"series_count":25,"path":"https:\/\/laracasts.com\/topics\/php","thumbnail":"php-logo.svg"},{"name":"PhpStorm","episode_count":18,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/phpstorm","thumbnail":"phpstorm-logo.svg"},{"name":"PHPUnit","episode_count":93,"series_count":6,"path":"https:\/\/laracasts.com\/topics\/phpunit","thumbnail":"phpunit-logo.svg"},{"name":"Queues","episode_count":28,"series_count":3,"path":"https:\/\/laracasts.com\/topics\/queues","thumbnail":"queues-logo.svg"},{"name":"React","episode_count":56,"series_count":3,"path":"https:\/\/laracasts.com\/topics\/react","thumbnail":"react-logo.svg"},{"name":"Redis","episode_count":10,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/redis","thumbnail":"redis-logo.svg"},{"name":"Security","episode_count":29,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/security","thumbnail":"security-logo.svg"},{"name":"Servers","episode_count":34,"series_count":3,"path":"https:\/\/laracasts.com\/topics\/servers","thumbnail":"servers-logo.svg"},{"name":"SQL","episode_count":45,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/sql","thumbnail":"sql-logo.svg"},{"name":"Statamic","episode_count":22,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/statamic","thumbnail":"statamic-logo.svg"},{"name":"Sublime Text","episode_count":22,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/sublime-text","thumbnail":"sublime-logo.svg"},{"name":"Svelte","episode_count":13,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/svelte","thumbnail":"svelte-logo.svg"},{"name":"Symfony","episode_count":4,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/symfony","thumbnail":"symphony-logo.svg"},{"name":"Tailwind CSS","episode_count":117,"series_count":7,"path":"https:\/\/laracasts.com\/topics\/tailwind","thumbnail":"tailwind-logo.svg"},{"name":"TypeScript","episode_count":11,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/typescript","thumbnail":"typescript-logo.svg"},{"name":"Vim","episode_count":28,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/vim","thumbnail":"vim-logo.svg"},{"name":"Visual Studio Code","episode_count":18,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/vs-code","thumbnail":"visualstudio-logo.svg"},{"name":"Vite","episode_count":8,"series_count":1,"path":"https:\/\/laracasts.com\/topics\/vite","thumbnail":"vite.svg"},{"name":"Vue","episode_count":201,"series_count":13,"path":"https:\/\/laracasts.com\/topics\/vue","thumbnail":"vue-logo.svg"},{"name":"Webpack","episode_count":25,"series_count":2,"path":"https:\/\/laracasts.com\/topics\/webpack","thumbnail":"webpack-logo.svg"},{"name":"Workshops","episode_count":433,"series_count":27,"path":"https:\/\/laracasts.com\/topics\/workshops","thumbnail":"workshops-logo.svg"}],"creatorSeries":[{"id":179,"title":"Learn Statamic with Jack","body":"<p>You've probably heard of <a href=\"https:\/\/statamic.com\" target=\"_blank\" class=\"link\">Statamic<\/a> by now \u2014 that rebellious little Laravel-powered content management system that refuses to use databases. Well, it's pretty grown up now, and in this series we're going to learn how Statamic can help you build highly-scalable websites quickly and efficiently, <em>including<\/em> how to run on a database.<\/p><p>We'll get into building add-ons, starter kits, and even pop the hood and explore just how all the flat file Statamic Magic (or Statamagic, some might say) works. Let's do this!<\/p>","path":"\/series\/learn-statamic-with-jack","strippedBody":"You've probably heard of Statamic by now \u2014 that rebellious little Laravel-powered content management system that refuses to use databases. Well, it's pretty grown up now, and in this series we're going to learn how Statamic can help you build highly-scalable websites quickly and efficiently, including how to run on a database.We'll get into building add-ons, starter kits, and even pop the hood and explore just how all the flat file Statamic Magic (or Statamagic, some might say) works. Let's do this!","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/learn-statamic-with-jack.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/learn-statamic-with-jack.svg","slug":"learn-statamic-with-jack","episodeCount":22,"difficultyLevel":"Intermediate","complete":1,"runTime":"2h 58m","taxonomy":{"name":"Frameworks","path":"https:\/\/laracasts.com\/browse\/frameworks"},"author":{"id":2951,"avatar":"\/\/unavatar.io\/github\/jackmcdade","username":"jackmcdade","profile":{"full_name":"Jack McDade"}},"isCreatorSeries":1,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/learn-statamic-with-jack\/episodes\/1","bookmark":"\/series\/learn-statamic-with-jack\/bookmark"}},{"id":197,"title":"Build Advanced Components for Filament","body":"<p>Once you're confidently building interfaces with all the components that are included with <a href=\"https:\/\/filamentphp.com\">Filament<\/a>, you'll likely want to begin building your own custom ones.<\/p><p>\n\nHi, I'm Dan: the co-founder of Filament. This series will teach you how to build components, like custom form fields and table columns, and how to distribute them in a plugin package. Meanwhile, you'll get to know all the tools of Filament's internal component system. Excited?<\/p>","path":"\/series\/build-advanced-components-for-filament","strippedBody":"Once you're confidently building interfaces with all the components that are included with Filament, you'll likely want to begin building your own custom ones.\n\nHi, I'm Dan: the co-founder of Filament. This series will teach you how to build components, like custom form fields and table columns, and how to distribute them in a plugin package. Meanwhile, you'll get to know all the tools of Filament's internal component system. Excited?","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/build-advanced-components-for-filament.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/build-advanced-components-for-filament.svg","slug":"build-advanced-components-for-filament","episodeCount":17,"difficultyLevel":"Advanced","complete":1,"runTime":"2h 32m","taxonomy":{"name":"Frameworks","path":"https:\/\/laracasts.com\/browse\/frameworks"},"author":{"id":167366,"avatar":"https:\/\/laracasts.nyc3.digitaloceanspaces.com\/members\/avatars\/167366.jpg?v=263","username":"DanHarrin","profile":{"full_name":"Dan Harrin"}},"isCreatorSeries":1,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/build-advanced-components-for-filament\/episodes\/1","bookmark":"\/series\/build-advanced-components-for-filament\/bookmark"}},{"id":171,"title":"Livewire Uncovered","body":"<p>Livewire can often feel like magic. Somehow, you're able to write interactive web applications using only PHP? How? Well, in this series, we're going to uncover the magic together by building a simplified version of Livewire from scratch.<\/p><p>Aside from being plain entertaining, this exercise will arm you with <strong>deep Livewire knowledge<\/strong> that will help you build and debug your apps in your daily life. Let's dive in!<\/p>","path":"\/series\/livewire-uncovered","strippedBody":"Livewire can often feel like magic. Somehow, you're able to write interactive web applications using only PHP? How? Well, in this series, we're going to uncover the magic together by building a simplified version of Livewire from scratch.Aside from being plain entertaining, this exercise will arm you with deep Livewire knowledge that will help you build and debug your apps in your daily life. Let's dive in!","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/livewire-uncovered.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/livewire-uncovered.svg","slug":"livewire-uncovered","episodeCount":15,"difficultyLevel":"Advanced","complete":1,"runTime":"2h 53m","taxonomy":{"name":"Frameworks","path":"https:\/\/laracasts.com\/browse\/frameworks"},"author":{"id":7952,"avatar":"https:\/\/laracasts.s3.amazonaws.com\/avatars\/caleb-porzio-avatar.jpg","username":"calebporzio","profile":{"full_name":"Caleb Porzio"}},"isCreatorSeries":1,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/livewire-uncovered\/episodes\/1","bookmark":"\/series\/livewire-uncovered\/bookmark"}},{"id":173,"title":"Developing Serverless Functions in Laravel","body":"<p>In this CreatorSeries, we cover how to develop serverless functions with Laravel, using a package called <a href=\"https:\/\/hammerstone.dev\/sidecar\/docs\/main\/overview\" target=\"_blank\">Sidecar<\/a>. Serverless functions let you tap into the power of AWS Lambda, but without the complexity of setting up a new repo, deployment process, or API Gateway.<\/p><p>You'll learn how to package, deploy, and execute these functions... all from your Laravel application!<\/p>","path":"\/series\/developing-serverless-functions-in-laravel","strippedBody":"In this CreatorSeries, we cover how to develop serverless functions with Laravel, using a package called Sidecar. Serverless functions let you tap into the power of AWS Lambda, but without the complexity of setting up a new repo, deployment process, or API Gateway.You'll learn how to package, deploy, and execute these functions... all from your Laravel application!","thumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/png\/\/developing-serverless-functions.png","svgThumbnail":"https:\/\/images.laracasts.com\/series\/thumbnails\/svg\/developing-serverless-functions.svg","slug":"developing-serverless-functions-in-laravel","episodeCount":17,"difficultyLevel":"Advanced","complete":1,"runTime":"1h 41m","taxonomy":{"name":"Tooling","path":"https:\/\/laracasts.com\/browse\/tooling"},"author":{"id":5820,"avatar":"\/\/unavatar.io\/github\/aarondfrancis","username":"aarondfrancis","profile":{"full_name":"Aaron Francis"}},"isCreatorSeries":1,"progress":{"started":false,"completionPercentage":0,"episodesCompleted":0,"completed":false,"nextEpisodePosition":1},"links":{"continue":"\/series\/developing-serverless-functions-in-laravel\/episodes\/1","bookmark":"\/series\/developing-serverless-functions-in-laravel\/bookmark"}}],"instructors":[{"id":1770,"username":"JeffreyWay","series_count":134,"profile":{"full_name":"Jeffrey Way","employment":"Laracasts","job_title":"Owner"}},{"id":253739,"username":"lukedowning19","series_count":11,"profile":{"full_name":"Luke Downing","employment":"Laracasts","job_title":"Instructor"}},{"id":24345,"username":"jwmcpeak","series_count":10,"profile":{"full_name":"Jeremy McPeak","employment":"Laracasts","job_title":"Instructor"}},{"id":80737,"username":"simonswiss","series_count":2,"profile":{"full_name":"Simon Vrachliotis","employment":"Laracasts","job_title":"Instructor"}},{"id":5005,"username":"joedixon","series_count":1,"profile":{"full_name":"Joe Dixon","employment":"Laravel","job_title":"Software Developer"}},{"id":110151,"username":"joshcirre","series_count":1,"profile":{"full_name":"Josh Cirre","employment":"Laravel","job_title":"DevRel"}},{"id":3587,"username":"jtannenbaum","series_count":1,"profile":{"full_name":"Joe Tannenbaum","employment":"Laravel","job_title":"Software Engineer"}},{"id":11254,"username":"jbrooksuk","series_count":1,"profile":{"full_name":"James Brooks","employment":"Laravel","job_title":"Software Engineer"}},{"id":121510,"username":"KaterinaT","series_count":1,"profile":{"full_name":"Katerina Trajchevska","employment":"Adeva","job_title":"CEO"}},{"id":214,"username":"Philo","series_count":1,"profile":{"full_name":"Philo Hermans","employment":"Self","job_title":"Programmer"}},{"id":21268,"username":"mateusjatenee","series_count":1,"profile":{"full_name":"Mateus Guimar\u00e3es","employment":"Weenside","job_title":"Software Developer"}},{"id":22175,"username":"mattstauffer","series_count":2,"profile":{"full_name":"Matt Stauffer","employment":"Tighten","job_title":"Founder"}},{"id":167366,"username":"DanHarrin","series_count":1,"profile":{"full_name":"Dan Harrin","employment":"Kirschbaum","job_title":"Lead Developer"}},{"id":323846,"username":"programwithgio","series_count":1,"profile":{"full_name":"Giorgi Gelashvili","employment":"Self","job_title":"Web Developer"}},{"id":1262,"username":"christophrumpel","series_count":2,"profile":{"full_name":"Christoph Rumpel","employment":"Laravel","job_title":"Developer Evangelist"}},{"id":34923,"username":"jason-mccreary","series_count":1,"profile":{"full_name":"Jason McCreary","employment":"Laravel Shift","job_title":"Founder"}},{"id":7413,"username":"Valorin","series_count":1,"profile":{"full_name":"Stephen Rees-Carter","employment":"Valorin Security","job_title":"Friendly Hacker"}},{"id":128223,"username":"jessarcher","series_count":1,"profile":{"full_name":"Jess Archer","employment":"Laravel","job_title":"Software Engineer"}},{"id":1140,"username":"reinink","series_count":1,"profile":{"full_name":"Jonathan Reinink","employment":"Tailwind","job_title":"Developer"}},{"id":2951,"username":"jackmcdade","series_count":1,"profile":{"full_name":"Jack McDade","employment":"Statamic","job_title":"Founder"}},{"id":5820,"username":"aarondfrancis","series_count":1,"profile":{"full_name":"Aaron Francis","employment":"Try Hard Studios","job_title":"Owner"}},{"id":242506,"username":"ShrutiBalasa","series_count":2,"profile":{"full_name":"Shruti Balasa","employment":"Self","job_title":"Tech Educator"}},{"id":146405,"username":"aschmelyun","series_count":5,"profile":{"full_name":"Andrew Schmelyun","employment":"Self","job_title":"Web Developer"}},{"id":34960,"username":"MichaelTimbs","series_count":1,"profile":{"full_name":"Michael Timbs","employment":"Qwilr","job_title":"Staff Software Engineer"}},{"id":11951,"username":"themsaid","series_count":8,"profile":{"full_name":"Mohamed Said","employment":"Laravel","job_title":"Core Team"}},{"id":118722,"username":"KevinMcKee","series_count":2,"profile":{"full_name":"Kevin McKee","employment":"Padmission","job_title":"Co-Founder"}},{"id":2071,"username":"drehimself","series_count":26,"profile":{"full_name":"Andre Madarang","employment":"Self","job_title":"Web Developer"}},{"id":7952,"username":"calebporzio","series_count":3,"profile":{"full_name":"Caleb Porzio","employment":"Livewire","job_title":"Creator"}},{"id":335,"username":"TaylorOtwell","series_count":2,"profile":{"full_name":"Taylor Otwell","employment":"Laravel","job_title":"Owner"}}]},"url":"\/","version":"73f0734aa06bd7bb946389a18b879d0b","clearHistory":false,"encryptHistory":false}"></div> </body> </html>