Repository files navigation

Sidecar for Laravel

TestsLatest Stable VersionTotal DownloadsLicense

Deploy and execute AWS Lambda functions from your Laravel application.

Read the full docs at hammerstone.dev/sidecar/docs.

Follow me on Twitter for more updates: twitter.com/aarondfrancis.

If you're a visual learner, watch the Laracasts series.

To install, simply require the package from composer: composer require hammerstone/sidecar

This package is still under development, please open issues for anything you run into.

What Sidecar Does

Sidecar packages, creates, deploys, and executes Lambda functions from your Laravel application.

You can write functions in any of the following runtimes and execute them straight from PHP:

  • Node.js 20
  • Node.js 18
  • Python 3.12
  • Python 3.11
  • Python 3.10
  • Python 3.9
  • Java 21
  • Java 17
  • Java 11
  • Java 8
  • .NET 8
  • .NET 6
  • Ruby 3.3
  • Ruby 3.2
  • OS-only runtime (Amazon Linux 2023)
  • OS-only runtime (Amazon Linux 2)

Any runtime that Lambda supports, you can use!

Sidecar is maintained by Aaron Francis, go follow me on Twitter!

What It Looks Like

Every Sidecar Function requires two things:

  • A PHP Class
  • Files that you want deployed to Lambda

For example, if we were wanting to use Node on Lambda to generate an og:image for all of our blog posts, we would first set up a simple class in PHP called OgImage.

App\Sidecar\OgImage.php

namespaceApp\Sidecar;
useHammerstone\Sidecar\LambdaFunction;
class OgImage extends LambdaFunction
{
publicfunctionhandler()
{
// Define your handler function.return'lambda/image.handler';
}
publicfunctionpackage()
{
// All files and folders needed for the function.return [
'lambda',
];
}
}

That's it! There are a lot more options, but that's all that is required.

The second thing you'd need is your function's "handler", in this case a javascript file.

Here's a simple JS file that could serve as our handler:

resources/lambda/image.js

const{createCanvas}=require('canvas')exports.handler=asyncfunction(event){constcanvas=createCanvas(1200,630)constcontext=canvas.getContext('2d')context.font='bold 70pt Helvetica'context.textAlign='center'context.fillStyle='#3574d4'// Read the text out of the event passed in from PHP.context.fillText(event.text,600,170);// Return an image.returncanvas.toDataURL('image/jpeg');}

With those files created, you can deploy this function to Lambda:

php artisan sidecar:deploy --activate

And then execute it straight from your Laravel app!

web.php

Route::get('/ogimage', function () {
return OgImage::execute([
'text' => 'PHP to JS and Back Again!'
]);
});

Sidecar passes the payload from execute over to your Javascript function. Your Javascript function generates an image and sends it back to PHP.

Sidecar reduces the complexity of deploying small bits of code to Lambda.

Why Sidecar Exists

AWS Lambda is a powerful service that allows you to run code without provisioning or thinking about servers.

Laravel Vapor brought that power to Laravel. Using Vapor, you can run your plain ol' Laravel apps on a serverless platform and get incredible speed, security, and reliability.

Using Lambda through Vapor is a wonderful developer experience, but there are times when building your applications that you need to run just one or two Node functions for some reason. Common use cases could be taking screenshots with headless Chrome, generating images, or doing server-side rendering of your Javascript frontend.

Or maybe you want to run a Python script without configuring a server? Or a single Ruby script. Or even Java!

When running on a serverless platform, it's not quite as easy as installing Node and running your functions. You don't have access to the server! So you end up deploying a single Vercel or Netlify function and calling it over HTTP or just forgetting the thing altogether.

Sidecar brings the ease of Vapor to those non-PHP functions.

What Sidecar Doesn't Do

Sidecar does not handle any API Gateway, Databases, Caches, etc. The only thing Sidecar concerns itself with is packaging, creating, deploying, and executing Lambda functions.

Sidecar does not provide a way to execute a function via HTTP. You must execute it from your Laravel app through the provided methods.

If you need those other services, you are encouraged to use the instances that Vapor has set up for you, or set them up yourself.

About

Deploy and execute AWS Lambda functions from your Laravel application.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Sidecar for Laravel

TestsLatest Stable VersionTotal DownloadsLicense

Deploy and execute AWS Lambda functions from your Laravel application.

Read the full docs at hammerstone.dev/sidecar/docs.

Follow me on Twitter for more updates: twitter.com/aarondfrancis.

If you're a visual learner, watch the Laracasts series.

To install, simply require the package from composer: composer require hammerstone/sidecar

This package is still under development, please open issues for anything you run into.

What Sidecar Does

Sidecar packages, creates, deploys, and executes Lambda functions from your Laravel application.

You can write functions in any of the following runtimes and execute them straight from PHP:

  • Node.js 20
  • Node.js 18
  • Python 3.12
  • Python 3.11
  • Python 3.10
  • Python 3.9
  • Java 21
  • Java 17
  • Java 11
  • Java 8
  • .NET 8
  • .NET 6
  • Ruby 3.3
  • Ruby 3.2
  • OS-only runtime (Amazon Linux 2023)
  • OS-only runtime (Amazon Linux 2)

Any runtime that Lambda supports, you can use!

Sidecar is maintained by Aaron Francis, go follow me on Twitter!

What It Looks Like

Every Sidecar Function requires two things:

  • A PHP Class
  • Files that you want deployed to Lambda

For example, if we were wanting to use Node on Lambda to generate an og:image for all of our blog posts, we would first set up a simple class in PHP called OgImage.

App\Sidecar\OgImage.php

namespaceApp\Sidecar;
useHammerstone\Sidecar\LambdaFunction;
class OgImage extends LambdaFunction
{
publicfunctionhandler()
{
// Define your handler function.return'lambda/image.handler';
}
publicfunctionpackage()
{
// All files and folders needed for the function.return [
'lambda',
];
}
}

