Builder - A handful of tools for Rapid Laravel Development

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:

Features">
<li class="nav-item"><a class="nav-link" href="{!! url('admin/features') !!}"><span class="fa fa-cog">span> Featuresa>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:

Logs">
<li class="nav-item"><a href="{!! url('admin/logs') !!}"><span class="fa fa-line-chart">span> Logsa>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:

Notifications
  • Notifications
  • ">
    <li><a href="{!! url('user/notifications') !!}"><span class="fa fa-envelope-o">span> Notificationsa>li>
    <li><a href="{!! url('admin/notifications') !!}"><span class="fa fa-envelope-o">span> Notificationsa>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:

    Forge Settings ">
    <li class="nav-item"><a href="{{ url('admin/forge/settings') }}"><span class="fa fa-fw fa-server">span> Forge Settingsa>li>
    <li class="nav-item"><a href="{{ url('admin/forge/scheduler') }}"><span class="fa fa-fw fa-calendar">span> Forge Calendara>li> <li class="nav-item"><a href="{{ url('admin/forge/workers') }}"><span class="fa fa-fw fa-cogs">span> Forge Workersa>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:

    Queue">
    <li><a href="{!! url('admin/queue') !!}"><span class="fa fa-list">span> Queuea>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:

    Notes

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

    To: {{ $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">Planlabel>
        <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
    Laravel lsp - Developer tools for easier Laravel development

    Laravel lsp The Laravel/Blade lsp provides: Blade: Diagnostics on missing components + action to create it. Autocomplete for components and their argu

    Harings Rob 32 Dec 21, 2022
    Laravel Form builder for version 5+!

    Laravel 5 form builder Form builder for Laravel 5 inspired by Symfony's form builder. With help of Laravels FormBuilder class creates forms that can b

    Kristijan Husak 1.7k Dec 31, 2022
    Provides a Eloquent query builder for Laravel or Lumen

    This package provides an advanced filter for Laravel or Lumen model based on incoming requets.

    M.Fouladgar 484 Jan 4, 2023
    Reactive Form Builder for Vue.js with Laravel Support

    Dynamic Form Builder for Laravel with Vue.js Create even the most complex forms with ease, using two-sided validation, eloquent, nested elements, cond

    Laraform 340 Dec 31, 2022
    Laravel Mysql Spatial Builder Extension

    magutti-spatial V2 Laravel Builder Mysql Spatial Extension Laravel Builder extensions to calculate distances between two Spatial points using Mysql na

    Marco Asperti 4 Oct 2, 2022
    A TWBS menu builder for Laravel

    Laravel Menu Builder A menu builder for Laravel 4-5 using Bootstrap's markup. Документация на Русском Note that this package is shipped with no styles

    Alexander Kalnoy 24 Nov 29, 2022
    A simple to use query builder for the jQuery QueryBuilder plugin for use with Laravel.

    QueryBuilderParser Status Label Status Value Build Insights Code Climate Test Coverage QueryBuilderParser is designed mainly to be used inside Laravel

    Tim Groeneveld 149 Nov 11, 2022
    A MongoDB based Eloquent model and Query builder for Laravel (Moloquent)

    Laravel MongoDB This package adds functionalities to the Eloquent model and Query builder for MongoDB, using the original Laravel API. This library ex

    Jens Segers 6.3k Jan 7, 2023
    A powerful form builder, for Laravel and other frameworks (stand-alone too)

    Former A Laravelish way to create and format forms Former outputs form elements in HTML compatible with your favorite CSS framework (Bootstrap and Fou

    null 1.3k Dec 22, 2022
    Laravel API architecture builder based on artisan commands.

    ??‍?? API-Formula Laravel API architecture builder based on artisan commands. This package provides a nice and fluent way to generate combined control

    Krševan Lisica 1 Jan 16, 2022
    A Laravel Admin Starter project with Page Builder, Roles, Impersonation, Analytics, Blog, News, Banners, FAQ, Testimonials and more

    Laravel CMS Starter Project A Laravel CMS Starter project with AdminLTE theme and core features. Preview project here User: [email protected]

    Ben-Piet O'Callaghan 306 Nov 28, 2022
    A DynamoDB based Eloquent model and Query builder for Laravel.

    Laravel DynamoDB A DynamoDB based Eloquent model and Query builder for Laravel. You can find an example implementation in kitar/simplechat. Motivation

    Satoshi Kita 146 Jan 2, 2023
    Generate and autoload custom Helpers, Builder Scope, Service class, Trait

    laravel-make-extender Generate and autoload custom helpers, It can generate multilevel helpers in the context of the directory. Generate Service class

    Limewell 30 Dec 24, 2022
    this is cv-builder project in php and ajax

    download the project make a database has name cv_builder extract the project in xampp/htdocs/ open the project localhost/cv_builder/index.php or use t

    Hilal ahmad 6 Jun 21, 2022
    🎨 Free custom elements for the WordPress plugin Oxygen Builder.

    ?? Custom Elements for Oxygen Builder Free custom elements for the WordPress plugin Oxygen Builder. If you find the elements useful, click on the star

    Simon Vidman 62 Dec 29, 2022
    HydePHP - Elegant and Powerful Static App Builder

    HydePHP - Elegant and Powerful Static App Builder Make static websites, blogs, and documentation pages with the tools you already know and love. About

    HydePHP 31 Dec 29, 2022
    A demo of how to use filament/forms to build a user-facing Form Builder which stores fields in JSON.

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

    Dan Harrin 41 Dec 24, 2022
    A WPDB wrapper and query builder library.

    DB A WPDB wrapper and query builder library. Installation It's recommended that you install DB as a project dependency via Composer: composer require

    StellarWP 35 Dec 15, 2022
    SEO Tools for Laravel

    SEOTools - SEO Tools for Laravel and Lumen SEOTools is a package for Laravel 5.8+ and Lumen that provides helpers for some common SEO techniques. Curr

    Artesãos 2.7k Dec 31, 2022