MixPanel for Laravel - Intuitive drop-in analytics.

Overview

MixPanel for Laravel

Scrutinizer Coveralls GitHub (pre-)release Packagist GitHub license

Mixpanel for Laravel masthead image.

Sponsors

We like to thank the following sponsors for their generosity. Please take a moment to check them out.

Features

  • Asynchronous data transmission to Mixpanel's services. This prevents any delays to your application if Mixpanel is down, or slow to respond.
  • Drop-in installation and configuration into your Laravel app, tracking the most common events out of the box.
  • Simple Stripe integration allowing you to track revenues at the user level.
  • Front-end-ready Mixpanel JS library, both for Laravel Elixir inclusion or Blade template use.

Requirements and Compatibility

  • PHP >= 7.2
  • Laravel >= 7.0

Legacy Versions

Installation

  1. Install the package:
    composer require genealabs/laravel-mixpanel
  2. Add your Mixpanel API Token to your .env file:
    MIXPANEL_TOKEN=xxxxxxxxxxxxxxxxxxxxxx
  3. Add the MixPanel Host domain only if you need to change your MixPanel host from the default:
    MIXPANEL_TOKEN=xxxxxxxxxxxxxxxxxxxxxx

Configuration

Default Values

  • services.mixpanel.host: pulls the 'MIXPANEL_HOST' value from your .env file.
  • services.mixpanel.token: pulls the 'MIXPANEL_TOKEN' value from your .env file.
  • services.mixpanel.enable-default-tracking: (default: true) enable or disable Laravel user event tracking.
  • services.mixpanel.consumer: (default: socket) set the Guzzle adapter you want to use.
  • services.mixpanel.connect-timeout: (default: 2) set the number of seconds after which connections timeout.
  • services.mixpanel.timeout: (default: 2) set the number of seconds after which event tracking times out.
  • services.mixpanel.data_callback_class: (default: null) manipulate the data being passed back to mixpanel for the track events.

Upgrade Notes

Version 0.7.0 for Laravel 5.5

  • Remove the service provider from /config/app.php. The service provider is now auto-discovered in Laravel 5.5.

Page Views

  • Page view tracking has been removed in favor of Mixpanels in-built Autotrack functionality, which tracks all page views. To turn it on, visit your Mixpanel dashboard, click Applications > Autotrack > Web > etc. and enable Autotracking.

Usage

MixPanel is loaded into the IoC as a singleton. This means you don't have to manually call $mixPanel::getInstance() as described in the MixPanel docs. This is already done for you in the ServiceProvider.

Common user events are automatically recorded:

  • User Registration
  • User Deletion
  • User Login
  • User Login Failed
  • User Logoff
  • Cashier Subscribed
  • Cashier Payment Information Submitted
  • Cashier Subscription Plan Changed
  • Cashier Unsubscribed

To make custom events, simple get MixPanel from the IoC using DI:

use GeneaLabs\LaravelMixpanel\LaravelMixpanel;

class MyClass
{
    protected $mixPanel;

    public function __construct(LaravelMixPanel $mixPanel)
    {
        $this->mixPanel = $mixPanel;
    }
}

If DI is impractical in certain situations, you can also manually retrieve it from the IoC:

$mixPanel = app('mixpanel'); // using app helper
$mixPanel = Mixpanel::getFacadeRoot(); // using facade