That's it! There are a lot more options, but that's all that is required.

The second thing you'd need is your function's "handler", in this case a javascript file.

Here's a simple JS file that could serve as our handler:

resources/lambda/image.js

const{createCanvas}=require('canvas')exports.handler=asyncfunction(event){constcanvas=createCanvas(1200,630)constcontext=canvas.getContext('2d')context.font='bold 70pt Helvetica'context.textAlign='center'context.fillStyle='#3574d4'// Read the text out of the event passed in from PHP.context.fillText(event.text,600,170);// Return an image.returncanvas.toDataURL('image/jpeg');}

With those files created, you can deploy this function to Lambda:

php artisan sidecar:deploy --activate

And then execute it straight from your Laravel app!

web.php

Route::get('/ogimage', function () {
return OgImage::execute([
'text' => 'PHP to JS and Back Again!'
]);
});

Sidecar passes the payload from execute over to your Javascript function. Your Javascript function generates an image and sends it back to PHP.

Sidecar reduces the complexity of deploying small bits of code to Lambda.

Why Sidecar Exists

AWS Lambda is a powerful service that allows you to run code without provisioning or thinking about servers.

Laravel Vapor brought that power to Laravel. Using Vapor, you can run your plain ol' Laravel apps on a serverless platform and get incredible speed, security, and reliability.

Using Lambda through Vapor is a wonderful developer experience, but there are times when building your applications that you need to run just one or two Node functions for some reason. Common use cases could be taking screenshots with headless Chrome, generating images, or doing server-side rendering of your Javascript frontend.

Or maybe you want to run a Python script without configuring a server? Or a single Ruby script. Or even Java!

When running on a serverless platform, it's not quite as easy as installing Node and running your functions. You don't have access to the server! So you end up deploying a single Vercel or Netlify function and calling it over HTTP or just forgetting the thing altogether.

Sidecar brings the ease of Vapor to those non-PHP functions.

What Sidecar Doesn't Do

Sidecar does not handle any API Gateway, Databases, Caches, etc. The only thing Sidecar concerns itself with is packaging, creating, deploying, and executing Lambda functions.

Sidecar does not provide a way to execute a function via HTTP. You must execute it from your Laravel app through the provided methods.

If you need those other services, you are encouraged to use the instances that Vapor has set up for you, or set them up yourself.

About

Deploy and execute AWS Lambda functions from your Laravel application.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Sidecar for Laravel

TestsLatest Stable VersionTotal DownloadsLicense

Deploy and execute AWS Lambda functions from your Laravel application.

Read the full docs at hammerstone.dev/sidecar/docs.

Follow me on Twitter for more updates: twitter.com/aarondfrancis.

If you're a visual learner, watch the Laracasts series.

To install, simply require the package from composer: composer require hammerstone/sidecar

This package is still under development, please open issues for anything you run into.

What Sidecar Does

Sidecar packages, creates, deploys, and executes Lambda functions from your Laravel application.

You can write functions in any of the following runtimes and execute them straight from PHP:

  • Node.js 20
  • Node.js 18
  • Python 3.12
  • Python 3.11
  • Python 3.10
  • Python 3.9
  • Java 21
  • Java 17
  • Java 11
  • Java 8
  • .NET 8
  • .NET 6
  • Ruby 3.3
  • Ruby 3.2
  • OS-only runtime (Amazon Linux 2023)
  • OS-only runtime (Amazon Linux 2)

Any runtime that Lambda supports, you can use!

Sidecar is maintained by Aaron Francis, go follow me on Twitter!

What It Looks Like

Every Sidecar Function requires two things:

  • A PHP Class
  • Files that you want deployed to Lambda

For example, if we were wanting to use Node on Lambda to generate an og:image for all of our blog posts, we would first set up a simple class in PHP called OgImage.

App\Sidecar\OgImage.php

namespaceApp\Sidecar;
useHammerstone\Sidecar\LambdaFunction;
class OgImage extends LambdaFunction
{
publicfunctionhandler()
{
// Define your handler function.return'lambda/image.handler';
}
publicfunctionpackage()
{
// All files and folders needed for the function.return [
'lambda',
];
}
}

