Posts

Since 2024
Prezet: Markdown Blogging for Laravel
Prezet: Markdown Blogging for Laravel

Prezet is a new Laravel Blogging app from Ben Bjurstrom that transforms markdown files into SEO-friendly blogs, articles, and documentation! If you want to learn more about Prezet check out this Laravel News creator series interview we did. <iframe width="1238" height="696" src="https://www.youtube.com/embed/GCsRyzwNqM8" title="Prezet: Laravel Markdown Blogging with Ben Bjurstrom" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> One of the differences between other solutions is Prezet is designed to run with your existing Laravel apps. This way you get the following features all for free: Unified Deployment: Content and Laravel applications coexist in a single codebase with a unified deployment process. Familiar Environment: Leverages existing Laravel and Blade knowledge, eliminating the need to learn new frameworks. Seamless Integration: Allows easy incorporation of dynamic features within the Laravel framework. For example, need a mailing list signup in your blog? It's just another Laravel route: Getting started with Prezet is simple and all you need to do is run these steps: composer require benbjurstrom/prezet php artisan prezet:install php artisan serve php artisan prezet:index Of course, the installation guide has a full breakdown of what all these commands do and why they are needed. Prezet Features Include Markdown Powered - Transform markdown files into SEO-friendly content, no database required! Blade Components - Add dynamic elements to static content with inline blade components. Optimized Images - Automatic WebP conversion and generated srcsets. Typed Front Matter - Front matter is cast to DTOs to ensure data consistency across your content. SEO Tags - Auto-generate meta tags from front matter data to boost search engine discoverability. Ogimage Generation - Create custom Open Graph images to enhance social media sharing. Check out Prezet today if you are looking for a markdown friendly blogging app. The post Prezet: Markdown Blogging for Laravel appeared first on Laravel News. Join the Laravel Newsletter to get Laravel articles like this directly in your inbox.

Prepare your Laravel app for the cloud
Prepare your Laravel app for the cloud