After that you can make the usual calls to the MixPanel API:

  • $mixPanel->identify($user->id);

  • $mixPanel->track('User just paid!');

  • $mixPanel->people->trackCharge($user->id, '9.99');

  • $mixPanel->people->set($user->id, [$data]);

    And so on ...

    Stripe Web-Hook

    If you wish to take advantage of the Stripe web-hook and track revenue per user, you should install Cashier: https://www.laravel.com/docs/5.5/billing

    Once that has been completed, exempt the web-hook endpoint from CSRF-validation in /app/Http/Middleware/VerifyCsrfToken.php:

        protected $except = [
            'genealabs/laravel-mixpanel/stripe',
        ];

    The only other step remaining is to register the web-hook with Stripe: Log into your Stripe account: https://dashboard.stripe.com/dashboard, and open your account settings' webhook tab:

    Enter your MixPanel web-hook URL, similar to the following: http:// /genealabs/laravel-mixpanel/stripe : screen shot 2015-05-31 at 1 35 01 pm

    Be sure to select "Live" if you are actually running live (otherwise put into test mode and update when you go live). Also, choose "Send me all events" to make sure Laravel Mixpanel can make full use of the Stripe data.

    JavaScript Events & Auto-Track

    Blade Template (Recommended)

    First publish the necessary assets:

    php artisan mixpanel:publish --assets

    Then add the following to the head section of your layout template (already does the init call for you, using the token from your .env file):

    @include('genealabs-laravel-mixpanel::partials.mixpanel')

    Laravel Elixir

    Add the following lines to your /resources/js/app.js (or equivalent), and don't forget to replace YOUR_MIXPANEL_TOKEN with your actual token:

    require('./../../../public/genealabs-laravel-mixpanel/js/mixpanel.js');
    mixpanel.init("YOUR_MIXPANEL_TOKEN");

Laravel Integration

Out of the box it will record the common events anyone would want to track. Also, if the default $user->name field is used that comes with Laravel, it will split up the name and use the last word as the last name, and everything prior for the first name. Otherwise it will look for first_name and last_name fields in the users table.

  • User registers:

    Track:
      User:
        - Status: Registered
    People:
      - $first_name: 
         
          
      - $last_name: 
          
           
      - $email: 
           
            
      - $created: 
            
    
            
           
          
         
  • User is updated:

    People:
      - $first_name: 
         
          
      - $last_name: 
          
           
      - $email: 
           
            
      - $created: 
            
    
            
           
          
         
  • User is deleted:

    Track:
      User:
        - Status: Deactivated
    
  • User is restored (from soft-deletes):

    Track:
      User:
        - Status: Reactivated
    
  • User logs in:

    Track:
      Session:
        - Status: Logged In
    People:
      - $first_name: 
         
          
      - $last_name: 
          
           
      - $email: 
           
            
      - $created: 
            
    
            
           
          
         
  • User login fails:

    Track:
      Session:
        - Status: Login Failed
    People:
      - $first_name: 
         
          
      - $last_name: 
          
           
      - $email: 
           
            
      - $created: 
            
    
            
           
          
         
  • User logs out:

    Track:
      Session:
        - Status: Logged Out
    

Tracking Data Manipulation

If you need to make changes or additions to the data being tracked, create a class that implements \GeneaLabs\LaravelMixpanel\Interfaces\DataCallback:



namespace App;

use GeneaLabs\LaravelMixpanel\Interfaces\DataCallback;

class MixpanelUserData implements DataCallback
{
    public function process(array $data = []) : array
    {
        $data["test"] = "value";

        return $data;
    }
}

Then register this class in your services configuration:

\App\MixpanelUserData::class, ] ">
    'mixpanel' => [
      // ...
        "data_callback_class" => \App\MixpanelUserData::class,
    ]

Stripe Integration

Many L5 sites are running Cashier to manage their subscriptions. This package creates an API webhook endpoint that keeps vital payment analytics recorded in MixPanel to help identify customer churn.

Out of the box it will record the following Stripe events in MixPanel for you:

Charges

  • Authorized Charge (when only authorizing a payment for a later charge date):

    Track:
      Payment:
        - Status: Authorized
        - Amount: 
         
    
         
  • Captured Charge (when completing a previously authorized charge):

    Track:
      Payment:
        - Status: Captured
        - Amount: 
         
          
    People TrackCharge: 
          
    
          
         
  • Completed Charge:

    Track:
      Payment:
        - Status: Successful
        - Amount: 
         
          
    People TrackCharge: 
          
    
          
         
  • Refunded Charge:

    Track:
      Payment:
        - Status: Refunded
        - Amount: 
         
          
    People TrackCharge: -
          
    
          
         
  • Failed Charge:

    Track:
      Payment:
        - Status: Failed
        - Amount: 
         
    
         

