Prepare your Laravel apps incredibly fast, with various commands, services, facades and boilerplates.

Overview

Grafite Builder

Grafite has archived this project and no longer supports or develops the code. We recommend using only as a source of ideas for your own code.

Builder - A handful of tools for Rapid Laravel Development

Build Status Packagist license

This is a set of tools to help speed up development of Laravel apps. You can start an app with various parts prewritten (Users, User Meta, Roles, Teams). And it comes with a powerful FormMaker which can generate form content from tables, and objects. It can generate epic CRUD prototypes rapidly with full testing scripts prepared for you, requiring very little editing. It also provides an elegant Cryptography tool which is URL friendly. Finally it brings along some friends with LaravelCollective as a vendor.

Author(s):

General Requirements

  1. PHP 7.1.3+
  2. OpenSSL

Compatibility and Support

Laravel Version Package Tag Supported
5.7.x 2.5.x no
5.6.x 2.4.x no
5.5.x 2.3.x no
5.4.x 2.2.x no
5.3.x 2.0.x - 2.1.x no
5.1.x - 5.2.x 1.9.x no

Installation

Start a new Laravel project:

laravel new {project_name}

or

composer create-project laravel/laravel {project_name}

Then run the following to add the Grafite Builder

composer require "grafite/builder"

Time to publish those assets! Grafite Builder uses CrudMaker and FormMaker which have publishable assets.

php artisan vendor:publish

or

php artisan vendor:publish --provider="Yab\CrudMaker\CrudMakerProvider"
php artisan vendor:publish --provider="Yab\FormMaker\FormMakerProvider"

You now have Grafite Builder installed. Try out the Starter Kit.

Application Starter Kit

!!! warning "Make sure you followed the getting started instructions!"

Grafite Builder provides an elegant solution for starting an application by building the most basic views, controllers, models and migrations for your application. No need to use the php artisan make:auth because now you can easily start your whole application with this single command:

php artisan grafite:starter

!!! tip "BUT, before we do that lets get a few things set up."

In order to make use of the starter kit you will need to modify some files. Check out the modifications below:

Add the following to your app/Http/Kernel.php in the $routeMiddleware array.

'admin' => \App\Http\Middleware\Admin::class,
'permissions' => \App\Http\Middleware\Permissions::class,
'roles' => \App\Http\Middleware\Roles::class,
'active' => \App\Http\Middleware\Active::class,

If you don't want to worry about email activation then remove this from the route's middleware array:

'active'

Update the App\User::class in: 'config/auth.php' and 'database/factories/UserFactory.php' to this:

App\Models\User::class

Add the following to 'app/Providers/AuthServiceProvider.php' in the boot method

Gate::define('admin', function ($user) {
    return ($user->roles->first()->name === 'admin');
});

Gate::define('team-member', function ($user, $team) {
    return ($user->teams->find($team->id));
});

Add the following to 'app/Providers/EventServiceProvider.php' in the $listen property

'App\Events\UserRegisteredEmail' => [
    'App\Listeners\UserRegisteredEmailListener',
],

You will want to create an sqlite memory test database in the config/database.php

'testing' => [
    'driver'   => 'sqlite',
    'database' => ':memory:',
    'prefix'   => '',
],

Add the following line to the 'phpunit.xml' file

<env name="DB_CONNECTION" value="testing"/>
<env name="MAIL_DRIVER" value="log"/>

Regarding Email Activation

The Starter kit has an email activation component added to the app to ensure your users have validated their email address. You can disable it by removing the active middleware from the web routes. You will also have to disable the Notification but it won't cause any problems if you remove the email activation.

For Laravel 5.2 and later

You will also need to set the location of the email for password reminders. (config/auth.php - at the bottom)

'passwords' => [
    'users' => [
        'provider' => 'users',
        'email' => 'emails.password',
        'table' => 'password_resets',
        'expire' => 60,
    ],
],

Things to note

You may try and start quickly by testing the registration but please make sure your app's email is configured or it will throw an exception. You can do this in the .env file easily by setting it to 'log' temporarily

MAIL_DRIVER=log

Last Steps

Once you've added in all these parts you will want to run the starter command!

php artisan grafite:starter

Then you'll have to refresh the list of all classes that need to be included in the project.

composer dump-autoload

Then you'll need to migrate to add in the users, user meta, roles and teams tables. The seeding is run to set the initial roles for your application.

php artisan migrate --seed

Once you get the starter kit running you can register and login to your app. You can then you can visit the settings section of the app and set your role to admin to take full control of the app.

What Starter Publishes

Controllers

Grafite Builder updated the basic controllers to handle things like creating a profile when a user is registered, as well as setting default return routes to dashboard etc. It also provides contollers for handling profile modifications and pages, team management etc. The admin controller handles the admin of users, modifying a user provided the user has the admin role.

  • app/Http/Controllers/
    • Admin/
      • DashboardController.php
      • UserController.php
      • RoleController.php
    • Auth/
      • ActivateController.php
      • ForgotPasswordController.php
      • LoginController.php
      • RegisterController.php
      • ResetPasswordController.php
    • User/
      • PasswordController.php
      • SettingsController.php
    • PagesController.php
    • TeamController.php

Middleware

Grafite Builder overwrites the default middleware due to changes in the redirects. It also provides the Admin middleware for route level protection relative to roles.

  • app/Http/Middleware/
    • Active.php
    • Admin.php
    • Permissions.php
    • RedirectIfAuthenticated.php
    • Roles.php

Requests