That's it! There are a lot more options, but that's all that is required.

The second thing you'd need is your function's "handler", in this case a javascript file.

Here's a simple JS file that could serve as our handler:

resources/lambda/image.js

const{createCanvas}=require('canvas')exports.handler=asyncfunction(event){constcanvas=createCanvas(1200,630)constcontext=canvas.getContext('2d')context.font='bold 70pt Helvetica'context.textAlign='center'context.fillStyle='#3574d4'// Read the text out of the event passed in from PHP.context.fillText(event.text,600,170);// Return an image.returncanvas.toDataURL('image/jpeg');}

With those files created, you can deploy this function to Lambda:

php artisan sidecar:deploy --activate

And then execute it straight from your Laravel app!

web.php

Route::get('/ogimage', function () {
return OgImage::execute([
'text' => 'PHP to JS and Back Again!'
]);
});

Sidecar passes the payload from execute over to your Javascript function. Your Javascript function generates an image and sends it back to PHP.

Sidecar reduces the complexity of deploying small bits of code to Lambda.

Why Sidecar Exists

AWS Lambda is a powerful service that allows you to run code without provisioning or thinking about servers.

Laravel Vapor brought that power to Laravel. Using Vapor, you can run your plain ol' Laravel apps on a serverless platform and get incredible speed, security, and reliability.

Using Lambda through Vapor is a wonderful developer experience, but there are times when building your applications that you need to run just one or two Node functions for some reason. Common use cases could be taking screenshots with headless Chrome, generating images, or doing server-side rendering of your Javascript frontend.

Or maybe you want to run a Python script without configuring a server? Or a single Ruby script. Or even Java!

When running on a serverless platform, it's not quite as easy as installing Node and running your functions. You don't have access to the server! So you end up deploying a single Vercel or Netlify function and calling it over HTTP or just forgetting the thing altogether.

Sidecar brings the ease of Vapor to those non-PHP functions.

What Sidecar Doesn't Do

Sidecar does not handle any API Gateway, Databases, Caches, etc. The only thing Sidecar concerns itself with is packaging, creating, deploying, and executing Lambda functions.

Sidecar does not provide a way to execute a function via HTTP. You must execute it from your Laravel app through the provided methods.

If you need those other services, you are encouraged to use the instances that Vapor has set up for you, or set them up yourself.

About

Deploy and execute AWS Lambda functions from your Laravel application.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Sidecar for Laravel

TestsLatest Stable VersionTotal DownloadsLicense

Deploy and execute AWS Lambda functions from your Laravel application.

Read the full docs at hammerstone.dev/sidecar/docs.

Follow me on Twitter for more updates: twitter.com/aarondfrancis.

If you're a visual learner, watch the Laracasts series.

To install, simply require the package from composer: composer require hammerstone/sidecar

This package is still under development, please open issues for anything you run into.

What Sidecar Does

Sidecar packages, creates, deploys, and executes Lambda functions from your Laravel application.

You can write functions in any of the following runtimes and execute them straight from PHP:

  • Node.js 20
  • Node.js 18
  • Python 3.12
  • Python 3.11
  • Python 3.10
  • Python 3.9
  • Java 21
  • Java 17
  • Java 11
  • Java 8
  • .NET 8
  • .NET 6
  • Ruby 3.3
  • Ruby 3.2
  • OS-only runtime (Amazon Linux 2023)
  • OS-only runtime (Amazon Linux 2)

Any runtime that Lambda supports, you can use!

Sidecar is maintained by Aaron Francis, go follow me on Twitter!

What It Looks Like

Every Sidecar Function requires two things:

  • A PHP Class
  • Files that you want deployed to Lambda

For example, if we were wanting to use Node on Lambda to generate an og:image for all of our blog posts, we would first set up a simple class in PHP called OgImage.

App\Sidecar\OgImage.php

namespaceApp\Sidecar;
useHammerstone\Sidecar\LambdaFunction;
class OgImage extends LambdaFunction
{
publicfunctionhandler()
{
// Define your handler function.return'lambda/image.handler';
}
publicfunctionpackage()
{
// All files and folders needed for the function.return [
'lambda',
];
}
}

