Expose is a beautiful, open source, tunnel application that allows you to share your local websites with others via the internet.
Since you can host the server yourself, you have full control over the domains that your shared sites will be available at. You can extend expose with additional features and middleware classes on the server and client side, to make it suit your specific needs.
Alan Shreve closed ngrok’s source code years ago, and every now-and-again an open source alternative pops on the scene. Add Expose to the list. It’s written in PHP and has a nice shine on it. But which of these SSH tunneling tools is best in class?
Ignition offers you a beautiful, customizable error page. It also allows you to share your errors to Flare publicly. If configured with a valid Flare API key, it will send errors to a project in your Flare account.
By giving Pipe Dream a minimum of input in form of a sketch/entity list it will predict your application schema and feed it into a set of pipes. These pipes will generate all the files needed to get started really quick.
Telescope provides insight into the requests coming into your application, exceptions, log entries, database queries, queued jobs, mail, notifications, cache operations, scheduled tasks, variable dumps and more.
Half my kingdom for a Telescope port to Rails and Phoenix/Plug.
RoadRunner is an open source (MIT licensed), high-performance PHP application server, load balancer and process manager. It supports running as a service with the ability to extend its functionality on a per-project basis.
RoadRunner is written in Go, and can be used to replace the class Nginx+FPM setup, boasting “much greater performance”. I’d love to see some benchmarks. Better yet, I’d love to see someone use this in production for a bit and write up their experience.
Have a bunch of web projects on your local development computer, nestled in your ~/Sites (or other-OS equivalent)? Just need a simple way to enumerate them as links so you don’t have to keep track of them as they get created/removed? OK with PHP? Localhost Index has your back.
You just built an API, and want to make sure everyone can use it. Building libraries in every language isn’t only going to be hard, its going to take a lot of time. Time you don’t have. This is where Alpaca can help.
You define your API according to the format, alpaca builds the API libraries along with their documentation. All you have to do is publishing them to their respective package managers.
Chris Corbyn was frustrated with PHP’s lack of a good REPL, so he took matters into his own hands and created Boris. I can relate to Chris’s experience. Back when I used to write WordPress plugins I got so frustrated by the lack of a Rails-like interactive console that I created one for WordPress.
Boris is cooler than my little plugin because it works outside of WordPress and runs directly in your terminal. Check it out in action:
You can install Boris via Packagist or use it directly by cloning the repo:
git clone git://github.com/d11wtq/boris.git
This and much more information about the REPL is available in the README. Boris is MIT licensed and hosted on GitHub.
Imagine is a nice looking image manipulation library for PHP 5.3+ that supports GD2, ImageMagick, and GraphicsMagick in a clean, chainable API from Bulat Shakirzyanov:
$imagine = new ImagineGdImagine();
$imagine = new ImagineImagickImagine();
$imagine = new ImagineGmagickImagine();
$size = new ImagineImageBox(40, 40);
$mode = ImagineImageImageInterface::THUMBNAIL_INSET;
$mode = ImagineImageImageInterface::THUMBNAIL_OUTBOUND;
I don’t always use WordPress, but when I do, I prefer Thematic (and compass-wordpress). Thematic is a WordPress theme framework from Ian Stewart that provides an abstracted API, letting you focus on your site instead of the lower-level minutia of WordPress.
I was excited when I stumbled across a couple of projects by Devin Price that let you easily expose an options panel for your theme. Thematic Options (and the non-Thematic Options Framework) make it easy to add an options panel for your theme settings, letting your end users customize your theme in the WordPress admin panel.
Options are declared in a PHP array, as in this example:
// Set the Options Array
$my_options = array();
$my_options = array( "name" => "General Settings",
"type" => "heading");
$my_options = array( "name" => "Custom Logo",
"desc" => "Upload a logo for your theme, or specify the image address of your online logo. (http://yoursite.com/logo.png)",
"id" => "logo",
"std" => "",
"type" => "upload");
$url = ADMIN . 'images/';
$my_options = array( "name" => "Main Layout",
"desc" => "Select main content and sidebar alignment. Choose between 1, 2 or 3 column layout.",
"id" => "layout",
"std" => "2c-l-fixed.css",
"type" => "images",
"options" => array(
'1col-fixed.css' => $url . '1col.png',
'2c-r-fixed.css' => $url . '2cr.png',
'2c-l-fixed.css' => $url . '2cl.png',
'3c-fixed.css' => $url . '3cm.png',
'3c-r-fixed.css' => $url . '3cr.png')
$my_options = array( "name" => "Custom Favicon",
"desc" => "Upload a 16px x 16px Png/Gif image that will represent your website's favicon.",
"id" => "custom_favicon",
"std" => "",
"type" => "upload");
$my_options = array( "name" => "Tracking Code",
"desc" => "Paste your Google Analytics (or other) tracking code here. This will be added into the footer template of your theme.",
"id" => "google_analytics",
"std" => "",
"type" => "textarea");