There are requests provided for handling the creation of Teams and updating of all components. Here we integrate the rules required that are able to run the validations and return errors. (If you're using Grafite Builder FormMaker Facade then it will even handling accepting the errors and highlighting the appropriate fields.)

  • app/Http/Requests/
    • PasswordUpdateRequest.php
    • RoleCreateRequest.php
    • TeamCreateRequest.php
    • TeamUpdateRequest.php
    • UserInviteRequest.php
    • UserUpdateRequest.php

Routes

Given that there are numerous routes added to handle teams, profiles, password etc all routes are overwritten with the starter kit.

  • routes/web.php

Config

The permissions config file is published, this is a way for you to set access levels and types of permissions Roles can have

  • config/permissions.php

Events

The events for various actions.

  • app/Events/
    • UserRegisteredEmail.php

Listeners

The event listeners for various actions.

  • app/Listeners/
    • UserRegisteredEmailListener.php

Models

Models are obvious, but when we then integrate Services below which handle all the buisness logic etc which make the calls to the models we implement SOLID practices, the Controller, Console or other Service, which calls the service only accesses the model through it. Once these have been integrated please ensure you delete the User.php model file and ensure that you have followed the installation and config instructions.

  • app/Models/
    • UserMeta.php
    • User.php
    • Team.php
    • Role.php

Notifications

These are all our emails that we need to send out to the users in the application. These are amazing since they use the power of Laravel's notifcation component.

  • app/Notficiations/
    • ActivateUserEmail.php
    • NewAccountEmail.php
    • ResetPasswordEmail.php

Services

Service structure allows us to keep the buisness logic outside of the models, and controllers. This approach is best suited for apps that may wish to integrate an API down the road or other things. It also allows for a highly testable structure to the application.

  • app/Services/
    • Traits/
      • HasRoles.php
      • HasTeams.php
    • ActivateService.php
    • RoleService.php
    • TeamService.php
    • UserService.php

Database

Please ensure that all migrations and seeds are run post installation. These seeds set the default roles available in your application.

  • database/factories/
    • RoleFactory.php
    • TeamFactory.php
    • UserFactory.php
    • UserMetaFactory.php
  • database/migrations/
    • 2015_11_30_191713_create_user_meta_table.php
    • 2015_11_30_215038_create_roles_table.php
    • 2015_11_30_215040_create_role_user_table.php
    • 2015_12_04_155900_create_teams_table.php
    • 2015_12_04_155900_create_teams_users_table.php
  • database/seeds/
    • DatabaseSeeder.php
    • RolesTableSeeder.php
    • UserTableSeeder.php

Views

The views consist of as little HTML as possible to perform the logical actions. These are intended to be the most basic, and all of which are intended to be modified.

  • resources/views/
    • admin/
      • roles/
        • edit.blade.php
        • index.blade.php
        • invite.blade.php
      • users/
        • edit.blade.php
        • index.blade.php
        • invite.blade.php
      • dashboard.blade.php
    • auth/
      • activate/
        • email.blade.php
        • token.blade.php
      • passwords/
        • email.blade.php
        • reset.blade.php
      • login.blade.php
      • register.blade.php
    • errors/
      • 401.blade.php
      • 404.blade.php
      • 503.blade.php
    • partials/
      • errors.blade.php
      • message.blade.php
      • status.blade.php
    • team/
      • create.blade.php
      • edit.blade.php
      • index.blade.php
      • show.blade.php
    • user/
      • meta.blade.php
      • password.blade.php
      • settings.blade.php
    • dashboard.blade.php

Tests

Grafite Builder starter kit provides the basic unit tests for each of its own parts. This provides some great examples of testing for building an application quickly.

  • tests/
    • Feature/
      • TeamIntegrationTest.php
    • Unit/
      • UserServiceTest.php
      • TeamServiceTest.php
      • RoleServiceTest.php

After Setup

Dashboard access

The application dashboard is found by browsing to the /dashboard endpoint. The default admin user login credentials are:

User

The user model is expanded with Grafite Builder Starter Kit. It adds to the basic user model: roles, teams, and user meta. The relationships are as follows:

  • Meta: hasOne
  • Roles: belongsToMany
  • Team: belongsToMany

It also provides the following methods:

meta() // The relationship method
roles() // The relationship method
hasRole(role_name) // checks if user has role
teams() // The relationship method
isTeamMember(team_id) // checks if user is member
isTeamAdmin(team_id) // checks if user is admin level member

Middleware

Admin

The Admin middleware acts as a tool for setting admin level permissions on the routes or controller level.

['middleware' => 'admin']

This simple addition to a route will ensure the user has access to the admin level, if not it will return them from where they came.

Active

The Active middleware acts checks if the account as been activated by accessing the activate url with the emailed token.

['middleware' => 'active']

This simple addition to a route will ensure the user has an activated account, if not it will redirect them to the /active page so they can request another activation token if necessary.

Roles

The Roles middleware allows you to set custom roles for your routes.

['middleware' => 'roles:admin|member']

Permissions

The Permissions middleware allows you to set custom permissions (a subset of roles) for your routes

['middleware' => 'permissions:admin|somethingDescriptive']

You can set permissions in the config/permissions.php

Bootstrap UI

!!! Tip "Bootstrap Version 4"

If you feel like opting in for the Application starter kit. You also have a great bootstrapping option for the views. You can blast through the initial building of an app and hit the ground running!

php artisan grafite:bootstrap

!!! Tip "This will also ensure that your webpack file is prepared to run"

What Boostrap Publishes

The command will overwrite any existing files with the bootstrap version of them:

  • resources/views/
    • user/
      • meta.blade.php
      • password.blade.php
      • settings.blade.php
    • admin/
      • users/
        • edit.blade.php
        • index.blade.php
        • invite.blade.php
    • auth/
      • login.blade.php
      • password.blade.php
      • register.blade.php
      • reset.blade.php
    • dashboard/
      • main.blade.php
      • panel.blade.php
    • emails/
      • new-user.blade.php
      • password.blade.php
    • errors/
      • 404.blade.php
      • 503.blade.php
    • partials/
      • errors.blade.php
      • message.blade.php
    • team/
      • create.blade.php
      • edit.blade.php
      • index.blade.php
      • show.blade.php

Application Activities

Sometimes its handy to know what your users are up to when they browse your site or application. The Activity kit gives you everything you need to track your users and their every action. The middleware does most of it for you, but your welcome to customize it to fit your needs.

Setup

php artisan grafite:activity

Add to your config/app.php the following:

App\Providers\ActivityServiceProvider::class,
Facades

Provides the following tool for in app features:

Activity::log($description);
Activity::getByUser($userId);
Helper
activity($description) // will log the activity

Application Features

Sometimes what we need is a simple way to toggle parts of an app on and off, or hey, maybe the client wants it. Either way, using the feature management kit can take care of all that. Now you or your clients can toggle signups on an off, or any other features in the app. Just utilize the blade or helper components to take full control of your app.

Setup

php artisan grafite:features

You may want to add this line to your navigation:

<li class="nav-item"><a class="nav-link" href="{!! url('admin/features') !!}"><span class="fa fa-cog"></span> Features</a></li>

Add to your config/app.php the following:

App\Providers\FeatureServiceProvider::class,

Add this to the app/Providers/RouteServiceProvider.php in the mapWebRoutes(Router $router) function:

require base_path('routes/features.php');
Facades

Provides the following tool for in app features:

Features::isActive($key);
Blade
@feature($key)
// code goes here
@endfeature
Helper
feature($key) // will return true|false
What Features Publishes:

The command will overwrite any existing files with the features version of them:

  • app/Facades/Features.php
  • app/Http/Controllers/Admin/FeatureController.php
  • app/Http/Requests/FeatureCreateRequest.php
  • app/Http/Requests/FeatureUpdateRequest.php
  • app/Models/Feature.php
  • app/Providers/FeatureServiceProvider.php
  • app/Services/FeatureService.php
  • database/migrations/2016_04_14_210036_create_features_table.php
  • resources/views/admin/features/create.blade.php
  • resources/views/admin/features/edit.blade.php
  • resources/views/admin/features/index.blade.php
  • routes/features.php
  • tests/Feature/FeatureIntegrationTest.php
  • tests/Unit/FeatureServiceTest.php

Application Logs

The logs tool simply add a view of the app logs to your admin panel. This can be of assistance durring development or in keeping an application in check.

Setup

php artisan grafite:logs

You may want to add this line to your navigation:

<li class="nav-item"><a href="{!! url('admin/logs') !!}"><span class="fa fa-line-chart"></span> Logs</a></li>

Add this to the app/Providers/RouteServiceProvider.php in the mapWebRoutes(Router $router) function:

require base_path('routes/logs.php');

Application Notifications

Grafite Builder's notifications will build a basic controller, service, and views for both users and admins so you can easily notifiy your users, in bulk or specifically.

Setup
php artisan grafite:notifications

You may want to add this line to your navigation:

<li><a href="{!! url('user/notifications') !!}"><span class="fa fa-envelope-o"></span> Notifications</a></li>
<li><a href="{!! url('admin/notifications') !!}"><span class="fa fa-envelope-o"></span> Notifications</a></li>

Add this to the app/Providers/RouteServiceProvider.php in the mapWebRoutes(Router $router) function:

require base_path('routes/notification.php');
Facades

Provides the following tool for in app notifications:

Notifications::notify($userId, $flag, $title, $details);

Flags can be any bootstrap alert: default, info, success, warning, danger

What Notifications Publishes:

The command will overwrite any existing files with the notification version of them:

  • app/Facades/Notifications.php
  • app/Http/Controllers/Admin/NotificationController.php
  • app/Http/Controllers/User/NotificationController.php
  • app/Http/Requests/NotificationRequest.php
  • app/Models/Notification.php
  • app/Services/NotificationService.php
  • database/migrations/2016_04_14_180036_create_notifications_table.php
  • resources/views/admin/notifications/create.blade.php
  • resources/views/admin/notifications/edit.blade.php
  • resources/views/admin/notifications/index.blade.php
  • resources/views/notifications/index.blade.php
  • resources/views/notifications/show.blade.php
  • routes/notification.php
  • tests/NotificationIntegrationTest.php
  • tests/NotificationServiceTest.php

Forge Integration

The FORGE component provides you with access to the FORGE API in your admin panel. Rather than having to log into FORGE for each adjustment, now you can simply log into your own application and in the admin panel adjust the scheduler, or workers on your server configuration.

Requires
composer require themsaid/forge-sdk
Setup
php artisan grafite:forge

You may want to add this line to your navigation:

<li class="nav-item"><a href="{{ url('admin/forge/settings') }}"><span class="fa fa-fw fa-server"></span> Forge Settings</a></li>
<li class="nav-item"><a href="{{ url('admin/forge/scheduler') }}"><span class="fa fa-fw fa-calendar"></span> Forge Calendar</a></li>
<li class="nav-item"><a href="{{ url('admin/forge/workers') }}"><span class="fa fa-fw fa-cogs"></span> Forge Workers</a></li>

Add this to the app/Providers/RouteServiceProvider.php in the mapWebRoutes(Router $router) function:

You will see a line like: ->group(base_path('routes/web.php'));

You need to change it to resemble this:

->group(function () {
    require base_path('routes/web.php');
    require base_path('routes/forge.php');
}

Add these to the .env:

FORGE_TOKEN=
FORGE_SERVER_ID=
FORGE_SITE_ID=

Application API

If you feel like opting in for the Laracogs starter kit. You can also easily build in an API layer. Running the grafite:api command will set up the bare bones components, but you can also use the API tools as a part of the CRUD now by using the --api option.

Requires
composer require tymon/jwt-auth
Setup
php artisan grafite:api

Essentially you want to do all the basic setup for JWT such as everything in here: Then follow the directions regarding installation on: https://github.com/tymondesigns/jwt-auth/wiki/Installation

Add this to the app/Providers/RouteServiceProvider.php file in the mapWebRoutes(Router $router) function:

require base_path('routes/api.php');

Add to the app/Http/Kernal.php under routeMiddleware:

'jwt.auth' => \Tymon\JWTAuth\Middleware\GetUserFromToken::class,
'jwt.refresh' => \Tymon\JWTAuth\Middleware\RefreshToken::class,

Add to except attribute the app/Http/Middleware/VerifyCsrfToken.php (You also have to do this for CRUDs you add):

'api/v1/login',
'api/v1/user/profile',

If you use Apache add this to the .htaccess file:

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

Also update your jwt config file and set the user to:

\App\Models\User::class
What API publishes

The command will overwrite any existing files with the api version of them:

  • app/Http/Controllers/Api/AuthController.php
  • app/Http/Controllers/Api/UserController.php
  • routes/api.php

Application Queue

Horizon is amazing if you've got a redis instance configured and are running your queue through that, but not all apps need that nor do that have to start there. If you've got a database driven queue and are looking for an easy management component to handle job retrying and cancellations then this will be a perfect addition to your app.

Setup
php artisan grafite:queue

Add this to the app/Providers/RouteServiceProvider.php in the mapWebRoutes(Router $router) function:

require base_path('routes/queue.php');

You may want to add this line to your navigation:

<li><a href="{!! url('admin/queue') !!}"><span class="fa fa-list"></span> Queue</a></li>

Social Media Logins

If you're looking to offer social media logins on your application and want a simple way to get started then look no further. Simply run the command and follow the steps below and you'll have GitHub login out of the box. Integrating Facebook etc afterward is easy when you look at the code base.

Requires
composer require laravel/socialite
Setup
php artisan grafite:socialite

The next step is to prepare your app with socialite:

Add this to your app config under providers:

Laravel\Socialite\SocialiteServiceProvider::class

Add this to your app config under aliases:

'Socialite' => Laravel\Socialite\Facades\Socialite::class,

Add require base_path('routes/socialite.php'); to the app/Providers/RouteServiceProvider.php in the mapWebRoutes(Router $router) function:

Route::middleware('web')
    ->namespace($this->namespace)
    ->group(function () {
        require base_path('routes/socialite.php');
        require base_path('routes/web.php');
    });

Finally set the access details in the services config:

'github' => [
    'client_id' => 'id code',
    'client_secret' => 'secret code',
    'redirect' => 'http://your-domain/auth/github/callback',
    'scopes' => ['user:email'],
],
What Socialite publishes

The command will overwrite any existing files with the socialite version of them:

  • app/Http/Controllers/Auth/SocialiteAuthController.php
  • routes/socialite.php

Application Billing

If you feel like opting in for the Grafite Builder starter kit. You can also get your app's billing handled quickly with Grafite Builder billing command and Laravel/Cashier. Grafite Builder's billing will build a basic controller, views etc so you can stay focused on what makes your application amazing!

Requires
composer require laravel/cashier
Setup
php artisan grafite:billing

You have to modify the app/Providers/RouteServiceProvider.php in the mapWebRoutes(Router $router) function:

You will see a line like: ->group(base_path('routes/web.php'));

You need to change it to resemble this:

->group(function () {
    require base_path('routes/web.php');
    require base_path('routes/billing.php');
}

Add these to the .env:

SUBSCRIPTION=app_basic
STRIPE_SECRET=secret-key
STRIPE_PUBLIC=public-key

Add this to the app/Providers/AuthServiceProvider.php:

Gate::define('access-billing', function ($user) {
    return ($user->meta->subscribed('main') && is_null($user->meta->subscription('main')->endDate));
});

And for the config/services.php you will want yours to resemble:

'stripe' => [
    'model'  => App\Models\UserMeta::class,
    'key'    => env('STRIPE_PUBLIC'),
    'secret' => env('STRIPE_SECRET'),
],

Finally run migrate to add the subscriptions and bind them to the user meta:

php artisan migrate

You will also want to update your webpack mix file to resemble (webpack.mix.js):

.js([
    'resources/assets/js/app.js',
    'resources/assets/js/card.js',
    'resources/assets/js/subscription.js'
], 'public/js');
After Setup

You may want to add this line to your navigation:

<li><a href="{{ url('user/billing/details') }}"><span class="fa fa-dollar"></span> Billing</a></li>
Notes

You may want to switch the line in the view vendor.receipt to:

<strong>To:</strong> {{ $user->user()->email }}

We do this because rather than bind the billing to the User, we bound it to the UserMeta.

What Billing Publishes

The command will overwrite any existing files with the billing version of them:

  • app/Http/Controllers/User/BillingController.php
  • app/Models/UserMeta.php
  • config/invoice.php
  • config/plans.php
  • database/migrations/2016_02_26_000647_create_subscriptions_table.php
  • database/migrations/2016_02_26_000658_add_billings_to_user_meta.php
  • resources/assets/js/card.js
  • resources/assets/js/subscription.js
  • resources/views/billing/card-form.blade.php
  • resources/views/billing/change-card.blade.php
  • resources/views/billing/details.blade.php
  • resources/views/billing/invoices.blade.php
  • resources/views/billing/coupons.blade.php
  • resources/views/billing/subscribe.blade.php
  • resources/views/billing/tabs.blade.php
  • routes/billing.php
Accounts

The Account service is a tool for handling your subscription details, meaning you can limit your applications based on various clauses using the plans config. You're free to set these plan details restricting things within a billing cycle or just in general.

These are relative to billing only. They provide extra tools for handling restrictions in your application based on the plan the user subscribed to. Unless you implment the cashier billing system with the UserMeta structure provided by Laracogs it will not benefit you.

Config

This is the basic config for config/plans.php. This is for a single plan, either be subscribed or not.

!!! tip "Remember you need to have corresponding plans on Stripe ex. app_basic by default"

'subscription' => env('SUBSCRIPTION'),
'subscription_name' => 'main',
'plans' => [
    'app_basic' => [
        'access' => [
            'some name'
        ],
        'limits' => [
            'Model\Namespace' => 5,
            'pivot_table' => 1
        ],
        'credits' => [
            'column' => 'credits_spent',
            'limit' => 10
        ],
        'custom' => [
            'anything' => 'anything'
        ],
    ],
]
Multiple Plans

In this config you can define multiple plans which can have different rules per plan. By default the kit uses a single plan. You can define this in the env as mentioned above. But if you want to do multiple plans you can change the following code:

  1. Line 45 of the BillingController.php change config('plans.subscription') to: $payload['plan']
  2. Add name, and stripe_id to the config
'subscription_name' => 'main',
'plans' => [
    'basic' => [
        'name' => 'Basic Subscription',
        'stripe_id' => 'basic_subscription',
        'access' => [
            'some name'
        ],
        'limits' => [
            'Model\Namespace' => 5,
            'pivot_table' => 1
        ],
        'credits' => [
            'column' => 'credits_spent',
            'limit' => 10
        ],
        'custom' => [
            'anything' => 'anything'
        ],
    ],
]
  1. Then add the following code in resources/views/billing/subscribe.blade.php above the card form include:
<div class="form-group">
    <label class="form-label" for="plan">Plan</label>
    <select class="form-control" name="plan" id="plan">
        @foreach (config('plans.plans') as $plan)
            <option value="{{ $plan['stripe_id'] }}">{{ $plan['name'] }}</option>
        @endforeach
    </select>
</div>

!!! tip "You may also want to add a component to your app to allow users to switch plans. You can use the swap method to achieve this: auth()->user()->meta->subscription(config('plans.subscription_name'))->swap($request->plan)"

Service Methods

#### currentBillingCycle() By using this method at the beginning and chaining another method after it you enable the restriction of the query to be performed but restricting itself to the current billing cycle.
#### canAccess($area) Returns a boolean if the user can enter
#### cannotAccess($area) Returns a boolean if the user cannot enter
#### getClause($key) Returns the specified clause of the plans
#### getLimit($model) Returns the specified limit of a model or pivot table
#### withinLimit($model, $key = 'user_id', $value = {user's id}) Confirms that the specified model only has the specified amount collected by the $key and $value. * If you add the `currentBillingCycle()` before this then it would add the further restrictions.
#### creditsUsed($model, $key = 'user_id', $value = {user's id}) Reports back the specified amount collected by the $key and $value. * If you add the `currentBillingCycle()` before this then it would add the further restrictions.
#### creditsAvailable($model) Returns the number of credits remaining based on the config and the previous method. * If you add the `currentBillingCycle()` before this then it would add the further restrictions.
#### clause($key, $method, $model = null) Performs a custom method with rules defined by the clause name in the config. The Closure method in this is provided with the following parameters: $user, $subscription, $clause, $query

License

Grafite Builder is open-sourced software licensed under the MIT license

Bug Reporting and Feature Requests

Please add as many details as possible regarding submission of issues and feature requests

Disclaimer

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Comments
  • 5.2 & Label Maker

    5.2 & Label Maker

    Getting this on a fairly vanilla install of L5.2.29

    @input_maker_label('Email') @input_maker_create('email', ['type' => 'string'], $user) @input_maker_label('Name') @input_maker_create('name', ['type' => 'string'], $user) @input_maker_label('Phone') @input_maker_create('meta[phone]', ['type' => 'string'], $user) @input_maker_label('I agree to receive marketing information') @input_maker_create('meta[marketing]', ['type' => 'checkbox'], $user) @input_maker_label('Terms & Conditions') @input_maker_create('meta[terms_and_cond]', ['type' => 'checkbox'], $user)

    I've followed the install sequence to the letter. Any reason the Input Maker is broken?

    Also getting a similar effect with the CRUD builder & pregenerated form maker:

    @form_maker_object($random, FormMaker::getTableColumns('random'))

    opened by absalomedia 11
  • unable to generate user_meta when inviting

    unable to generate user_meta when inviting

    Hello, can you advise me with this. Whenever i try to invite user as team member, it generates the user but doesnt generate user_meta. it gives me the following message

    Exception in UserService.php line 184: 
    We were unable to generate your profile, please try again later.
    

    Ashish

    opened by ashish64 10
  • Crud maker with relationships problem

    Crud maker with relationships problem

    I have a laravel running the version of it is Laravel Framework version 5.3.6 and I have laracogs at his version 2.1.1.

    After running the command:

    php artisan crudmaker:new posts --api --ui=bootstrap --migration --schema="id:increments,name:string,body:text,startdate:date,owner_id:integer|unsigned" --relationships="hasOne|\App\Models\User|owner"

    I noticed the following:

    1. The relationship was not done on migration, I had to add "owner_id" on schema command and later on modify the migration table to add the relationship.
    2. Form has no relationship, just the id field.

    I do not know if this is normal or not, but I suppose that is not, because on the documentation there is the following description:

    This will add in the relationships to your models, as well as add the needed name_id field to your tables. Just one more thing you don't have to worry about.

    opened by german-bortoli 10
  • Does Laracogs play well with Laravel 5.3.6?

    Does Laracogs play well with Laravel 5.3.6?

    Having some problems getting the crud to work - the routes are not detected. So before I go down a rabbit hole debugging that, figured I'll check with you first.

    What version of laravel has this been tested on? I tried it on 5.3.6.

    opened by ashbeats 10
  • Wrong named route, request and redirect('route.name') are generated

    Wrong named route, request and redirect('route.name') are generated

    after run the comand for generate CRUD:

    php artisan crudmaker:new PriceList_Service --api --ui=bootstrap --migration --schema="id:increments,slug:string,name:string,description:text,active:tinyInteger" --withFacade
    

    and acessing the page /pricelist/services/ i have the error:

    ErrorException in UrlGenerator.php line 314: Route [pricelist.services.search] not defined. (View: D:\serverpath\dev2016\yabhq-laracogs\www\laracogs\resources\views\pricelist\services\index.blade.php)
    

    and

    InvalidArgumentException in UrlGenerator.php line 314: Route [pricelist.services.search] not defined.
    

    In routes.php i have this code:

    Route::group(['namespace' => 'PriceList', 'prefix' => 'pricelist', 'middleware' => ['web']], function () { 
    
    /*
    |--------------------------------------------------------------------------
    | Service Routes
    |--------------------------------------------------------------------------
    */
    
    Route::resource('services', 'ServiceController', ['except' => ['show']]);
    Route::post('services/search', [
        'as' => 'services.search',
        'uses' => 'ServiceController@search'
    ]);
    
    });
    

    and if i change the route name services.search in pricelist.services.search it work:

    Route::post('services/search', [
        'as' => 'pricelist.services.search',
        'uses' => 'ServiceController@search'
    ]);
    

    It's a Laravel error or from Laracogs? My solution go well or i need doing something else for get right?

    opened by arturmamedov 9
  • PureCSS framework

    PureCSS framework

    Yahoo's PureCSS as a view/css framework.

    • Custom Pure 0.6.0 build with 7ths, Grids & Normalizer
    • Form creator overloading so it negotiates Bootstrap & Pure
    • Font Awesome still remains in.
    • Responsive sidebar menu
    • ARIA roles
    • New Google Fonts, with font weighting & balance
    opened by absalomedia 8
  • Added ability to switch labels and values in makeSelects

    Added ability to switch labels and values in makeSelects

    Added ability to switch labels and values in makeSelects and automatically in relationships as the value should be unique, the label can be duplicated

    opened by bretto36 6
  • composer require

    composer require "yab/laracogs" fails

    On a fresh Laravel installation:

    $ composer require "yab/laracogs"
    Using version ^2.3 for yab/laracogs
    ./composer.json has been updated
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Your requirements could not be resolved to an installable set of packages.
    
      Problem 1
        - Conclusion: don't install yab/laracogs v2.3.1
        - Conclusion: don't install yab/laracogs v2.3.2
        - Conclusion: don't install yab/laracogs v2.3.3
        - Conclusion: remove yab/laracogs v2.3.3
        - Installation request for yab/laracogs ^2.3 -> satisfiable by yab/laracogs[v2.3.0, v2.3.1, v2.3.2, v2.3.3].
        - yab/laracogs v2.3.0 requires yab/cerebrum ~1.0 -> satisfiable by yab/cerebrum[v1.1.2, v1.0.0, v1.0.1, v1.0.2, v1.1.0, v1.1.1].
        - yab/cerebrum v1.1.2 requires mockery/mockery ^0.9.4 -> satisfiable by mockery/mockery[0.9.x-dev].
        - yab/cerebrum v1.0.0 requires mockery/mockery ^0.9.4 -> satisfiable by mockery/mockery[0.9.x-dev].
        - yab/cerebrum v1.0.1 requires mockery/mockery ^0.9.4 -> satisfiable by mockery/mockery[0.9.x-dev].
        - yab/cerebrum v1.0.2 requires mockery/mockery ^0.9.4 -> satisfiable by mockery/mockery[0.9.x-dev].
        - yab/cerebrum v1.1.0 requires mockery/mockery ^0.9.4 -> satisfiable by mockery/mockery[0.9.x-dev].
        - yab/cerebrum v1.1.1 requires mockery/mockery ^0.9.4 -> satisfiable by mockery/mockery[0.9.x-dev].
        - yab/cerebrum v1.1.2 requires mockery/mockery ^0.9.4 -> satisfiable by mockery/mockery[0.9.x-dev].
        - Conclusion: don't install mockery/mockery 0.9.x-dev
    
    Installation failed, reverting ./composer.json to its original content.
    
    

    The source of the problem might be that Laravel already has a "mockery/mockery": "~1.0" dependency.

    opened by zoliszabo 5
  • [QUESTION] How to use 'sectioned' config

    [QUESTION] How to use 'sectioned' config

    Hello. I'm developing a project using modular approach. In project root I have Modules/ folder which contains User/ and Company/ folders (modules). I want to generate crud code for them using your 'crudmaker' generator. In crudmaker.php config I found 'sectioned' config. As I understood it generates code in provided section . So, the question is how I can use it? Because I didn't find any docs about it. Perhaps, I need to pass some parameter for console command 'crudmaker' or something else. Thanks!

    p.s. Thank you for the great project! It's really awesome!

    opened by Shandur 5
  • Class User\BillingController does not exist

    Class User\BillingController does not exist

    I have installed billing into a clean install and get this error when going to http://localhost:8000/user/billing/details

    ReflectionException in Container.php line 719: Class User\BillingController does not exist in Container.php line 719 at ReflectionClass->__construct('User\BillingController') in Container.php line 719 at Container->build('User\BillingController') in Container.php line 598 at Container->resolve('User\BillingController') in Container.php line 567 at Container->make('User\BillingController') in Application.php line 702 at Application->make('User\BillingController') in Route.php line 217

    opened by nconroy 5
  • 'Class RolesTableSeeder does not exist' when running laracogs:starter

    'Class RolesTableSeeder does not exist' when running laracogs:starter

    I'm receiving the error Class RolesTableSeeder does not exist when running php artisan laracogs:starter. Running Laravel 5.4.

    Based on the output, it's running composer dump-autoload before running throug the migrations.. here's the log, any ideas?

    vagrant@mkss:~/project$ artisan laracogs:starter
    These files will be published
    app/Events/UserRegisteredEmail.php
    app/Http/Controllers/Admin/RoleController.php
    app/Http/Controllers/Admin/UserController.php
    app/Http/Controllers/Auth/ActivateController.php
    app/Http/Controllers/Auth/ForgotPasswordController.php
    app/Http/Controllers/Auth/LoginController.php
    app/Http/Controllers/Auth/RegisterController.php
    app/Http/Controllers/Auth/ResetPasswordController.php
    app/Http/Controllers/PagesController.php
    app/Http/Controllers/TeamController.php
    app/Http/Controllers/User/PasswordController.php
    app/Http/Controllers/User/SettingsController.php
    app/Http/Middleware/Active.php
    app/Http/Middleware/Admin.php
    app/Http/Middleware/Permissions.php
    app/Http/Middleware/RedirectIfAuthenticated.php
    app/Http/Middleware/Roles.php
    app/Http/Requests/PasswordUpdateRequest.php
    app/Http/Requests/RoleCreateRequest.php
    app/Http/Requests/TeamCreateRequest.php
    app/Http/Requests/TeamUpdateRequest.php
    app/Http/Requests/UserInviteRequest.php
    app/Http/Requests/UserUpdateRequest.php
    app/Listeners/UserRegisteredEmailListener.php
    app/Models/Role.php
    app/Models/Team.php
    app/Models/User.php
    app/Models/UserMeta.php
    app/Notifications/ActivateUserEmail.php
    app/Notifications/NewAccountEmail.php
    app/Notifications/ResetPassword.php
    app/Services/ActivateService.php
    app/Services/RoleService.php
    app/Services/TeamService.php
    app/Services/UserService.php
    config/permissions.php
    database/migrations/2015_11_30_191713_create_user_meta_table.php
    database/migrations/2015_11_30_215038_create_roles_table.php
    database/migrations/2015_11_30_215040_create_role_user_table.php
    database/migrations/2015_12_04_155900_create_teams_table.php
    database/migrations/2015_12_04_155900_create_teams_users_table.php
    database/seeds/DatabaseSeeder.php
    database/seeds/RolesTableSeeder.php
    database/seeds/UserTableSeeder.php
    Factory.txt
    resources/views/admin/roles/create.blade.php
    resources/views/admin/roles/edit.blade.php
    resources/views/admin/roles/index.blade.php
    resources/views/admin/users/edit.blade.php
    resources/views/admin/users/index.blade.php
    resources/views/admin/users/invite.blade.php
    resources/views/auth/activate/email.blade.php
    resources/views/auth/activate/token.blade.php
    resources/views/auth/login.blade.php
    resources/views/auth/passwords/email.blade.php
    resources/views/auth/passwords/reset.blade.php
    resources/views/auth/register.blade.php
    resources/views/dashboard.blade.php
    resources/views/errors/401.blade.php
    resources/views/errors/404.blade.php
    resources/views/errors/503.blade.php
    resources/views/partials/errors.blade.php
    resources/views/partials/message.blade.php
    resources/views/partials/status.blade.php
    resources/views/team/create.blade.php
    resources/views/team/edit.blade.php
    resources/views/team/index.blade.php
    resources/views/team/show.blade.php
    resources/views/user/meta.blade.php
    resources/views/user/password.blade.php
    resources/views/user/settings.blade.php
    routes/web.php
    tests/Feature/TeamIntegrationTest.php
    tests/Unit/RoleServiceTest.php
    tests/Unit/TeamServiceTest.php
    tests/Unit/UserServiceTest.php
    
     Are you sure you want to overwrite any files of the same name? (yes/no) [no]:
     > y
    
    Copying routes...
    Copying config...
    Copying app/Http...
    Copying app/Events...
    Copying app/Listeners...
    Copying app/Notifications...
    Copying app/Models...
    Copying app/Services...
    Copying database...
    Copying resources/views...
    Copying tests...
    Appending database/factory...
    Update the model in: config/auth.php, database/factory/ModelFactory.php
    
    
    App\Models\User::class
    
    
    Build something worth sharing!
    
    
     Would you like to run the migration? (yes/no) [no]:
     > yes
    
    Generating autoload files
    
                                             
      [ReflectionException]                  
      Class RolesTableSeeder does not exist  
                                             
    

    Running php artisan db:seed seems to seed both UserTableSeeder and RolesTableSeeder without issue.

    opened by Braunson 5
  • Fix data type issue causing foreignkey constraint

    Fix data type issue causing foreignkey constraint

    Laravel 5.7 create_users_table migration file comes with BigIncrement for the user ID while the grafite starter pack is just increment for Create_user_meta_table hence users encounter foreign key constraint error during migrate --seed.

    Illuminate\Database\QueryException : SQLSTATE[HY000]: Ge neral error: 1215 Cannot add foreign key constraint (SQL: alter table user_meta add constraint user_meta_user_id_foreign foreign key (user_id) references users (id) on delete cascade)

    The latest version of Laravel 5.8 is just increment but Grafite/Starter does not work properly with it.

    opened by justcharlz 0
  • 5.8 support?

    5.8 support?

    There are errors right after importing the package in a fresh laravel 5.8.3 installation

    Using version ^2.5 for grafite/builder
    ./composer.json has been updated
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Package operations: 8 installs, 0 updates, 0 removals
      - Installing grafite/crypto (v1.1.1): Downloading (100%)
      - Installing laravelcollective/html (v5.8.0): Loading from cache
      - Installing doctrine/event-manager (v1.0.0): Downloading (100%)
      - Installing doctrine/cache (v1.8.0): Downloading (100%)
      - Installing doctrine/dbal (v2.9.2): Downloading (100%)
      - Installing grafite/formmaker (v1.3.4): Downloading (100%)
      - Installing grafite/crudmaker (v1.4.5): Downloading (100%)
      - Installing grafite/builder (v2.5.1): Downloading (100%)
    doctrine/cache suggests installing alcaeus/mongo-php-adapter (Required to use legacy MongoDB driver)
    Writing lock file
    Generating optimized autoload files
    > Illuminate\Foundation\ComposerScripts::postAutoloadDump
    > @php artisan package:discover --ansi
    
    In Container.php line 794:
    
      Class blade.compiler does not exist
    
    
    Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1
    
    opened by SaphiLC 4
  • Starter user registration is broken

    Starter user registration is broken

    when user clicks on activation link, laravel does not activate account and instead asks them to resend activation email..

    Solution: change UserService Do not return $userMeta->user()->first() as this will return the first user in the db

    Instead

    `public function findByActivationToken($token) { $userMeta = $this->userMeta->where('activation_token', $token)->first();

        if ($userMeta) {
            return $userMeta->user();
        }
    
        return false;
    }
    

    `

    I should probably fork and submit PRs instead :)

    opened by baradhili 1
  • Bootstrap step in instructs results in broken webpack.mix.js

    Bootstrap step in instructs results in broken webpack.mix.js

    running php artisan grafite:bootstrap and then npm install and then npm run dev chokes on problems in webpack.js

    specially `...

    cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

    /home/vagrant/code/node_modules/webpack-cli/bin/cli.js:235 throw err; ^

    TypeError: Cannot read property 'js' of undefined at Object. (/home/vagrant/code/webpack.mix.js:14:5) ... `

    turns out in the grafite:bootstrap step webpack.mix.js was changed.. it became const { mix } = require('laravel-mix');

    it should be const mix = require('laravel-mix');

    opened by baradhili 0
Releases(v2.3.0)
  • v2.2.6(Apr 9, 2017)

    Sometimes you need some extra accountability for your users. Now you want harness the activity kit which lets you easily track your users in your app, and give them an activity history.

    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Jan 27, 2017)

    Laracogs is now prepared to work well with Laravel 5.4, all components have been updated including the tests to work with the new Laravel structures.

    Source code(tar.gz)
    Source code(zip)
  • v2.1.7(Nov 8, 2016)

    Now by default the Laracogs Starter kit has an email activation requirement. Now when you register with your app you get an email with an activation token, once you click it you can log in and use your account. Otherwise you can request a new token.

    In order to discard this, you need to remove the active from the routes/web.php in the middleware for the routes, and you would need to remove the ActivateUserEmail notification.

    Source code(tar.gz)
    Source code(zip)
  • v2.1.2(Sep 30, 2016)

  • v2.0.0(Aug 24, 2016)

    Now supporting Laravel 5.3

    For apps with Laravel 5.2 and 5.1 please use the 1.9 version.

    Please note from now on we will only be supporting the latest versions of Laravel.

    Source code(tar.gz)
    Source code(zip)
  • v1.9.37(Jul 24, 2016)

    Laracogs has always included the CrudMaker, FormMaker, and Crypto components. Nothing about that has changed except that now those packages have been moved outside of Laracogs. So now you can use them on their own or use them with the Laracogs package.

    The only real change that has occurred on a noticeable level is that the command for the crudmaker has changed from:

    laracogs:crud

    to

    crudmaker:new

    Please post any issues, and stay tuned for updates coming with the release of Laravel 5.3

    Source code(tar.gz)
    Source code(zip)
  • v1.9.33(Jul 11, 2016)

  • v1.9.25(Jun 14, 2016)

    You can now define relationships with CRUDs, this means you can specify that your CRUD has a relationship such as a Book has an author

    --relationships="hasOne|App\Author|author,relation|class|name"

    Source code(tar.gz)
    Source code(zip)
  • v1.9.22(Jun 7, 2016)

    Now you can generate CRUDs without Controllers, Routes, Views, Requests etc. This means only the Service, Repository, Model, Tests, and Factory are generated. So if you need to work with relationships that never have a 'visual' element in your app its considerably easier! Think about things like Downloads for Links :) Now you'll have a Downloads service.

    Source code(tar.gz)
    Source code(zip)
  • v1.9.14(May 6, 2016)

  • v1.9.6(Apr 26, 2016)

    CRUD now supports schema definitions New CRUD generation from existing tables New semantic command to build the views with semantic-ui as the css framework CRUD builder now supports semantic UI

    Source code(tar.gz)
    Source code(zip)
  • v1.9.4(Apr 22, 2016)

    If you opt in to use the billing structure that Laracogs can put together for you then you'll now have access to the AccountService which will provide a set of methods to handle limitations in your application based on subscriptions. It includes a simple method for building a credit system as well should your app require it.

    Source code(tar.gz)
    Source code(zip)
  • v1.9.2(Apr 17, 2016)

    Minor fixes to custom app namespaces Laracogs config now handles custom app namespaces Updates to the CRUD templates for custom app namespaces

    Source code(tar.gz)
    Source code(zip)
  • v1.9.0(Apr 16, 2016)

    Now if you start a Laravel app with a custom App namespace, the starter, billing, bootstrap, notifications, socialite, and other commands all support it.

    Source code(tar.gz)
    Source code(zip)
  • v1.8.0(Apr 15, 2016)

    New Notifications generator command Code cleanup all around in views and commands Added request validations for some starter kit parts New unit tests

    Source code(tar.gz)
    Source code(zip)
  • v1.7.0(Apr 11, 2016)

    Now includes a command to generate an example of socialite integration with github. You could use any other Oauth 2 based integration with minimal modifications. But for Twitter with Oauth 1 you will have to modify further.

    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Apr 8, 2016)

    We've added in various blade directives as well as basic helpers for the various methods. A few internal improvements on FormMaker as well as InputMaker New relationship support for the FormMaker means you can list out relationships as select and select multiple input types. Bootstrap structure updates Starter kit updates Readme updates Latest documentation is available at: http://laracogs.com

    Source code(tar.gz)
    Source code(zip)
  • v1.5.0(Mar 23, 2016)

    Laracogs now comes with an API starter kit using JWT from Tymon: https://github.com/tymondesigns/jwt-auth

    You can use the starter kit to set up your application. Then run the API to build on the API layer. Then using the amazing CRUD builder with the new --api option you can auto generate your APIs as well as your full GUI for a CRUD in your application.

    Please read up on the changes you will need to do to your application to handle JWT.

    Source code(tar.gz)
    Source code(zip)
  • v1.4.1(Mar 22, 2016)

    Transformed the basics of the starter tool from accounts to user meta (don't worry - there are no changes to the form builder, crud, or crypto parts). After some discussion we realized that Accounts is too presumptive - maybe you want to keep accounts for a billing component or something else. Therefore we switched to UserMeta this is clear and even more simple. Ultimately your User remains unchanged from the core of Laravel, and you simply add more information to their 'profile' or user meta.

    Also includes some minor updates to UI elements, billing improvements, and more.

    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Feb 29, 2016)

    Updated the bootstrap command to now use SASS and sets up basic elixir. Also added new billing component. So if you opt in to use Laravel/Cashier for your billing you can now add it in to your app within the first few steps of building it.

    Source code(tar.gz)
    Source code(zip)