That's it! There are a lot more options, but that's all that is required.

The second thing you'd need is your function's "handler", in this case a javascript file.

Here's a simple JS file that could serve as our handler:

resources/lambda/image.js

const{createCanvas}=require('canvas')exports.handler=asyncfunction(event){constcanvas=createCanvas(1200,630)constcontext=canvas.getContext('2d')context.font='bold 70pt Helvetica'context.textAlign='center'context.fillStyle='#3574d4'// Read the text out of the event passed in from PHP.context.fillText(event.text,600,170);// Return an image.returncanvas.toDataURL('image/jpeg');}

With those files created, you can deploy this function to Lambda:

php artisan sidecar:deploy --activate

And then execute it straight from your Laravel app!

web.php

Route::get('/ogimage', function () {
return OgImage::execute([
'text' => 'PHP to JS and Back Again!'
]);
});

Sidecar passes the payload from execute over to your Javascript function. Your Javascript function generates an image and sends it back to PHP.

Sidecar reduces the complexity of deploying small bits of code to Lambda.

Why Sidecar Exists

AWS Lambda is a powerful service that allows you to run code without provisioning or thinking about servers.

Laravel Vapor brought that power to Laravel. Using Vapor, you can run your plain ol' Laravel apps on a serverless platform and get incredible speed, security, and reliability.

Using Lambda through Vapor is a wonderful developer experience, but there are times when building your applications that you need to run just one or two Node functions for some reason. Common use cases could be taking screenshots with headless Chrome, generating images, or doing server-side rendering of your Javascript frontend.

Or maybe you want to run a Python script without configuring a server? Or a single Ruby script. Or even Java!

When running on a serverless platform, it's not quite as easy as installing Node and running your functions. You don't have access to the server! So you end up deploying a single Vercel or Netlify function and calling it over HTTP or just forgetting the thing altogether.

Sidecar brings the ease of Vapor to those non-PHP functions.

What Sidecar Doesn't Do

Sidecar does not handle any API Gateway, Databases, Caches, etc. The only thing Sidecar concerns itself with is packaging, creating, deploying, and executing Lambda functions.

Sidecar does not provide a way to execute a function via HTTP. You must execute it from your Laravel app through the provided methods.

If you need those other services, you are encouraged to use the instances that Vapor has set up for you, or set them up yourself.

About

Deploy and execute AWS Lambda functions from your Laravel application.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Sidecar for Laravel

TestsLatest Stable VersionTotal DownloadsLicense

Deploy and execute AWS Lambda functions from your Laravel application.

Read the full docs at hammerstone.dev/sidecar/docs.

Follow me on Twitter for more updates: twitter.com/aarondfrancis.

If you're a visual learner, watch the Laracasts series.

To install, simply require the package from composer: composer require hammerstone/sidecar

This package is still under development, please open issues for anything you run into.

What Sidecar Does

Sidecar packages, creates, deploys, and executes Lambda functions from your Laravel application.

You can write functions in any of the following runtimes and execute them straight from PHP:

  • Node.js 20
  • Node.js 18
  • Python 3.12
  • Python 3.11
  • Python 3.10
  • Python 3.9
  • Java 21
  • Java 17
  • Java 11
  • Java 8
  • .NET 8
  • .NET 6
  • Ruby 3.3
  • Ruby 3.2
  • OS-only runtime (Amazon Linux 2023)
  • OS-only runtime (Amazon Linux 2)

Any runtime that Lambda supports, you can use!

Sidecar is maintained by Aaron Francis, go follow me on Twitter!

What It Looks Like

Every Sidecar Function requires two things:

  • A PHP Class
  • Files that you want deployed to Lambda

For example, if we were wanting to use Node on Lambda to generate an og:image for all of our blog posts, we would first set up a simple class in PHP called OgImage.

App\Sidecar\OgImage.php

namespaceApp\Sidecar;
useHammerstone\Sidecar\LambdaFunction;
class OgImage extends LambdaFunction
{
publicfunctionhandler()
{
// Define your handler function.return'lambda/image.handler';
}
publicfunctionpackage()
{
// All files and folders needed for the function.return [
'lambda',
];
}
}