The recent announcements at LaraconUS have sparked a renewed interest in cloud-based deployments within the Laravel community. As the debate continues on how to deploy your apps, one thing is clear: the cloud is becoming a more viable option for Laravel users. In this article, we'll explore how to prepare your Laravel app for deployment in a cloud environment using FrankenPHP, Caddy, Dockerfiles, and finally deploying it to Sevalla. So where do we start? In the local environment of course! šŸ¤“ Local development environment For the sake of simplicity, we'll assume you have a fresh Laravel app installed on your local machine, which connects to a PostgreSQL database to read/write some data. Before we move on, make sure you have a .env file in your project root with the following content: .env: ... DB_CONNECTION=pgsql ... Once that's verified, we can start building. šŸ¤“ ā˜•ļø It's always a good idea to have a local development environment that closely resembles your production environment. This way, you can catch any issues early on and avoid surprises when you deploy your app in production. To mimic the production setup we're going to use, we'll rely on Docker and Docker Compose. If you don't have Docker installed on your machine, you can download it from the official website. Running Laravel without the database First off, create a new file called compose.yml in the root of your Laravel project and add the following content: compose.yml: services: php: image: dunglas/frankenphp:php8.3-alpine command: php artisan serve --host 0.0.0.0 --port 8080 ports: - 8080:8080 volumes: - .:/app This configuration file defines a service called php that uses the dunglas/frankenphp:php8.3-alpine image, which is a lightweight FrankenPHP image that includes necessary extensions to run a Laravel app. We also expose port 8080 to access the app from the host machine. To test your configuration, try running the following command in your terminal: docker compose up [-d] You should see a Laravel error page explaining the connection was not established to the database because of a missing driver when you navigate to http://0.0.0.0:8080 in your browser. This is expected as we haven't connected our Laravel app to a database yet. Awesome, so far we've configured our Laravel app to be served by a FrankenPHP runtime running php artisan serve. Next, let's connect our local app with a PostgreSQL database! Running Laravel with the database To connect your Laravel app to a PostgreSQL database, we'll need to do a couple of things. First, we need to set the following environment variables in your .env file: .env: ... DB_CONNECTION=pgsql DB_HOST=db DB_PORT=5432 # default PostgreSQL port DB_DATABASE=main DB_USERNAME=admin DB_PASSWORD=password Following that, you'll need to add new services to your compose.yml file, and create a custom Dockerfile for your dev environment. Create and update the files with the following content: Dockerfile.dev: FROM dunglas/frankenphp:php8.3-alpine RUN install-php-extensions pdo_pgsql Dockerfile.dev is only meant to be used by your local/development environment, and it extends the dunglas/frankenphp:php8.3-alpine image to include the pdo_pgsql extension, which is required to connect to a PostgreSQL database. compose.yml: services: init: build: dockerfile: Dockerfile.dev command: php artisan migrate depends_on: db: condition: service_healthy volumes: - .:/app php: build: context: . dockerfile: Dockerfile.dev command: php artisan serve --host 0.0.0.0 --port 8080 ports: - 8080:8080 depends_on: init: condition: service_completed_successfully volumes: - .:/app db: image: postgres:16.4-alpine environment: POSTGRES_USER: admin POSTGRES_PASSWORD: password POSTGRES_DB: main volumes: - /var/lib/postgresql/data healthcheck: test: pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB interval: 1s There is a lot going on here, let's take a look at what has changed and why: We've updated the php service to use a custom Dockerfile called Dockerfile.dev to build a new image that includes the necessary extensions to connect to a PostgreSQL database. We've added a new service called db that uses the postgres:16.4-alpine image to run a PostgreSQL database. We've also defined some environment variables to set up the database user, password, and database name. We've created a new volume called db_data to persist the data in the database on your machine, and Docker could reuse it when you restart the services. A new service called init was also added that reuses Dockerfile.dev. This image is used to run the php artisan migrate command to run your database migrations. The depends_on key ensures that the db service is up and running before the migrations are run. The php service now depends on the init service to ensure that the database migrations are run before the Laravel app starts. We've added a health check to the db service to ensure that the PostgreSQL database is up and running before the init service runs the migrations. To test your configuration, run the following command in your terminal: docker compose up --build Your application should now be connecting to your PostgreSQL database, and your database migrations are always run. šŸŽ‰ Your local envnironment is now ready to mimic your production environment. You can now develop your app locally and test a really similar setup you'll use in production. Preparing for production It's time to make the necessary changes for your production environment. The first step is to tell Docker which directories it can safely ignore when building the production image. Create a new file called .dockerignore in the root of your Laravel project and add the following content: .dockerignore: vendor bootstrap/chache/* tests This file tells Docker to ignore the vendor, bootstrap/cache, and tests directories. Then, create a Dockerfile that will be used to build your production image: Dockerfile: FROM dunglas/frankenphp:php8.3-alpine ENV SERVER_NAME=":8080" RUN install-php-extensions @composer pdo_pgsql WORKDIR /app COPY . . RUN composer install \ --ignore-platform-reqs \ --optimize-autoloader \ --prefer-dist \ --no-interaction \ --no-progress \ --no-scripts This Dockerfile is similar to the Dockerfile.dev we created earlier, but it includes a few additional steps: As the FrankenPHP image uses Caddy as the default web server, we've set the SERVER_NAME environment variable to :8080 to instruct Caddy to listen on port 8080. We install the @composer PHP extension to install Composer in the image. composer install command is run to install the dependencies of your Laravel app. We've set the working directory to /app and copied the contents of your Laravel app to the image. To test your changes in your local environment, you'll need to produce a production build of your app. Run the following command in your terminal: docker build -t my-laravel-app . This command builds a new Docker image called my-laravel-app based on the Dockerfile in the current directory. To test your newly built production image, use the following command: docker run -p 8080:8080 -e APP_KEY=<your-app-key> my-laravel-app Replace <your-app-key> with the value of the APP_KEY environment variable in your .env file or grab a key from here. Visit 0.0.0.0:8080 in your browser, and your app should start in production mode. It may error due to the lack of a database connection, but that's expected. Deploying to the cloud Now that you have a production-ready Docker image, you can deploy it to a cloud provider. šŸš€ In this tutorial, we'll use Sevalla, a new cloud provider that offers a simple way to deploy Dockerfile-based deployments. As your app depends on a PostgreSQL database, you're better off provisioning a new PostgreSQL database on Sevalla first. Once you're logged in the Sevalla dashboard, Navigate to the Create database modal Select PostgreSQL database Confirm the settings and create the database Once your database is ready, you can create your Laravel app on Sevalla. Navigate to the Create app modal Select your app's repository from your preferred Git provider Make sure to select the same data-center your database is in Set the APP_KEY environment variable required by Laravel Select Dockerfile as build type Confirm the rest of the settings and hit "Deploy later" button If your app is ready, you can now connect it with your PostgreSQL database. Navigate to the app's page Go to the "Network" tab Click on the "Add connection" button and select your PostgreSQL database Confirm the settings and hit "Connect" Then, set the following environment variables in the "Environment variables" tab with your database's connection details: DB_CONNECTION DB_HOST DB_PORT DB_DATABASE DB_USERNAME DB_PASSWORD We recommned using the internal network address of your database as the DB_HOST value. This way, your app can connect to the database over a private network. The last step is to set up a Job process for your application to run the database mirgations before starting the app. Navigate to the "Processes" tab Click on the "Create process" button and select "Job" Set the command to php artisan migrate --force Set the start policy to "Before deployment" Confirm the settings and hit "Create" If this is also done, you can now initiate a manual deployment of your app in the Deployments tab. šŸŽ‰ If all went well, congrats! You've successfully prepared your Laravel app for the cloud. šŸš€ Conclusion In this article, we've explored: How to setup your local environment to mimic your production environment using Docker and docker compose. How to prepare your Laravel app for deployment in a cloud environment using Docker, FrankenPHP, and Caddy. We've also covered how to deploy your app to a cloud provider like Sevalla. By following these steps, you can take your Laravel app to new heights and enjoy the benefits of cloud-based deployments. šŸŒ¤ The post Prepare your Laravel app for the cloud appeared first on Laravel News. Join the Laravel Newsletter to get Laravel articles like this directly in your inbox.

Laravel raises a $57 million Series A from Accel
Laravel raises a $57 million Series A from Accel

Taylor tweeted this morning: "I'm excited to announce that Laravel has raised a $57M Series A in partnership with Accel." "I believe that Laravel is the most productive way to build full-stack web applications, and Laravel Cloud will be the platform for shipping those applications that this community deserves." Partnering with Accel has allowed Laravel start building a world-class engineering and leadership team that has resulted in Laravel Cloud (demoed at Laracon) and also another product that will be announced at Laracon AU in November. He also follows up with some important takeaways from the announcement. First, Iā€™m not going anywhere. Iā€™m still leading Laravel as CEO, and Iā€™m working closely with all of our teams to ensure weā€™re building the best products possible for our community. Second, we remain committed to open source. Since partnering with Accel, weā€™ve hired additional engineering support dedicated to open source development. I also remain the primary curator of all features in the Laravel framework. Inertia 2.0 and our first-party VS Code extension are a direct result of our increased open source engineering capacity. Accel deeply understands open source and developer focused tooling, with previous investments in Sentry, Vercel, and Linear. For more info on this, they've made a special announcement video with answers to some common questions: <iframe width="1238" height="696" src="https://www.youtube.com/embed/BCV_357WGaM" title="Laravel Special Announcement" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> Laravel Funding Q&A Taylor and Aaron Francis also did a live Q&A after the announcement video and here are some of the questions and answers. Where is the money going? They are scaling up the team by hiring in many positions and building out the new Laravel Cloud. They are also putting paid employees on the open-source side to continue working, building, and making Laravel even better. Did you take money because the company was struggling? No, Laravel was profitable, and the framework was growing, but Taylor felt like he had built everything he could at the level it was run at. He decided not to rest and wanted to take a bigger swing at building the things heā€™d always wanted to. Laravel Cloud? Laravel Cloud was designed from the ground up with a very low barrier so anyone can deploy. The sandbox tier is free, and you pay for compute at 1c an hour and 4c for the database. If your app isn't getting traffic, it will hibernate, and you have no charges. They want this to be affordable so every app built on Laravel can use it. Cloud is a serverful environment that gives you a traditional PHP experience but is fully managed behind the scenes. Is Forge or Vapor going away? They still have big plans for Forge and are not giving up. More details should come out early next year. What about GDPR, SOC2, and other things? All these are being looked into, and they will have them ready for Laravel Cloud. Will Laravel Cloud have spending limits? Yes, you can set spending limits and configure your applicationā€™s scale. So, you can set a limit on how viral you want your app to go before it fails. Laravel Cloud API? Yes, it will have an API. Why was it announced today and not when it was originally closed? They felt it was important to wait and announce once they had something to show for it. That way, they could show us the things they are building and working on and how they are helping grow the community. When are the products announced at Laracon coming out? Inertia 2 will be next month VS Code extension will be free, open source, and launched hopefully in early November. Laravel Cloud the first of next year. A new product coming to Laracon AU? It's not fully announced, but it will be around the monitoring space, and you will not have to use Laravel Cloud for it. Is Laravel going to keep the same release cycle? Yes, it will remain a major release in Q1 each year, with new minor releases each week. Does this change any other Laravel paid products? This is not something they are immediately focused on, and not any changes planned in the near term. With taking money, Accel now has a voice. What are their opinions, and is this going to change Laravel? Accel and Taylor are aligned on the products they are building. Accel is there to help make the best products possible. They believe in Laravel and what it can become and are there to assist in reaching that goal. What does this mean for PHP as an ecosystem? It shows that PHP is mature and works, and Taylorā€™s mission is to show that you can be more productive than you might even know. Laravel and PHP already have large companies using the stack, and it's going to help them continue to grow. Can Laravel buy PHP now? No, but Laravel wants to help them grow through marketing and other initiatives. But a company can't buy PHP. Laravel Herd for Linux? This is not on the short-term list of things to do, but it's not out of the question. Should the community be nervous about the funding? Taylor said Laravel is his lifeā€™s work and his greatest professional accomplishment. He wants Laravel to succeed now more than ever and is committed to continuing to make it awesome. This is a breaking story and we will update this as more information is out. The post Laravel raises a $57 million Series A from Accel appeared first on Laravel News. Join the Laravel Newsletter to get Laravel articles like this directly in your inbox.

Chaperone Eloquent Models in Laravel 11.22
Chaperone Eloquent Models in Laravel 11.22

The Laravel team released v11.22 this week, with the chaperone() Eloquent method for inverse relations, support for passing backed Enums to Queuable methods, the ability to pass backed Enums to route ->name() and ->domain() methods, and more. Chaperone Eloquent Relations <iframe width="1238" height="696" src="https://www.youtube.com/embed/bDa2X6_H0kU" title="Laravel Chaperone Method" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> Samuel Levy contributed the Eloquent inverse/chaperone model relation that Taylor demonstrated in his 2024 Larcon US keynote during the open-source part of the talk. public function comments(): HasMany { return $this->hasMany(Comment::class)->chaperone('post'); } The chaperone()/inverse() method avoids unexpected N+1 queries by linking back to the parent after the relationship query has run. The above relationship will link the appropriate Post model in the correct relation on Comment instances (with scopes intact). See Pull Request #51582 for more details. Support Backed Enum in the Queueable Trait Seth Phat contributed support for BackedEnum in Queuable trait methods: onQueue() onConnection() allOnQueue() allOnConnection() Here's an example from the pull request: use App\Enums\QueueConnection; use App\Enums\QueueName; // Before public function register() { $user = User::create([...]); SendWelcomeEmailJob::dispatch($user) ->withConnection(QueueConnection::REDIS->value) ->onQueue(QueueName::HIGH->value); } // After public function register() { $user = User::create([...]); SendWelcomeEmailJob::dispatch($user) ->withConnection(QueueConnection::REDIS) ->onQueue(QueueName::HIGH); } Allow Enums to be Passed to Routes @NickSdot contributed passing BackedEnum to Route domain() and name() methods: // Before Route::domain(InterfaceDomain::Marketing->value) ->name(Routes::Home->value) ->get('/contact', ContactController::class); // After Route::domain(InterfaceDomain::Marketing) ->name(Routes::Home) ->get('/'contact, ContactController::class); Release notes You can see the complete list of new features and updates below and the diff between 11.21.0 and 11.22.0 on GitHub. The following release notes are directly from the changelog: v11.22.0 [11.x] Fix FoundationServiceProvider docblock by @seriquynh in https://github.com/laravel/framework/pull/52542 [11.x] Fix ReflectionParameter @param type on Util::getContextualAttributeFromDependency() by @samsonasik in https://github.com/laravel/framework/pull/52541 [11.x] More specific parameter type in CastsInboundAttributes by @lorenzolosa in https://github.com/laravel/framework/pull/52536 [11.x] Unify prefetch API by @timacdonald in https://github.com/laravel/framework/pull/52550 [11.x] Add PDO subclass support for PHP 8.4 by @ju5t in https://github.com/laravel/framework/pull/52538 [11.x] Handle circular references in model serialization by @samlev in https://github.com/laravel/framework/pull/52461 [11.x] Eloquent inverse relations by @samlev in https://github.com/laravel/framework/pull/51582 [11.x] Feature/whereany closures by @liamduckett in https://github.com/laravel/framework/pull/52555 [11.x] Update remaining workflows to run on latest possible ubuntu version by @Jubeki in https://github.com/laravel/framework/pull/52566 Correct comments to better represent the updated method functionality by @dropweb in https://github.com/laravel/framework/pull/52564 [11.x] Support CSP nonce by @timacdonald in https://github.com/laravel/framework/pull/52558 [11.x] Allow enums to be passed to routes by @NickSdot in https://github.com/laravel/framework/pull/52561 [11.x] SORT_NATURAL on Collection no longer throws warning for nulls by @Chaplinski in https://github.com/laravel/framework/pull/52557 [11.x] Allow prefetch to start on custom event by @timacdonald in https://github.com/laravel/framework/pull/52574 [11.x] Fix regression in database assertions with custom model connections by @devfrey in https://github.com/laravel/framework/pull/52581 [11] Update DetectsLostConnections.php by @webartisan10 in https://github.com/laravel/framework/pull/52614 Fix docblock for Model::getEventDispatcher() by @inmula in https://github.com/laravel/framework/pull/52602 [11.x] Restore Request::HEADER_X_FORWARDED_PREFIX in TrustProxies by @taka-oyama in https://github.com/laravel/framework/pull/52598 [11.x] Accepts BackedEnum for onQueue, onConnection, allOnQueue, and allOnConnection methods in the Queueable trait by @sethsandaru in https://github.com/laravel/framework/pull/52604 [11.x] Use the same parameter type for 'throwUnless' as used for 'throwIf' by @pataar in https://github.com/laravel/framework/pull/52626 [11.x] Pass iterable keys to withProgressBar in InteractsWithIO by @robinmoisson in https://github.com/laravel/framework/pull/52623 [11.x] Fix docblock for Filesystem::hash() by @sunaoka in https://github.com/laravel/framework/pull/52630 Fix Apostrophe Handling in SeeInOrder.php and Enhance Test Coverage by @nomitoor in https://github.com/laravel/framework/pull/52627 [11.x] SQLite Error: "General error: 1 no such table" after adding a foreign key when using a table prefix. by @incrize in https://github.com/laravel/framework/pull/52578 The post Chaperone Eloquent Models in Laravel 11.22 appeared first on Laravel News. Join the Laravel Newsletter to get Laravel articles like this directly in your inbox.

The Laracon US 2024 Keynote by Taylor Otwell is Now Available
The Laracon US 2024 Keynote by Taylor Otwell is Now Available

If you missed the incredible Laracon US Keynote delivered by Laravel creator Taylor Otwell, you can now watch it in full on YouTube. The keynote is packed with new Laravel content, ranging from an Official VS Code extension to exciting framework updates like the defer() function, Inertia v2, and Laravel Cloud. [2024] has been a very busy year for us at Laravel. In fact, it probably marked the biggest shift in the company's history. At the very beginning of this year, Laravel as a company was me [Taylor Otwell] and like nine other people. Now we are a team of over thirty full-time employees...but why did we do this? Why did we hire so many new people? The reason is because we have been tackling some of the most ambitious and exciting projects that we've ever worked on as a company. <iframe width="560" height="315" src="https://www.youtube.com/embed/AwWepVU5uWM?si=qLKx_Pjmt2-bRKjV" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> The most significant announcement from the keynote is by far the reveal of Laravel Cloudā€”be sure to sign up for the waiting list after watching the keynote. If you want a quick overview of the keynote highlights, check out our Highlights from Taylor Otwell's Laracon US Keynote 2024 post. The post The Laracon US 2024 Keynote by Taylor Otwell is Now Available appeared first on Laravel News. Join the Laravel Newsletter to get Laravel articles like this directly in your inbox.

Everything We Know about Pest 3
Everything We Know about Pest 3

Nuno Maduro was the opening speaker at Laracon US 2024 on Tuesday, unveiling impressive new features for the upcoming Pest v3.0. Pest continues to grow in popularity, being downloaded over 18 million times and is the default testing framework in Laravel as of V11. Pest v3 takes another important leap forward with three impressive features coming to Pest 3: Task management Architecture Presets Mutation Testing Let's look at each of these features shared at Laracon US in more detail: Task Management Task management lets you track things like assignee, issue number, pull request number, and notes, directly on a test. Tracking tasks allows you to keep a history of work that will always be availabe in your test: test('some test 1', function () { // ... })->todo(assignee: 'paulredmond', issue: 13); it('returns a successful response', function () { $response = $this->get('/'); $response->assertStatus(200); })->todo( assignee:'paulredmond', issue:11, pr:1, note:'Need to assert the response body.' ); // Eric is a closer ā˜•ļø test('drives always go in the fairway', function () { // ... })->done(assignee: 'ericlbarnes', issue: 13); From the command line, you can filter tests by assignee or issue: $ pest --issue=11 $ pest --assignee=paulredmond --pr=1 $ pest --assignee=ericlbarnes $ pest --issue=13 $ pest --notes # returns tests with notes Architecture Presets Architecture presets are a way to quickly use the same architecture rules across multiple projects, and leverage popular presets like rules for Laravel, PHP, a strict PHP preset, or a relaxed preset. These will create more consistency in your code because they'll prevent you from doing things like leaving debug functions like phpinfo(), dd(), etc. You can use these presets using the arch()->preset() method: // Ensures PHP functions like die(), phpinfo(), etc. are not used arch()->preset()->php(); // Ensures functions like eval(), md5(), etc. are not used. arch()->preset()->security(); // Preset to validate things like resourceful controller methods, // enum organization, controller files have a `Controller` suffix, etc. arch()->preset()->laravel(); // Preset to ensure classes are final, strict typing, etc. arch()->preset()->strict(); // Preset to ensure strict types are not used, no final, no private methods. arch()->preset()->relaxed(); Presets speed up development because most rules you'd expect are already defined for you. Here's an example of the security preset failing because of the use of md5(): Here's an example of using the Strict preset, demonstrating a class that is not using the final keyword: Mutation Testing When mutation testing ships with Pest v3, it's going to blow your mind. Mark my words, when you run mutation tests on your codebase, this feature is going to make you cry, and then you won't be able to live without it. Even if your test suite reports 100% coverage, mutation testing will help you find gaps in your tests. It does so by removing code from your implementation, swapping logic around, and poking holes in your code to try to make your tests fail. Backwards Compatibility Near the end of his talk, Nuno mentioned that Pest 2 users will be able to upgrade without any backward compatibility breaks. Users should be able to update the package to require v3 and update composer dependencies. This is huge because fixing compatibility breaks in your testing tool can be painful, especially if you have a lot of tests. The future of Pest is bright with productive tools that level up your testing through mutations, make your application architecture more consistent, and help keep track of assignees and issues directly in your tests. Which feature are you most excited about? Let us know on your favorite social media app! The post Everything We Know about Pest 3 appeared first on Laravel News. Join the Laravel Newsletter to get Laravel articles like this directly in your inbox.

Introducing Laravel Cloud
Introducing Laravel Cloud

Taylor ended his Laracon 2024 keynote by unveiling Laravel Cloud, the Future of Shipping. The keynote was the first public demo of Laravel's new app platform for deploying Laravel apps instantly. During the demo, Taylor created a project and had a Laravel app up and running in 25 seconds šŸ¤Æ Ten years ago, Forge changed the game. Five years later, Vapor pushed the boundaries with serverless deployments. Now, weā€™re aiming higher than weā€™ve ever aimed before. Weā€™ve spent more than a decade listening to what developers want, and itā€™s simple: they just want to ship. No more wasting time on DevOps minutiae. No more tinkering with server configuration files, load balancers, or database backups. No more headaches. With Laravel Cloud thatā€™s no longer a dream, itā€™s a reality. <iframe width="560" height="315" src="https://www.youtube.com/embed/olaSFcQZQWQ?si=6D0ahWbqbGdAf0qP" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> Laravel Cloud is a fully managed infrastructure platform built for developers and teams who just want to ship their next big idea, and it's relentlessly optimized for Laravel and PHP. With Laravel Cloud, youā€™re not just deploying code, youā€™re embracing a future where infrastructure works for you, not the other way around. Auto-scaling? Done. DDoS protection? Standard. Push-to-deploy? Of course. Databases? Laravel Serverless Postgres scales your database on demand, all while you only pay for what you use. You can get on the Laravel Cloud waiting list on at cloud.laravel.com The post Introducing Laravel Cloud appeared first on Laravel News. Join the Laravel Newsletter to get Laravel articles like this directly in your inbox.