Owner
Grafite Inc
We're passionate about open source code and software products.
Grafite Inc
EBook-Apps - The eBook Apps is a web application that helps you browse ebooks from anywhere using your smartphone and laptop.

⚡️ eBook Apps The eBook Apps is a web application that helps you browse ebooks from anywhere using your smartphone and laptop. ?? Getting Started To s

Ahmad Fauzy 32 Nov 14, 2022
A PHP library to convert text to speech using various services

speaker A PHP library to convert text to speech using various services

Craig Duncan 98 Nov 27, 2022
The swiss army knife for Magento developers, sysadmins and devops. The tool provides a huge set of well tested command line commands which save hours of work time. All commands are extendable by a module API.

netz98 magerun CLI tools for Magento 2 The n98 magerun cli tools provides some handy tools to work with Magento from command line. Build Status Latest

netz98 758 Dec 28, 2022
Some Joomla! 4.x Web Services Api Examples and Experiments to raise the level of awareness of the huge potiental of Joomla! 4.x Web Services.

j4x-api-examples WHY? If you are a Joomla! developer or want to become a Joomla! developer there is a new resource for you The Official New Joomla! Ma

Mr Alexandre ELISÉ 11 Nov 29, 2022
Dispatcher is a Laravel artisan command scheduling tool used to schedule artisan commands within your project so you don't need to touch your crontab when deploying.