That's it! There are a lot more options, but that's all that is required.

The second thing you'd need is your function's "handler", in this case a javascript file.

Here's a simple JS file that could serve as our handler:

resources/lambda/image.js

const{createCanvas}=require('canvas')exports.handler=asyncfunction(event){constcanvas=createCanvas(1200,630)constcontext=canvas.getContext('2d')context.font='bold 70pt Helvetica'context.textAlign='center'context.fillStyle='#3574d4'// Read the text out of the event passed in from PHP.context.fillText(event.text,600,170);// Return an image.returncanvas.toDataURL('image/jpeg');}

With those files created, you can deploy this function to Lambda:

php artisan sidecar:deploy --activate

And then execute it straight from your Laravel app!

web.php

Route::get('/ogimage', function () {
return OgImage::execute([
'text' => 'PHP to JS and Back Again!'
]);
});

Sidecar passes the payload from execute over to your Javascript function. Your Javascript function generates an image and sends it back to PHP.

Sidecar reduces the complexity of deploying small bits of code to Lambda.

Why Sidecar Exists

AWS Lambda is a powerful service that allows you to run code without provisioning or thinking about servers.

Laravel Vapor brought that power to Laravel. Using Vapor, you can run your plain ol' Laravel apps on a serverless platform and get incredible speed, security, and reliability.

Using Lambda through Vapor is a wonderful developer experience, but there are times when building your applications that you need to run just one or two Node functions for some reason. Common use cases could be taking screenshots with headless Chrome, generating images, or doing server-side rendering of your Javascript frontend.

Or maybe you want to run a Python script without configuring a server? Or a single Ruby script. Or even Java!

When running on a serverless platform, it's not quite as easy as installing Node and running your functions. You don't have access to the server! So you end up deploying a single Vercel or Netlify function and calling it over HTTP or just forgetting the thing altogether.

Sidecar brings the ease of Vapor to those non-PHP functions.

What Sidecar Doesn't Do

Sidecar does not handle any API Gateway, Databases, Caches, etc. The only thing Sidecar concerns itself with is packaging, creating, deploying, and executing Lambda functions.

Sidecar does not provide a way to execute a function via HTTP. You must execute it from your Laravel app through the provided methods.

If you need those other services, you are encouraged to use the instances that Vapor has set up for you, or set them up yourself.

About

Deploy and execute AWS Lambda functions from your Laravel application.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Sidecar for Laravel

TestsLatest Stable VersionTotal DownloadsLicense

Deploy and execute AWS Lambda functions from your Laravel application.

Read the full docs at hammerstone.dev/sidecar/docs.

Follow me on Twitter for more updates: twitter.com/aarondfrancis.

If you're a visual learner, watch the Laracasts series.

To install, simply require the package from composer: composer require hammerstone/sidecar

This package is still under development, please open issues for anything you run into.

What Sidecar Does

Sidecar packages, creates, deploys, and executes Lambda functions from your Laravel application.

You can write functions in any of the following runtimes and execute them straight from PHP:

  • Node.js 20
  • Node.js 18
  • Python 3.12
  • Python 3.11
  • Python 3.10
  • Python 3.9
  • Java 21
  • Java 17
  • Java 11
  • Java 8
  • .NET 8
  • .NET 6
  • Ruby 3.3
  • Ruby 3.2
  • OS-only runtime (Amazon Linux 2023)
  • OS-only runtime (Amazon Linux 2)

Any runtime that Lambda supports, you can use!

Sidecar is maintained by Aaron Francis, go follow me on Twitter!

What It Looks Like

Every Sidecar Function requires two things:

  • A PHP Class
  • Files that you want deployed to Lambda

For example, if we were wanting to use Node on Lambda to generate an og:image for all of our blog posts, we would first set up a simple class in PHP called OgImage.

App\Sidecar\OgImage.php

namespaceApp\Sidecar;
useHammerstone\Sidecar\LambdaFunction;
class OgImage extends LambdaFunction
{
publicfunctionhandler()
{
// Define your handler function.return'lambda/image.handler';
}
publicfunctionpackage()
{
// All files and folders needed for the function.return [
'lambda',
];
}
}