Subscriptions

  • Customer subscribed:

    Track:
      Subscription:
        - Status: Created
    People:
      - Subscription: 
         
    
         
  • Customer unsubscribed:

    Track:
      Subscription:
        - Status: Canceled
        - Upgraded: false
      Churn! :(
    People:
      - Subscription: None
      - Churned: 
         
          
      - Plan When Churned: 
          
           
      - Paid Lifetime: 
           
             days
    
           
          
         
  • Customer started trial:

    Track:
      Subscription:
        - Status: Trial
    People:
      - Subscription: Trial
    
  • Customer upgraded plan:

    Track:
      Subscription:
        - Upgraded: true
      Unchurn! :-)
    People:
      - Subscription: 
         
    
         
  • Customer downgraded plan (based on dollar value compared to previous plan):

    Track:
      Subscription:
        - Upgraded: false
      Churn! :-(
    People:
      - Subscription: 
         
          
      - Churned: 
          
           
      - Plan When Churned: 
           
    
           
          
         

The Fine Print

Commitment to Quality

During package development I try as best as possible to embrace good design and development practices to try to ensure that this package is as good as it can be. My checklist for package development includes:

  • Achieve as close to 100% code coverage as possible using unit tests.
  • Eliminate any issues identified by SensioLabs Insight and Scrutinizer.
  • Be fully PSR1, PSR2, and PSR4 compliant.
  • Include comprehensive documentation in README.md.
  • Provide an up-to-date CHANGELOG.md which adheres to the format outlined at http://keepachangelog.com.
  • Have no PHPMD or PHPCS warnings throughout all code.

Contributing

Please observe and respect all aspects of the included Code of Conduct https://github.com/GeneaLabs/laravel-model-caching/blob/master/CODE_OF_CONDUCT.md.

Reporting Issues

When reporting issues, please fill out the included template as completely as possible. Incomplete issues may be ignored or closed if there is not enough information included to be actionable.

Submitting Pull Requests

Please review the Contribution Guidelines https://github.com/GeneaLabs/laravel-model-caching/blob/master/CONTRIBUTING.md. Only PRs that meet all criterium will be accepted.

❤️ Open-Source Software - Give ⭐️

We have included the awesome symfony/thanks composer package as a dev dependency. Let your OS package maintainers know you appreciate them by starring the packages you use. Simply run composer thanks after installing this package. (And not to worry, since it's a dev-dependency it won't be installed in your live environment.)

Comments
  • Enable Queueing of Events

    Enable Queueing of Events

    I'd like to disable some or all events to be sent automatically. The reason is that I'd like to send them via queued job. The other solution would be to make them queueable.

    enhancement follow-up required low priority 
    opened by KonstantinKolodnitsky 12
  • Disable automatic metrics

    Disable automatic metrics

    Hey!

    Firstly, thanks for building this amazing package! Secondly, i would like to suggest some parameter to make it easy to stop the automatic metrics, like logins, registrations etc. I have some unique things in my registration process, and would like to deactivate the User registered that come with the package.

    Thanks :)

    follow-up required 
    opened by fernando-sa 10
  • array_filter() expects parameter 1 to be array, string given

    array_filter() expects parameter 1 to be array, string given

    Laravel 5.6. "genealabs/laravel-mixpanel": "^0.7.7",

    I allways obtain this error when I try to log in.

    \vendor\genealabs\laravel-mixpanel\src\LaravelMixpanel.php - 50 array_filter() expects parameter 1 to be array, string given 2018-04-24_01-52-43

    bug 
    opened by SuperIbm 10
  • Autotrack don't work

    Autotrack don't work

    If I copy paste the new JS snippet from mixpanel I can use the autotrack.

    With the include of the package (mixpanel.js) the autotrack don't show up and I have a 404 error in the console.

    unconfirmed bug 
    opened by elamotte 10
  • Automatic events don't seem to be firing?

    Automatic events don't seem to be firing?

    Running the latest version of Laravel, 5.4.21

    I can fire manual events perfectly fine but it seems like all the listeners just don't listen.

    It seems like everything runs up to the event() helper being fired and then it just dies.

    Any idea what could be causing this?

    bug 
    opened by jaewun 10
  • Identify not working?

    Identify not working?

    Sorry to keep pounding on your library, but hopefully this all helps.

    I've got the library very nicely tracking the page loads and custom events, but for some reason the user info isn't getting submitted to MixPanel.

    I'm submitting it like this:

    $user = Auth::user();
    $this->mixPanel->identify($user->user_id,[
          'customer_id' => $user->customer_id,
          'name' => $user->name
    ]);
    

    I verified that the $user object is in fact valid and that user_id, customer_id, and name all can echo out onto the page. Not sure what to do next.

    Thanks again!

    opened by emergingdzns 9
  • How do I remove auto User Updated?

    How do I remove auto User Updated?

    Hi there,

    I'm on Laravel 5.4. I'm wondering why my users keep getting User Updated (repeated many times) out of nowhere – when signing in, logging out, performing some random actions... and it keeps repeating.

    https://i.imgur.com/4gpFjxZ.png

    How do I remove the auto tracking for User Updated? Or, what really triggered this?

    Thank you :)

    opened by trisle 7
  • Identical events firing twice?

    Identical events firing twice?

    I set up a clean new project, installed your package and only loaded homepage once. I'm seeing two Page View events. Raw data export shows they have identical timestamps:

    {"event":"Page View","properties":{"time":1484000324,"distinct_id":"2886860801","$browser":"Chrome 55.0.2883.95","Operating System":"OS X 10.11.6","Url":"http://duct.dev/","mp_lib":"php"}}
    {"event":"Page View","properties":{"time":1484000324,"distinct_id":"2886860801","$browser":"Chrome 55.0.2883.95","Operating System":"OS X 10.11.6","Url":"http://duct.dev/","mp_lib":"php"}}
    

    Can you help? :) I've seen this happen with some of my clients in the past. It seems it's not due to php/laravel or your package, but I'm hoping you've run into this before and have a solution.

    opened by darkostanimirovic 7
  • Laravel 5.3.* Your requirements could not be resolved to an installable set of packages

    Laravel 5.3.* Your requirements could not be resolved to an installable set of packages

    On a fresh install of Laravel 5.3.* running composer require genealabs/laravel-mixpanel throws an error.

    $ composer require genealabs/laravel-mixpanel
    Using version ^0.5.3 for genealabs/laravel-mixpanel
    ./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
        - Installation request for genealabs/laravel-mixpanel ^0.5.3 -> satisfiable by genealabs/laravel-mixpanel[0.5.3].
        - Conclusion: remove laravel/framework v5.3.9
        - Conclusion: don't install laravel/framework v5.3.9
        - genealabs/laravel-mixpanel 0.5.3 requires illuminate/routing 5.2.* -> satisfiable by illuminate/routing[v5.2.0, v5.2.19, v5.2.21, v5.2.24, v5.2.25, v5.2.26, v5.2.27, v5.2.28, v5.2.31, v5.2.32, v5.2.37, v5.2.43, v5.2.45, v5.2.6, v5.2.7].
        - don't install illuminate/routing v5.2.0|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.19|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.21|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.24|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.25|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.26|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.27|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.28|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.31|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.32|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.37|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.43|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.45|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.6|don't install laravel/framework v5.3.9
        - don't install illuminate/routing v5.2.7|don't install laravel/framework v5.3.9
        - Installation request for laravel/framework (locked at v5.3.9, required as 5.3.*) -> satisfiable by laravel/framework[v5.3.9].
    
    
    Installation failed, reverting ./composer.json to its original content.
    
    opened by mtpultz 7
  • Question: using username rather than first name and last name

    Question: using username rather than first name and last name

    Hey Mike,

    I'm pretty new to using Mixpanel and have only set it up at the most basic level in each of my controllers - I'm looking to improve this and make it much more meaningful and this package looks perfect.

    The only issue I have is that we only use a username and don't have name, first_name or last_name recorded for our users - as our application doesn't require it.

    I can see from your Configuration steps that we can set a property to grab the username but this is then split out in to a first_name and last_name.

    Is there anyway to use this package without that happening and track the People without using a first and last name, and just use their username for this instead?

    I'm aware I could just build all of this myself, but with you having already set this up to listen for all the events I would like to it would be so much better if there was an easy way to just use this package.

    Is there possibly an easy hack I could make to your code to do this, then I would just have to be careful not to update and lose that hack until I had got a more permanent solution done.

    opened by jryd 7
  • Event Handler Error

    Event Handler Error

    Now that it's installed, before adding anything to controllers or anything (only did the composer install and added the provider row to the app config file providers array.

    Now I'm getting the following error:

    FatalErrorException in LaravelMixpanelEventHandler.php line 63:
    Call to a member function format() on null
    

    Any ideas?

    opened by emergingdzns 7
  • Add CodeQL workflow for GitHub code scanning

    Add CodeQL workflow for GitHub code scanning

    Hi GeneaLabs/laravel-mixpanel!

    This is a one-off automatically generated pull request from LGTM.com :robot:. You might have heard that we’ve integrated LGTM’s underlying CodeQL analysis engine natively into GitHub. The result is GitHub code scanning!

    With LGTM fully integrated into code scanning, we are focused on improving CodeQL within the native GitHub code scanning experience. In order to take advantage of current and future improvements to our analysis capabilities, we suggest you enable code scanning on your repository. Please take a look at our blog post for more information.

    This pull request enables code scanning by adding an auto-generated codeql.yml workflow file for GitHub Actions to your repository — take a look! We tested it before opening this pull request, so all should be working :heavy_check_mark:. In fact, you might already have seen some alerts appear on this pull request!

    Where needed and if possible, we’ve adjusted the configuration to the needs of your particular repository. But of course, you should feel free to tweak it further! Check this page for detailed documentation.

    Questions? Check out the FAQ below!

    FAQ

    Click here to expand the FAQ section

    How often will the code scanning analysis run?

    By default, code scanning will trigger a scan with the CodeQL engine on the following events:

    • On every pull request — to flag up potential security problems for you to investigate before merging a PR.
    • On every push to your default branch and other protected branches — this keeps the analysis results on your repository’s Security tab up to date.
    • Once a week at a fixed time — to make sure you benefit from the latest updated security analysis even when no code was committed or PRs were opened.

    What will this cost?

    Nothing! The CodeQL engine will run inside GitHub Actions, making use of your unlimited free compute minutes for public repositories.

    What types of problems does CodeQL find?

    The CodeQL engine that powers GitHub code scanning is the exact same engine that powers LGTM.com. The exact set of rules has been tweaked slightly, but you should see almost exactly the same types of alerts as you were used to on LGTM.com: we’ve enabled the security-and-quality query suite for you.

    How do I upgrade my CodeQL engine?

    No need! New versions of the CodeQL analysis are constantly deployed on GitHub.com; your repository will automatically benefit from the most recently released version.

    The analysis doesn’t seem to be working

    If you get an error in GitHub Actions that indicates that CodeQL wasn’t able to analyze your code, please follow the instructions here to debug the analysis.

    How do I disable LGTM.com?

    If you have LGTM’s automatic pull request analysis enabled, then you can follow these steps to disable the LGTM pull request analysis. You don’t actually need to remove your repository from LGTM.com; it will automatically be removed in the next few months as part of the deprecation of LGTM.com (more info here).

    Which source code hosting platforms does code scanning support?

    GitHub code scanning is deeply integrated within GitHub itself. If you’d like to scan source code that is hosted elsewhere, we suggest that you create a mirror of that code on GitHub.

    How do I know this PR is legitimate?

    This PR is filed by the official LGTM.com GitHub App, in line with the deprecation timeline that was announced on the official GitHub Blog. The proposed GitHub Action workflow uses the official open source GitHub CodeQL Action. If you have any other questions or concerns, please join the discussion here in the official GitHub community!

    I have another question / how do I get in touch?

    Please join the discussion here to ask further questions and send us suggestions!

    opened by lgtm-com[bot] 0
  • Provides support for the Mixpanel 'debug' state

    Provides support for the Mixpanel 'debug' state

    This PR expands upon the config and 'defaults' of the Mixpanel object construction to pass through the 'debug' argument to the dependent mixpanel library.

    I've found myself needing to use 'debug' in order to effectively test my implementation, but wasn't able to readily turn the state off or on using this library.

    Essentially, Mixpanel's base consumer class will post an error or info message to the PHP error log in the event that the debug argument is supplied as true

    The argument I added to the config/env and the mixpanel constructor always defaults to false and it's therefore fully backwards compatible.

    opened by danhanly 0
  • Upgrade to GitHub-native Dependabot

    Upgrade to GitHub-native Dependabot

    Dependabot Preview will be shut down on August 3rd, 2021. In order to keep getting Dependabot updates, please merge this PR and migrate to GitHub-native Dependabot before then.

    Dependabot has been fully integrated into GitHub, so you no longer have to install and manage a separate app. This pull request migrates your configuration from Dependabot.com to a config file, using the new syntax. When merged, we'll swap out dependabot-preview (me) for a new dependabot app, and you'll be all set!

    With this change, you'll now use the Dependabot page in GitHub, rather than the Dependabot dashboard, to monitor your version updates, and you'll configure Dependabot through the new config file rather than a UI.

    Your account is using config variables to access private registries. Relevant registries have been included in the new config file but additional steps may be necessary to complete the setup. Ensure that each secret below has been configured in the organization Dependabot secrets or the repository Dependabot secrets by an admin.

    • [ ] GIT_NOVA_LARAVEL_COM_PASSWORD

    If an included registry is not required by this repository you can remove it from the config file.

    If you've got any questions or feedback for us, please let us know by creating an issue in the dependabot/dependabot-core repository.

    Learn more about migrating to GitHub-native Dependabot

    Please note that regular @dependabot commands do not work on this pull request.

    dependencies 
    opened by dependabot-preview[bot] 1
  • Does not detect alternative Cashier model

    Does not detect alternative Cashier model

    My application uses a Team model instead of the default User model in Cashier, however, your RecordStripeEvent class determines the auth model via: $authModel = config('auth.providers.users.model') ?? config('auth.model');

    Simply updating this to check for Cashier's CASHIER_MODEL env variable would fix this issue:

    $authModel = config('cashier.model') ?? (config('auth.providers.users.model') ?? config('auth.model'));

    opened by dnnp2011 0