Dispatcher Dispatcher allows you to schedule your artisan commands within your Laravel project, eliminating the need to touch the crontab when deployi

Indatus 1.1k Dec 21, 2022
A Laravel Wrapper for the Binance API. Now easily connect and consume the Binance Public & Private API in your Laravel apps without any hassle.

This package provides a Laravel Wrapper for the Binance API and allows you to easily communicate with it. Important Note This package is in early deve

Moinuddin S. Khaja 7 Dec 7, 2022
Venture allows you to create and manage complex, async workflows in your Laravel apps.

Venture is a package to help you build and manage complex workflows of interdependent jobs using Laravel's queueing system. Installation Note: Venture

Kai Sassnowski 680 Dec 14, 2022
🎮 A simple command line tool for installing and interacting with your leaf apps

Leaf CLI 2 A simple command line tool for creating and interacting with your leaf projects. You can do stuff like installing packages, interacting wit

Leaf Framework 7 Aug 24, 2022
Send your laravel apps to the moon with web3 enabled 🚀

Laravel Web3 ?? ?? Laravel Web3 helps you to kickstart your web3 apps. No more headache with handling wallet changing address and sync with laravel ba

Ricardo Sawir 15 Oct 29, 2022
JSON schema models and generated code to validate and handle various data in PocketMine-MP