That's it! There are a lot more options, but that's all that is required.

The second thing you'd need is your function's "handler", in this case a javascript file.

Here's a simple JS file that could serve as our handler:

resources/lambda/image.js

const{createCanvas}=require('canvas')exports.handler=asyncfunction(event){constcanvas=createCanvas(1200,630)constcontext=canvas.getContext('2d')context.font='bold 70pt Helvetica'context.textAlign='center'context.fillStyle='#3574d4'// Read the text out of the event passed in from PHP.context.fillText(event.text,600,170);// Return an image.returncanvas.toDataURL('image/jpeg');}

With those files created, you can deploy this function to Lambda:

php artisan sidecar:deploy --activate

And then execute it straight from your Laravel app!

web.php

Route::get('/ogimage', function () {
return OgImage::execute([
'text' => 'PHP to JS and Back Again!'
]);
});

Sidecar passes the payload from execute over to your Javascript function. Your Javascript function generates an image and sends it back to PHP.

Sidecar reduces the complexity of deploying small bits of code to Lambda.

Why Sidecar Exists

AWS Lambda is a powerful service that allows you to run code without provisioning or thinking about servers.

Laravel Vapor brought that power to Laravel. Using Vapor, you can run your plain ol' Laravel apps on a serverless platform and get incredible speed, security, and reliability.

Using Lambda through Vapor is a wonderful developer experience, but there are times when building your applications that you need to run just one or two Node functions for some reason. Common use cases could be taking screenshots with headless Chrome, generating images, or doing server-side rendering of your Javascript frontend.

Or maybe you want to run a Python script without configuring a server? Or a single Ruby script. Or even Java!

When running on a serverless platform, it's not quite as easy as installing Node and running your functions. You don't have access to the server! So you end up deploying a single Vercel or Netlify function and calling it over HTTP or just forgetting the thing altogether.

Sidecar brings the ease of Vapor to those non-PHP functions.

What Sidecar Doesn't Do

Sidecar does not handle any API Gateway, Databases, Caches, etc. The only thing Sidecar concerns itself with is packaging, creating, deploying, and executing Lambda functions.

Sidecar does not provide a way to execute a function via HTTP. You must execute it from your Laravel app through the provided methods.

If you need those other services, you are encouraged to use the instances that Vapor has set up for you, or set them up yourself.

About

Deploy and execute AWS Lambda functions from your Laravel application.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Sidecar for Laravel

TestsLatest Stable VersionTotal DownloadsLicense

Deploy and execute AWS Lambda functions from your Laravel application.

Read the full docs at hammerstone.dev/sidecar/docs.

Follow me on Twitter for more updates: twitter.com/aarondfrancis.

If you're a visual learner, watch the Laracasts series.

To install, simply require the package from composer: composer require hammerstone/sidecar

This package is still under development, please open issues for anything you run into.

What Sidecar Does

Sidecar packages, creates, deploys, and executes Lambda functions from your Laravel application.

You can write functions in any of the following runtimes and execute them straight from PHP:

  • Node.js 20
  • Node.js 18
  • Python 3.12
  • Python 3.11
  • Python 3.10
  • Python 3.9
  • Java 21
  • Java 17
  • Java 11
  • Java 8
  • .NET 8
  • .NET 6
  • Ruby 3.3
  • Ruby 3.2
  • OS-only runtime (Amazon Linux 2023)
  • OS-only runtime (Amazon Linux 2)

Any runtime that Lambda supports, you can use!

Sidecar is maintained by Aaron Francis, go follow me on Twitter!

What It Looks Like

Every Sidecar Function requires two things:

  • A PHP Class
  • Files that you want deployed to Lambda

For example, if we were wanting to use Node on Lambda to generate an og:image for all of our blog posts, we would first set up a simple class in PHP called OgImage.

App\Sidecar\OgImage.php

namespaceApp\Sidecar;
useHammerstone\Sidecar\LambdaFunction;
class OgImage extends LambdaFunction
{
publicfunctionhandler()
{
// Define your handler function.return'lambda/image.handler';
}
publicfunctionpackage()
{
// All files and folders needed for the function.return [
'lambda',
];
}
}