Releases(0.12.0)
Owner
GeneaLabs, LLC
GeneaLabs, LLC
The simplest, most intuitive way to host your photos on your website.

Gallery 3.1+ (development version) About Gallery 3 is a web based software product that lets you manage your photos on your own website. You must have

Brad Dutton 103 Dec 22, 2022
A simple, intuitive, yet powerful password manager.

Poziomy zabezpieczeń Brak zabezpieczeń Kod jest widoczny bez konieczności podejmowania żadnej akcji. Nie jest szyfrowany. Można udostępniać. Niski poz

Burda Kacper 1 Feb 4, 2022
Laravel wrapper for the Fathom Analytics API

Please note: This package is still a work in progress and the Fathom API is also only in early access. Do not use this package in your production envi

Marc Reichel 12 Sep 19, 2022
Flying Analytics by FlyingPress

Flying Analytics by FlyingPress

FlyingWeb Solutions 3 Sep 30, 2022
Matomo is the leading Free/Libre open analytics platform.

Matomo (formerly Piwik) - matomo.org Code Status Description Matomo is the leading Free/Libre open analytics platform. Matomo is a full-featured PHP M

Matomo Analytics 17.2k Jan 3, 2023
A self-hosted, drag-and-drop, & nosql file conversion server that supports 62x file formats

