{"id":1585,"date":"2026-08-26T00:38:27","date_gmt":"2026-08-26T00:38:27","guid":{"rendered":"https:\/\/www.projectimmerse.com\/blog\/?p=1585"},"modified":"2026-08-26T00:44:13","modified_gmt":"2026-08-26T00:44:13","slug":"setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke","status":"publish","type":"post","link":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/","title":{"rendered":"Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke)"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app-1024x1024.png\" alt=\"Setting up a new Laravel app walkthrough\" class=\"wp-image-1586\" srcset=\"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app-1024x1024.png 1024w, https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app-150x150.png 150w, https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app-300x300.png 300w, https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app-100x100.png 100w, https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app-768x768.png 768w, https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app.png 1254w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><figcaption class=\"wp-element-caption\">A practical walkthrough of setting up a new Laravel application from scratch.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Every Laravel tutorial makes setup look like a single copy-paste command and then, poof, you&#8217;re building an app. In practice, it&#8217;s usually one command plus one confusing red X you have to Google. Here&#8217;s exactly what happened when I set up a fresh Laravel project on my Mac, from having zero PHP tooling installed to actually running the dev server \u2014 including the one step that failed and what it turned out to mean.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I was following along with the official&nbsp;<a href=\"https:\/\/www.youtube.com\/watch?v=MOLZOXqaomM\" target=\"_blank\" rel=\"noopener\">Learn Laravel from Scratch [FULL BOOTCAMP COURSE]<\/a>&nbsp;on YouTube, which walks through building a full-stack app from a completely empty machine. It&#8217;s a solid starting point if you want to follow the exact same steps \u2014 just know that the setup section is where things can get a little bumpy depending on what&#8217;s already on your computer.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Starting From Scratch<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before installing anything, it&#8217;s worth checking what&#8217;s already on your machine. A quick round of version checks told me exactly where I stood:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\nphp -v\ncomposer -V\nlaravel --version\nnpm -v\nbun -v\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">The results: no PHP, no Composer, no Laravel installer CLI. npm was already there. Nothing was broken \u2014 the machine just hadn&#8217;t been set up for Laravel development yet, which is a completely normal place to start.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installing PHP, Composer, and the Laravel CLI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Rather than hunting through Homebrew formulas and half-outdated tutorials, Laravel now maintains a one-line installer at&nbsp;<code>php.new<\/code>&nbsp;that sets up PHP, Composer, and the Laravel installer together, with sane defaults. For macOS, that&#8217;s:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n\/bin\/bash -c &quot;$(curl -fsSL https:\/\/php.new\/install\/mac\/8.5)&quot;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">(Linux and Windows have their own equivalent commands on the same page.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One thing worth knowing ahead of time: after running this, your current terminal session won&#8217;t recognize the new commands right away. You need to close and reopen your terminal, or open a new tab, so your shell reloads its PATH. It&#8217;s the classic &#8220;have you tried turning it off and on again&#8221; \u2014 except this time it&#8217;s your terminal, and yes, you genuinely do have to.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After restarting, a quick check confirmed everything was in place:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\ncomposer -V\n# Composer version 2.8.12\n\nlaravel --version\n# Laravel Installer 5.31.1\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Creating the Application<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">With the tooling installed, creating the app itself came down to a single command:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\nlaravel new chirper --database=sqlite --react --npm --boost --no-interaction\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">That one command handles a surprising amount:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Scaffolds the full Laravel application structure<\/li>\n\n\n\n<li>Sets up SQLite as the database and runs the initial migrations<\/li>\n\n\n\n<li>Installs Pest for testing, and even auto-formats the generated test code<\/li>\n\n\n\n<li>Installs frontend dependencies with npm and builds the assets<\/li>\n\n\n\n<li>Attempts to install Laravel Boost, a package built for AI-assisted development<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Everything succeeded, except for one thing: Boost showed up with a red X and a completely unhelpful &#8220;Command failed&#8221; message. No explanation, no next step. Just a X, sitting there judging me.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Chasing Down the Red X<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">At this point I honestly didn&#8217;t know what Boost even was \u2014 I&#8217;d only included the flag because it showed up in the recommended install command. So instead of guessing, I ran the failing step by hand to see the actual error:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\ncd chirper\nphp artisan boost:install\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This time it didn&#8217;t fail \u2014 it just sat there waiting, showing an interactive checklist:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\nWhich Boost features would you like to configure?\n \u203a \u25fc AI Guidelines\n   \u25fc Agent Skills\n   \u25fc Boost MCP Server Configuration\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Mystery solved.&nbsp;<code>boost:install<\/code>&nbsp;is interactive by design \u2014 it needs a human to select options with arrow keys and a spacebar. The original install command runs with a&nbsp;<code>--no-interaction<\/code>&nbsp;flag, which is great for automation and terrible for a command that&#8217;s waiting on someone to press Enter. Nothing was actually broken. It was just standing there, patiently, waiting for me to show up.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A little digging into the&nbsp;<a href=\"https:\/\/laravel.com\/framework\/docs\/boost\" target=\"_blank\" rel=\"noopener\">official Laravel Boost documentation<\/a>&nbsp;cleared up what Boost actually is: an optional package that adds AI-assistance tooling to a Laravel project \u2014 guideline files, reusable &#8220;skills,&#8221; and an MCP server so AI coding tools can query your app&#8217;s routes, models, and database schema directly instead of guessing. None of it touches your actual application logic. Skipping it changes nothing about how your app runs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Since I was following a tutorial and just wanted to start building, I canceled out of the prompt with&nbsp;<code>Ctrl+C<\/code>&nbsp;and moved on. Boost can always be installed later with the same command, whenever it&#8217;s actually useful.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Getting the App Running<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/laravel-development-environment-setup-1024x1024.png\" alt=\"Laravel development environment with PHP, Composer, React, SQLite, and Artisan\" class=\"wp-image-1589\" srcset=\"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/laravel-development-environment-setup-1024x1024.png 1024w, https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/laravel-development-environment-setup-150x150.png 150w, https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/laravel-development-environment-setup-300x300.png 300w, https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/laravel-development-environment-setup-100x100.png 100w, https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/laravel-development-environment-setup-768x768.png 768w, https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/laravel-development-environment-setup.png 1254w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption class=\"wp-element-caption\">A Laravel development environment configured with PHP, Composer, SQLite, React, and Artisan.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">With setup out of the way, starting the app is refreshingly simple:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\ncd chirper\ncomposer run dev\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">This single command runs Laravel&#8217;s combined development workflow \u2014 the local server, queue listener, log watcher, and Vite&#8217;s asset bundler \u2014 all at once. The app becomes available at&nbsp;<code>http:\/\/localhost:8000<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Choosing a Starter Kit: React, Vue, or Livewire?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One decision worth making deliberately is which starter kit to scaffold with. All three options set up authentication, a dashboard, and sensible project structure, but they lean toward very different frontend approaches:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>React<\/strong>\u00a0\u2014 the default choice, and a safe bet if you already know React or want the most tutorials and Stack Overflow answers to lean on.<\/li>\n\n\n\n<li><strong>Vue<\/strong>\u00a0\u2014 a gentler learning curve for many developers, with templates that read closer to plain HTML.<\/li>\n\n\n\n<li><strong>Livewire<\/strong>\u00a0\u2014 skips a JavaScript framework almost entirely, letting you build interactive UI using mostly PHP and Blade templates. Great if you&#8217;d rather not context-switch between two languages.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re following a specific tutorial, match whatever starter kit it uses \u2014 swap&nbsp;<code>--react<\/code>&nbsp;for&nbsp;<code>--vue<\/code>&nbsp;or&nbsp;<code>--livewire<\/code>&nbsp;in the install command. Fighting the tutorial&#8217;s framework choice while also learning Laravel is a great way to have a bad afternoon.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Actually Gets Pushed to GitHub<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A question that comes up almost immediately after setup: if you push this to GitHub, does&nbsp;<em>everything<\/em>&nbsp;go up? Thankfully, no \u2014 Laravel&#8217;s default&nbsp;<code>.gitignore<\/code>&nbsp;already handles this sensibly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Stays local, never pushed:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\/vendor<\/code>\u00a0\u2014 Composer dependencies, reinstalled with\u00a0<code>composer install<\/code><\/li>\n\n\n\n<li><code>\/node_modules<\/code>\u00a0\u2014 npm dependencies, reinstalled with\u00a0<code>npm install<\/code><\/li>\n\n\n\n<li><code>.env<\/code>\u00a0\u2014 your real environment config, including database credentials, your app key, and any API secrets<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Gets pushed:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>All your actual application code \u2014 routes, models, controllers, views<\/li>\n\n\n\n<li><code>composer.json<\/code>\/<code>composer.lock<\/code>\u00a0and\u00a0<code>package.json<\/code>\/<code>package-lock.json<\/code>, which act as recipes for regenerating the dependency folders<\/li>\n\n\n\n<li><code>.env.example<\/code>\u00a0\u2014 a template listing which environment variables are needed, without any real secret values<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">So when someone clones your repo, the setup dance is:&nbsp;<code>composer install<\/code>,&nbsp;<code>npm install<\/code>, copy&nbsp;<code>.env.example<\/code>&nbsp;to&nbsp;<code>.env<\/code>, fill in real values, then&nbsp;<code>php artisan key:generate<\/code>. Simple, and nobody accidentally commits their database password to a public repo. Everybody wins, especially future you.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A Few Things to Double-Check Before You Start Building<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once&nbsp;<code>composer run dev<\/code>&nbsp;is running and&nbsp;<code>localhost:8000<\/code>&nbsp;loads in your browser, it&#8217;s tempting to dive straight into features. A couple of quick sanity checks first can save you a headache later:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Confirm your\u00a0<code>.env<\/code>\u00a0file exists.<\/strong>\u00a0The installer creates it automatically from\u00a0<code>.env.example<\/code>, but it&#8217;s worth a glance to make sure your database connection and app key are actually populated.<\/li>\n\n\n\n<li><strong>Run the test suite once.<\/strong>\u00a0Since Pest is already installed and configured, running\u00a0<code>php artisan test<\/code>\u00a0right away confirms the whole install is healthy before you&#8217;ve written a single line of your own code.<\/li>\n\n\n\n<li><strong>Commit early.<\/strong>\u00a0Get that first commit into Git before you start customizing anything, so you always have a known-good baseline to compare against.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">The Fundamentals<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Strip away the specific commands and a few reusable lessons remain:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Check before you install.<\/strong>\u00a0Verifying what&#8217;s already on your machine avoids redundant work and version conflicts.<\/li>\n\n\n\n<li><strong>Official scripts beat scattered tutorials.<\/strong>\u00a0A maintained one-liner like\u00a0<code>php.new<\/code>\u00a0is far less likely to break than a five-year-old blog post&#8217;s instructions.<\/li>\n\n\n\n<li><strong>Restart your terminal after installing new CLI tools.<\/strong>\u00a0Your shell caches its PATH; new commands won&#8217;t be recognized until you reload it.<\/li>\n\n\n\n<li><strong>A red X doesn&#8217;t always mean something&#8217;s broken.<\/strong>\u00a0Sometimes it just means a command is interactive and got run in a non-interactive context. Rerun it by hand before panicking.<\/li>\n\n\n\n<li><strong>Optional tooling is optional.<\/strong>\u00a0Don&#8217;t let a non-critical setup step block you from actually building your app.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What I&#8217;d Tell Past Me<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Looking back, the whole detour cost maybe five minutes, and most of that was spent staring at a red X wondering if I&#8217;d broken something. If I&#8217;d known upfront that Boost was optional and that interactive commands sometimes fail silently when run non-interactively, I probably wouldn&#8217;t have blinked at it at all. That&#8217;s really the theme of setting up any new framework: the errors are rarely as scary as they look, and most of them resolve themselves the moment you run the command again by hand and actually read what it prints back at you.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">None of this required any special expertise \u2014 just checking dependencies, running an official installer, scaffolding the app, chasing down one cryptic error, and reading a bit of documentation. Setup can look intimidating when something fails silently, but nine times out of ten, running the failing step by hand and actually reading the output tells you everything you need to know. The rest is just following the trail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Every Laravel tutorial makes setup look like a single copy-paste command and then, poof, you&#8217;re building an app. In practice, it&#8217;s usually one command plus one confusing red X you have to Google. Here&#8217;s exactly what happened when I set up a fresh Laravel project on my Mac, from having zero PHP tooling installed to &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57],"tags":[],"class_list":["post-1585","post","type-post","status-publish","format-standard","hentry","category-web-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke) - Project Immerse<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke) - Project Immerse\" \/>\n<meta property=\"og:description\" content=\"Every Laravel tutorial makes setup look like a single copy-paste command and then, poof, you&#8217;re building an app. In practice, it&#8217;s usually one command plus one confusing red X you have to Google. Here&#8217;s exactly what happened when I set up a fresh Laravel project on my Mac, from having zero PHP tooling installed to &hellip; Continue reading &quot;Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke)&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/\" \/>\n<meta property=\"og:site_name\" content=\"Project Immerse\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-26T00:38:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-26T00:44:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app-768x768.png\" \/>\n\t<meta property=\"og:image:width\" content=\"768\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"projectimmerse\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"projectimmerse\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\\\/\"},\"author\":{\"name\":\"projectimmerse\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#\\\/schema\\\/person\\\/c53f2864be524ee6fa08a7e4800dd1e5\"},\"headline\":\"Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke)\",\"datePublished\":\"2026-08-26T00:38:27+00:00\",\"dateModified\":\"2026-08-26T00:44:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\\\/\"},\"wordCount\":1481,\"image\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/setting-up-new-laravel-app-1024x1024.png\",\"articleSection\":[\"Web Development\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\\\/\",\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\\\/\",\"name\":\"Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke) - Project Immerse\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/setting-up-new-laravel-app-1024x1024.png\",\"datePublished\":\"2026-08-26T00:38:27+00:00\",\"dateModified\":\"2026-08-26T00:44:13+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#\\\/schema\\\/person\\\/c53f2864be524ee6fa08a7e4800dd1e5\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/setting-up-new-laravel-app.png\",\"contentUrl\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/setting-up-new-laravel-app.png\",\"width\":1254,\"height\":1254},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/\",\"name\":\"Project Immerse\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#\\\/schema\\\/person\\\/c53f2864be524ee6fa08a7e4800dd1e5\",\"name\":\"projectimmerse\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4d06955033d6227bfdcf30014e457e4334f7deeb73907de49b65ec2484921931?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4d06955033d6227bfdcf30014e457e4334f7deeb73907de49b65ec2484921931?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4d06955033d6227bfdcf30014e457e4334f7deeb73907de49b65ec2484921931?s=96&d=mm&r=g\",\"caption\":\"projectimmerse\"},\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/author\\\/projectimmerse\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke) - Project Immerse","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/","og_locale":"en_US","og_type":"article","og_title":"Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke) - Project Immerse","og_description":"Every Laravel tutorial makes setup look like a single copy-paste command and then, poof, you&#8217;re building an app. In practice, it&#8217;s usually one command plus one confusing red X you have to Google. Here&#8217;s exactly what happened when I set up a fresh Laravel project on my Mac, from having zero PHP tooling installed to &hellip; Continue reading \"Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke)\"","og_url":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/","og_site_name":"Project Immerse","article_published_time":"2026-08-26T00:38:27+00:00","article_modified_time":"2026-08-26T00:44:13+00:00","og_image":[{"width":768,"height":768,"url":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app-768x768.png","type":"image\/png"}],"author":"projectimmerse","twitter_card":"summary_large_image","twitter_misc":{"Written by":"projectimmerse","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/#article","isPartOf":{"@id":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/"},"author":{"name":"projectimmerse","@id":"https:\/\/www.projectimmerse.com\/blog\/#\/schema\/person\/c53f2864be524ee6fa08a7e4800dd1e5"},"headline":"Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke)","datePublished":"2026-08-26T00:38:27+00:00","dateModified":"2026-08-26T00:44:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/"},"wordCount":1481,"image":{"@id":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/#primaryimage"},"thumbnailUrl":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app-1024x1024.png","articleSection":["Web Development"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/","url":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/","name":"Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke) - Project Immerse","isPartOf":{"@id":"https:\/\/www.projectimmerse.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/#primaryimage"},"image":{"@id":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/#primaryimage"},"thumbnailUrl":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app-1024x1024.png","datePublished":"2026-08-26T00:38:27+00:00","dateModified":"2026-08-26T00:44:13+00:00","author":{"@id":"https:\/\/www.projectimmerse.com\/blog\/#\/schema\/person\/c53f2864be524ee6fa08a7e4800dd1e5"},"breadcrumb":{"@id":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/#primaryimage","url":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app.png","contentUrl":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2026\/08\/setting-up-new-laravel-app.png","width":1254,"height":1254},{"@type":"BreadcrumbList","@id":"https:\/\/www.projectimmerse.com\/blog\/setting-up-a-new-laravel-app-a-real-walkthrough-including-the-part-that-broke\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.projectimmerse.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Setting Up a New Laravel App: A Real Walkthrough (Including the Part That Broke)"}]},{"@type":"WebSite","@id":"https:\/\/www.projectimmerse.com\/blog\/#website","url":"https:\/\/www.projectimmerse.com\/blog\/","name":"Project Immerse","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.projectimmerse.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.projectimmerse.com\/blog\/#\/schema\/person\/c53f2864be524ee6fa08a7e4800dd1e5","name":"projectimmerse","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4d06955033d6227bfdcf30014e457e4334f7deeb73907de49b65ec2484921931?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4d06955033d6227bfdcf30014e457e4334f7deeb73907de49b65ec2484921931?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4d06955033d6227bfdcf30014e457e4334f7deeb73907de49b65ec2484921931?s=96&d=mm&r=g","caption":"projectimmerse"},"url":"https:\/\/www.projectimmerse.com\/blog\/author\/projectimmerse\/"}]}},"_links":{"self":[{"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/posts\/1585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/comments?post=1585"}],"version-history":[{"count":3,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/posts\/1585\/revisions"}],"predecessor-version":[{"id":1591,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/posts\/1585\/revisions\/1591"}],"wp:attachment":[{"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/media?parent=1585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/categories?post=1585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/tags?post=1585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}