That's it! There are a lot more options, but that's all that is required.

The second thing you'd need is your function's "handler", in this case a javascript file.

Here's a simple JS file that could serve as our handler:

resources/lambda/image.js

const{createCanvas}=require('canvas')exports.handler=asyncfunction(event){constcanvas=createCanvas(1200,630)constcontext=canvas.getContext('2d')context.font='bold 70pt Helvetica'context.textAlign='center'context.fillStyle='#3574d4'// Read the text out of the event passed in from PHP.context.fillText(event.text,600,170);// Return an image.returncanvas.toDataURL('image/jpeg');}

With those files created, you can deploy this function to Lambda:

php artisan sidecar:deploy --activate

And then execute it straight from your Laravel app!

web.php

Route::get('/ogimage', function () {
return OgImage::execute([
'text' => 'PHP to JS and Back Again!'
]);
});

Sidecar passes the payload from execute over to your Javascript function. Your Javascript function generates an image and sends it back to PHP.

Sidecar reduces the complexity of deploying small bits of code to Lambda.

Why Sidecar Exists

AWS Lambda is a powerful service that allows you to run code without provisioning or thinking about servers.

Laravel Vapor brought that power to Laravel. Using Vapor, you can run your plain ol' Laravel apps on a serverless platform and get incredible speed, security, and reliability.

Using Lambda through Vapor is a wonderful developer experience, but there are times when building your applications that you need to run just one or two Node functions for some reason. Common use cases could be taking screenshots with headless Chrome, generating images, or doing server-side rendering of your Javascript frontend.

Or maybe you want to run a Python script without configuring a server? Or a single Ruby script. Or even Java!

When running on a serverless platform, it's not quite as easy as installing Node and running your functions. You don't have access to the server! So you end up deploying a single Vercel or Netlify function and calling it over HTTP or just forgetting the thing altogether.

Sidecar brings the ease of Vapor to those non-PHP functions.

What Sidecar Doesn't Do

Sidecar does not handle any API Gateway, Databases, Caches, etc. The only thing Sidecar concerns itself with is packaging, creating, deploying, and executing Lambda functions.

Sidecar does not provide a way to execute a function via HTTP. You must execute it from your Laravel app through the provided methods.

If you need those other services, you are encouraged to use the instances that Vapor has set up for you, or set them up yourself.

About

Deploy and execute AWS Lambda functions from your Laravel application.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Sidecar for Laravel

TestsLatest Stable VersionTotal DownloadsLicense

Deploy and execute AWS Lambda functions from your Laravel application.

Read the full docs at hammerstone.dev/sidecar/docs.

Follow me on Twitter for more updates: twitter.com/aarondfrancis.

If you're a visual learner, watch the Laracasts series.

To install, simply require the package from composer: composer require hammerstone/sidecar

This package is still under development, please open issues for anything you run into.

What Sidecar Does

Sidecar packages, creates, deploys, and executes Lambda functions from your Laravel application.

You can write functions in any of the following runtimes and execute them straight from PHP:

  • Node.js 20
  • Node.js 18
  • Python 3.12
  • Python 3.11
  • Python 3.10
  • Python 3.9
  • Java 21
  • Java 17
  • Java 11
  • Java 8
  • .NET 8
  • .NET 6
  • Ruby 3.3
  • Ruby 3.2
  • OS-only runtime (Amazon Linux 2023)
  • OS-only runtime (Amazon Linux 2)

Any runtime that Lambda supports, you can use!

Sidecar is maintained by Aaron Francis, go follow me on Twitter!

What It Looks Like

Every Sidecar Function requires two things:

  • A PHP Class
  • Files that you want deployed to Lambda

For example, if we were wanting to use Node on Lambda to generate an og:image for all of our blog posts, we would first set up a simple class in PHP called OgImage.

App\Sidecar\OgImage.php

namespaceApp\Sidecar;
useHammerstone\Sidecar\LambdaFunction;
class OgImage extends LambdaFunction
{
publicfunctionhandler()
{
// Define your handler function.return'lambda/image.handler';
}
publicfunctionpackage()
{
// All files and folders needed for the function.return [
'lambda',
];
}
}