A self-hosted, drag-and-drop, & nosql file conversion server that supports 62x file formats

Justin Grimes 388 Dec 26, 2022
Laravel-Blog is a blog application written in Laravel 4.2.

创造不息,交付不止 Introduction Laravel-Blog is a blog project written in Laravel 4.2. Screenshots Article List Page Article composing page Single post page Ad

Summer 192 Dec 15, 2022
Projeto Web Site do Curso Laravel Developer utilizando o Framework PHP Laravel

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

Pedro Leandro 1 Oct 22, 2021
A simple helpdesk tickets system for Laravel 5.1+ which integrates smoothly with Laravel default users and auth system

A simple helpdesk tickets system for Laravel 5.1+ which integrates smoothly with Laravel default users and auth system, demo is available at: http://ticketit.kordy.info/tickets

Ahmed Kordy 857 Dec 30, 2022
mini Project in Laravel and vue js. Real World Laravel 8x + vue js Dashboard.Task management and project management system

mini Project in Laravel and vue js. Real World Laravel 8x + vue js Dashboard.Task management and project management system. Dashboard features such as: Complete Dashboard, Custom Authentication, Email Verification, custom-login-register-forgot password (without jetstream).

Hasmukh Dharajiya 2 Sep 20, 2022
A powerful open source Laravel Blog with WYSWYG and CRUD (Create Read Update Delete) built on Laravel 5.8 and Bootstrap 4

