Laravel The world's most powerful Laravel development platform.
The Streams Platform is a comprehensive suite of tooling, services, and utilities for building powerful applications in record time with Laravel.
We've taken great care in making sure to remain 100% transparent to Laravel.
- We love, use, and promote everything you love about Laravel.
- Mix and match Streams in Laravel and vice versa.
- Works well within deployment environments.
- Leverage composer to manage common addon dependencies.
Application Engine
The Streams Platform is kind of like the heart of Pyro.
Streams is a package that provides Pyro's addon architecture, UI builders, numerous services, heightened HTTP and console kernels, and much much more.
Browse CodeRapid Development Quickly scaffold components with Artisan.
Our CLI tools let you build addons and data structures literally in seconds. Just tweak as needed and ship it.
Lightning fast time to market means you can say yes more often to those customer needs that just can't be found on the shelf.
- Drastically reduce time to market for anything.
- Best-practice design patterns by default.
- Perfect for prototyping and delivery alike.
- 99% of what you need from a single command.
Transparent Workflow A familiar workflow made better.
Streams leverages migrations to build up the database and models automatically using field types and field assignments.
- Schema is automated for you based on stream components.
- Models are generated for you ready to extend and put to work.
- Entry models directly extend Eloquent.
- Push project addons to GitHub and other dev machines.
- Leverage composer to manage common addon dependencies.
// Create an addon.
php artisan make:addon pyro.module.products
// Create a stream within your addon.
php artisan make:addon products pyro.module.products
-----------------------------------------------------------------------------
// Behold.
ls -R addons/default/pyro/products-module/
// PSR-4
composer.json
// Stream and field / assignment migrations.
./migrations/2017_01_09_062245_pyro.module.products__create_products_fields.php
./migrations/2017_01_09_062257_pyro.module.products__create_products_stream.php
// Basic addon translation file.
./resources/lang/en/addon.php
// Default CRUD routes.
./resources/routes/products.php
// Module class and service provider.
./src/ProductsModule.php
./src/ProductsModuleServiceProvider.php
// Default admin controller for CRUD.
./src/Http/Controller/Admin/ProductsController.php
// Basic entry interfaces.
./src/Product/Contract/ProductInterface.php
./src/Product/Contract/ProductRepositoryInterface.php
// Common entry services and entry model.
./src/Product/ProductCollection.php
./src/Product/ProductModel.php
./src/Product/ProductPresenter.php
./src/Product/ProductRouter.php
./src/Product/ProductCriteria.php
./src/Product/ProductObserver.php
./src/Product/ProductRepository.php
// Common entry UI for CRUD.
./src/Product/Form/ProductFormBuilder.php
./src/Product/Table/ProductTableBuilder.php
-----------------------------------------------------------------------------
// Migrate as you go.
php artisan artisan migrate:refresh --addon=pyro.module.products
Assets
Asset management you'll love.
Our Asset service extends the Assetic package and integrates seamlessly into addons and Laravel.
Read Documentation
<?php
use Anomaly\Streams\Platform\Database\Migration\Migration;
class AnomalyModuleProductsCreateProductsFields extends Migration
{
protected $fields = [
'name' => 'anomaly.field_type.text',
'slug' => [
'type' => 'anomaly.field_type.slug',
'config' => [
'type' => '-',
'slugify' => 'name',
],
],
'description' => 'anomaly.field_type.wysiwyg',
'tags' => 'anomaly.field_type.tags',
'images' => 'anomaly.field_type.files',
'featured' => 'anomaly.field_type.boolean',
'enabled' => [
'type' => 'anomaly.field_type.boolean',
'config' => [
'default_value' => true,
],
],
];
}
----------------------------------------------------------------------
<?php
use Anomaly\Streams\Platform\Database\Migration\Migration;
class AnomalyModuleProductsCreateProductsStream extends Migration
{
protected $stream = [
'slug' => 'products',
'title_column' => 'name',
'translatable' => true,
'trashable' => true,
];
protected $assignments = [
'str_id' => [
'required' => true,
'unique' => true,
],
'name' => [
'required' => true,
'translatable' => true,
],
'slug' => [
'required' => true,
'unique' => true,
],
'description' => [
'translatable' => true,
],
'tags',
'images',
'enabled',
'featured',
];
}
Streams Hassle free data structures.
Streams are custom data structures that extend Eloquent. No nasty EAV models here just Laravel models on steroids.
- Automatic event driven table management.
- Streams generate Entry models that extend Eloquent.
- Inherits all the functionality of Eloquent.
Fields Powerful input / output.
Fields use Field Types to define storage format, data mutation, validation, input UI, and more.
- Automatic event driven schema management.
- Mega powerful data input output control.
Assignments Versatile model attributes.
When you assign a field to a stream you create an attribute for that model.
- Automatic event driven schema management.
- Data input and output backed by field types.
- Integrated with Laravel's native model attribute system.
Images
Painless image manipulation.
Our Image service extends the Intervention package and integrates seamlessly into addons and Laravel.
Read DocumentationLet's Get Started
You've only scratched the surface. Ready to learn more?