DataModels JSON schema models and generated code to validate and handle various data in PocketMine-MP This library uses php-json-schema-model-generato

PMMP 2 Nov 9, 2022
A Laravel 9 package that allows you enforce security of your artisan commands by authenticating users before running.

Introduction This package allows you as a developer to restrict who can and cannot run artisan commands, especially in a production environment. For e

YOo Slim 2 Sep 15, 2022
🚦 Viewi PHP integration for your Leaf apps

Leaf Viewi Module This module allows you to quickly and easily integrate Viewi into your Leaf apps without any pain at all. Installation You can easil

Leaf Framework 4 Aug 21, 2022
GitHub action to set up PHP with extensions, php.ini configuration, coverage drivers, and various tools.

GitHub action to set up PHP with extensions, php.ini configuration, coverage drivers, and various tools.

Shivam Mathur 2.4k Jan 6, 2023
StickWithIt is an online food ordering website created using PHP. You can view and purchase various items as well as remove items from the cart.

StickWithIt (App Name) StickWithIt is an online food ordering website created using PHP. The database used here is MYSQL database. The tool used here

Jenil Gajjar 1 May 11, 2022
Melek Berita Backend is a service for crawling data from various websites and processing the data to be used for news data needs.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Chacha Nurholis 2 Oct 9, 2022
Run the following commands in your terminal to setup the project

Run the following commands in your terminal to setup the project You must have the LAMP installed on your system git clone https://github.com/Bashar-A

null 1 Nov 6, 2021
This is a collection of tutorials for learning how to use Docker with various tools. Contributions welcome.

Docker Tutorials and Labs At this time we are not actively adding labs to this repository. Our focus is on training.play-with-docker.com where new lab

Docker 11.1k Jan 2, 2023
Helper to automatically load various Kirby extensions in a plugin

Autoloader for Kirby Helper to automatically load various Kirby extensions in a plugin Commerical Usage This package is free but if you use it in a co

Bruno Meilick 13 Nov 9, 2022
It's goal is to create my own platform where I can play various board games I like.

Card games The goal of this project is to create a social platform where players can communicate, create lobbies and play various board games. Current

Ondřej Mastík 2 Oct 29, 2021