Larablog A powerful open source Laravel Blog with WYSWYG and CRUD (Create Read Update Delete) built on Laravel 5.8 and Bootstrap 4 Table of contents F

Jeremy Kenedy 144 Oct 11, 2022
Laravel Angular Time Tracker is a simple time tracking application built on Laravel 5.2, Angular 2, and Bootstrap 3.

Laravel 5.2, Angular 2, and Bootstrap 3.3.* Time Tracker Laravel Angular Time Tracker is a simple time tracking application built on Laravel 5.2, Angu

Jeremy Kenedy 25 Oct 11, 2022
Mini is a small Laravel application with 2 modules to go with the book Laravel: The Modular Way

Mini Mini is a small Laravel application with 2 modules to go with the book Laravel: The Modular Way Install Clone this repo git clone [email protected]:

David Carr 5 Dec 4, 2022
Voyager - The Missing Laravel Admin

Voyager - The Missing Laravel Admin Made with ❤️ by The Control Group Website & Documentation: https://voyager.devdojo.com/ Video Tutorial Here: https

The Control Group 11.3k Dec 31, 2022
A platform to create documentation/wiki content built with PHP & Laravel

BookStack A platform for storing and organising information and documentation. Details for BookStack can be found on the official website at https://w

BookStackApp 10.6k Jan 3, 2023
Koel is a simple web-based personal audio streaming service written in Vue and Laravel

Koel (also stylized as koel, with a lowercase k) is a simple web-based personal audio streaming service written in Vue on the client side and Laravel on the server side. Targeting web developers, Koel embraces some of the more modern web technologies – CSS grid, audio, and drag-and-drop API to name a few – to do its job.

Koel 14.3k Jan 4, 2023
Krayin CRM is a hand tailored CRM framework built on Laravel and Vue.js

Krayin CRM is a hand tailored CRM framework built on some of the hottest opensource technologies such as Laravel (a PHP framework) and Vue.js a progressive Javascript framework.

Krayin CRM 1.1k Jan 3, 2023
Repositório do sistema de Chat em RealTime utilizando WebSocket com Laravel, Vue.js, Inertia e Tailwind

Antes de mais nada... Deixa a estrelinha no repositório Me segue aqui no github Aula desse Projeto no YouTube Esse projeto foi desenvolvido por Gustav

BlackDev Soluções 15 Nov 30, 2022
mTube is a simple video sharing platform built with Laravel.

mTube is a simple video sharing platform built with Laravel. Create personal channel share videos online with friends and family.

Nyi Nyi Lwin 115 Dec 28, 2022