That's it! There are a lot more options, but that's all that is required.

The second thing you'd need is your function's "handler", in this case a javascript file.

Here's a simple JS file that could serve as our handler:

resources/lambda/image.js

const{createCanvas}=require('canvas')exports.handler=asyncfunction(event){constcanvas=createCanvas(1200,630)constcontext=canvas.getContext('2d')context.font='bold 70pt Helvetica'context.textAlign='center'context.fillStyle='#3574d4'// Read the text out of the event passed in from PHP.context.fillText(event.text,600,170);// Return an image.returncanvas.toDataURL('image/jpeg');}

With those files created, you can deploy this function to Lambda:

php artisan sidecar:deploy --activate

And then execute it straight from your Laravel app!

web.php

Route::get('/ogimage', function () {
return OgImage::execute([
'text' => 'PHP to JS and Back Again!'
]);
});

Sidecar passes the payload from execute over to your Javascript function. Your Javascript function generates an image and sends it back to PHP.

Sidecar reduces the complexity of deploying small bits of code to Lambda.

Why Sidecar Exists

AWS Lambda is a powerful service that allows you to run code without provisioning or thinking about servers.

Laravel Vapor brought that power to Laravel. Using Vapor, you can run your plain ol' Laravel apps on a serverless platform and get incredible speed, security, and reliability.

Using Lambda through Vapor is a wonderful developer experience, but there are times when building your applications that you need to run just one or two Node functions for some reason. Common use cases could be taking screenshots with headless Chrome, generating images, or doing server-side rendering of your Javascript frontend.

Or maybe you want to run a Python script without configuring a server? Or a single Ruby script. Or even Java!

When running on a serverless platform, it's not quite as easy as installing Node and running your functions. You don't have access to the server! So you end up deploying a single Vercel or Netlify function and calling it over HTTP or just forgetting the thing altogether.

Sidecar brings the ease of Vapor to those non-PHP functions.

What Sidecar Doesn't Do

Sidecar does not handle any API Gateway, Databases, Caches, etc. The only thing Sidecar concerns itself with is packaging, creating, deploying, and executing Lambda functions.

Sidecar does not provide a way to execute a function via HTTP. You must execute it from your Laravel app through the provided methods.

If you need those other services, you are encouraged to use the instances that Vapor has set up for you, or set them up yourself.

About

Deploy and execute AWS Lambda functions from your Laravel application.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages