How it works

LaraSurf combines Docker, CircleCI, and AWS to create an end-to-end solution for generating, deploying, and iterating upon Laravel applications. No more fiddling with different software versions and dockerizing new applications; LaraSurf provides everything needed to spin up a new project and start implementation as quickly as possible.

Project Generation

LaraSurf projects start with configuring your desired options. A fresh Laravel project is generated by running the provided project generation command. When the command has finished, you'll have a ready-to-go development environment that mirrors what will be deployed to the cloud.

Assumed Needs

LaraSurf projects come with a preconfigured CloudFormation template, a preconfigured CircleCI configuration, and CLI commands to help along the way.

Out of the box, LaraSurf assumes your project will need all of the following:

  • Application Load Balancer
  • Webserver (NGINX)
  • FastCGI daemon for
    PHP 8.1 (PHP-FPM)
  • MySQL 8 database
  • Private S3 bucket
  • Redis cluster
  • Queue worker support
  • Scheduled commands
  • Environment variables
  • Centralized Logging
  • DNS record
  • TLS certificate
  • Outbound emails
  • Vulnerability scanning
  • CI/CD

But don't worry, you are free to customize the provided CloudFormation template and CircleCI configuration however you see fit.

Cloud Infrastructure

The default cloud infrastructure that will be created by LaraSurf is, at a high level, outlined in the below diagram.

CircleCI Pipeline

The default CircleCI pipeline as configured by LaraSurf will required container images, run PHPUnit tests, publish container images, scan container images and dependencies for known vulnerabilities, update the relevant CloudFormation stack (including environment variables), and run database migrations.

A high level diagram outlining this pipeline is below.

Before getting started with LaraSurf, you are strongly encouraged to read the documentation.

If you encounter a bug or need some help troubleshooting don't hesitate to open an issue on GitHub. Happy building!

Back to Top