Rinvex Bookable is a generic resource booking system for Laravel, with the required tools to run your SAAS like services efficiently

Overview

Rinvex Bookings

Rinvex Bookings is a generic resource booking system for Laravel, with the required tools to run your SAAS like services efficiently. It has a simple architecture, with powerful underlying to afford solid platform for your business.

Packagist Scrutinizer Code Quality Travis StyleCI License

Considerations

  • Rinvex Bookings is for bookable resources, and has nothing to do with price plans and subscriptions. If you're looking for subscription management system, you may have to look at rinvex/laravel-subscriptions.
  • Rinvex Bookings assumes that your resource model has at least three fields, price as a decimal field, and lastly unit as a string field which accepts one of (minute, hour, day, month) respectively.
  • Payments and ordering are out of scope for Rinvex Bookings, so you've to take care of this yourself. Booking price is calculated by this package, so you may need to hook into the process or listen to saved bookings to issue invoice, or trigger payment process.
  • You may extend Rinvex Bookings functionality to add features like: minimum and maximum units, and many more. These features may be supported natively sometime in the future.

Installation

  1. Install the package via composer:

    composer require rinvex/laravel-bookings
  2. Publish resources (migrations and config files):

    php artisan rinvex:publish:bookings
  3. Execute migrations via the following command:

    php artisan rinvex:migrate:bookings
  4. Done!

Usage

Rinvex Bookings has been specially made for Eloquent and simplicity has been taken very serious as in any other Laravel related aspect.

Add bookable functionality to your resource model

To add bookable functionality to your resource model just use the \Rinvex\Bookings\Traits\Bookable trait like this:

namespace App\Models;

use Rinvex\Bookings\Traits\Bookable;
use Illuminate\Database\Eloquent\Model;

class Room extends Model
{
    use Bookable;
}

That's it, you only have to use that trait in your Room model! Now your rooms will be bookable.

Add bookable functionality to your customer model

To add bookable functionality to your customer model just use the \Rinvex\Bookings\Traits\HasBookings trait like this:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Rinvex\Bookings\Traits\HasBookings;

class Customer extends Model
{
    use HasBookings;
}

Again, that's all you need to do! Now your Customer model can book resources.

Create a new booking

Creating a new booking is straight forward, and could be done in many ways. Let's see how could we do that:

$room = \App\Models\Room::find(1);
$customer = \App\Models\Customer::find(1);

// Extends \Rinvex\Bookings\Models\BookableBooking
$serviceBooking = new \App\Models\ServiceBooking;

// Create a new booking via resource model (customer, starts, ends)
$room->newBooking($customer, '2017-07-05 12:44:12', '2017-07-10 18:30:11');

// Create a new booking via customer model (resource, starts, ends)
$customer->newBooking($room, '2017-07-05 12:44:12', '2017-07-10 18:30:11');

// Create a new booking explicitly
$serviceBooking->make(['starts_at' => \Carbon\Carbon::now(), 'ends_at' => \Carbon\Carbon::tomorrow()])
        ->customer()->associate($customer)
        ->bookable()->associate($room)
        ->save();

Notes:

  • As you can see, there's many ways to create a new booking, use whatever suits your context.
  • Booking price is calculated automatically on the fly according to the resource price, custom prices, and bookable Rates.
  • Rinvex Bookings is intelegent enough to detect date format and convert if required, the above example show the explicitly correct format, but you still can write something like: 'Tomorrow 1pm' and it will be converted automatically for you.

Query booking models

You can get more details about a specific booking as follows:

// Extends \Rinvex\Bookings\Models\BookableBooking
$serviceBooking = \App\Models\ServiceBooking::find(1);

$bookable = $serviceBooking->bookable; // Get the owning resource model
$customer = $serviceBooking->customer; // Get the owning customer model

$serviceBooking->isPast(); // Check if the booking is past
$serviceBooking->isFuture(); // Check if the booking is future
$serviceBooking->isCurrent(); // Check if the booking is current
$serviceBooking->isCancelled(); // Check if the booking is cancelled

And as expected, you can query bookings by date as well:

// Extends \Rinvex\Bookings\Models\BookableBooking
$serviceBooking = new \App\Models\ServiceBooking;

$pastBookings = $serviceBooking->past(); // Get the past bookings
$futureBookings = $serviceBooking->future(); // Get the future bookings
$currentBookings = $serviceBooking->current(); // Get the current bookings
$cancelledBookings = $serviceBooking->cancelled(); // Get the cancelled bookings

$serviceBookingsAfter = $serviceBooking->startsAfter('2017-06-21 19:28:51')->get(); // Get bookings starts after the given date
$serviceBookingsStartsBefore = $serviceBooking->startsBefore('2017-06-21 19:28:51')->get(); // Get bookings starts before the given date
$serviceBookingsBetween = $serviceBooking->startsBetween('2017-06-21 19:28:51', '2017-07-01 12:00:00')->get(); // Get bookings starts between the given dates

$serviceBookingsEndsAfter = $serviceBooking->endsAfter('2017-06-21 19:28:51')->get(); // Get bookings starts after the given date
$serviceBookingsEndsBefore = $serviceBooking->endsBefore('2017-06-21 19:28:51')->get(); // Get bookings starts before the given date
$serviceBookingsEndsBetween = $serviceBooking->endsBetween('2017-06-21 19:28:51', '2017-07-01 12:00:00')->get(); // Get bookings starts between the given dates

$serviceBookingsCancelledAfter = $serviceBooking->cancelledAfter('2017-06-21 19:28:51')->get(); // Get bookings starts after the given date
$serviceBookingsCancelledBefore = $serviceBooking->cancelledBefore('2017-06-21 19:28:51')->get(); // Get bookings starts before the given date
$serviceBookingsCancelledBetween = $serviceBooking->cancelledBetween('2017-06-21 19:28:51', '2017-07-01 12:00:00')->get(); // Get bookings starts between the given dates

$room = \App\Models\Room::find(1);
$serviceBookingsOfBookable = $serviceBooking->ofBookable($room)->get(); // Get bookings of the given resource

$customer = \App\Models\Customer::find(1);
$serviceBookingsOfCustomer = $serviceBooking->ofCustomer($customer)->get(); // Get bookings of the given customer

Create a new booking rate

Bookable Rates are special criteria used to modify the default booking price. For example, let’s assume that you have a resource charged per hour, and you need to set a higher price for the first "2" hours to cover certain costs, while discounting pricing if booked more than "5" hours. That’s totally achievable through bookable Rates. Simply set the amount of units to apply this criteria on, and state the percentage you’d like to have increased or decreased from the default price using +/- signs, i.e. -10%, and of course select the operator from: (^ means the first starting X units, < means when booking is less than X units, > means when booking is greater than X units). Allowed percentages could be between -100% and +100%.

To create a new booking rate, follow these steps:

$room = \App\Models\Room::find(1);
$room->newRate('15', '^', 2); // Increase unit price by 15% for the first 2 units
$room->newRate('-10', '>', 5); // Decrease unit price by 10% if booking is greater than 5 units

Alternatively you can create a new booking rate explicitly as follows:

$room = \App\Models\Room::find(1);

// Extends \Rinvex\Bookings\Models\BookableRate
$serviceRate = new \App\Models\ServiceRate;

$serviceRate->make(['percentage' => '15', 'operator' => '^', 'amount' => 2])
     ->bookable()->associate($room)
     ->save();

And here's the booking rate relations:

$bookable = $serviceRate->bookable; // Get the owning resource model

Notes:

  • All booking rate percentages should NEVER contain the % sign, it's known that this field is for percentage already.
  • When adding new booking rate with positive percentage, the + sign is NOT required, and will be omitted anyway if entered.

Create a new custom price

Custom prices are set according to specific time based criteria. For example, let’s say you've a Coworking Space business, and one of your rooms is a Conference Room, and you would like to charge differently for both Monday and Wednesday. Will assume that Monday from 09:00 am till 05:00 pm is a peak hours, so you need to charge more, and Wednesday from 11:30 am to 03:45 pm is dead hours so you'd like to charge less! That's totally achievable through custom prices, where you can set both time frames and their prices too using +/- percentage. It works the same way as Bookable Rates but on a time based criteria. Awesome, huh?

To create a custom price, follow these steps:

$room = \App\Models\Room::find(1);
$room->newPrice('mon', '09:00:00', '17:00:00', '26'); // Increase pricing on Monday from 09:00 am to 05:00 pm by 26%
$room->newPrice('wed', '11:30:00', '15:45:00', '-10.5'); // Decrease pricing on Wednesday from 11:30 am to 03:45 pm by 10.5%

Piece of cake, right? You just set the day, from-to times, and the +/- percentage to increase/decrease your unit price.

And here's the custom price relations:

$bookable = $room->bookable; // Get the owning resource model

Notes:

  • If you don't create any custom prices, then the resource will be booked at the default resource price.
  • Rinvex Bookings is intelegent enough to detect time format and convert if required, the above example show the explicitly correct format, but you still can write something like: '09:00 am' and it will be converted automatically for you.

Query resource models

You can query your resource models for further details, using the intuitive API as follows:

$room = \App\Models\Room::find(1);

$room->bookings; // Get all bookings
$room->pastBookings; // Get past bookings
$room->futureBookings; // Get future bookings
$room->currentBookings; // Get current bookings
$room->cancelledBookings; // Get cancelled bookings

$room->bookingsStartsBefore('2017-06-21 19:28:51')->get(); // Get bookings starts before the given date
$room->bookingsStartsAfter('2017-06-21 19:28:51')->get(); // Get bookings starts after the given date
$room->bookingsStartsBetween('2017-06-21 19:28:51', '2017-07-01 12:00:00')->get(); // Get bookings starts between the given dates

$room->bookingsEndsBefore('2017-06-21 19:28:51')->get(); // Get bookings starts before the given date
$room->bookingsEndsAfter('2017-06-21 19:28:51')->get(); // Get bookings starts after the given date
$room->bookingsEndsBetween('2017-06-21 19:28:51', '2017-07-01 12:00:00')->get(); // Get bookings starts between the given dates

$room->bookingsCancelledBefore('2017-06-21 19:28:51')->get(); // Get bookings starts before the given date
$room->bookingsCancelledAfter('2017-06-21 19:28:51')->get(); // Get bookings starts after the given date
$room->bookingsCancelledBetween('2017-06-21 19:28:51', '2017-07-01 12:00:00')->get(); // Get bookings starts between the given dates

$customer = \App\Models\Customer::find(1);
$room->bookingsOf($customer)->get(); // Get bookings of the given customer

$room->rates; // Get all bookable Rates
$room->prices; // Get all custom prices

All the above properties and methods are actually relationships, so you can call the raw relation methods and chain like any normal Eloquent relationship. E.g. $room->bookings()->where('starts_at', '>', new \Carbon\Carbon())->first().

Query customer models

Just like how you query your resources, you can query customers to retrieve related booking info easily. Look at these examples:

$customer = \App\Models\Customer::find(1);

$customer->bookings; // Get all bookings
$customer->pastBookings; // Get past bookings
$customer->futureBookings; // Get future bookings
$customer->currentBookings; // Get current bookings
$customer->cancelledBookings; // Get cancelled bookings

$customer->bookingsStartsBefore('2017-06-21 19:28:51')->get(); // Get bookings starts before the given date
$customer->bookingsStartsAfter('2017-06-21 19:28:51')->get(); // Get bookings starts after the given date
$customer->bookingsStartsBetween('2017-06-21 19:28:51', '2017-07-01 12:00:00')->get(); // Get bookings starts between the given dates

$customer->bookingsEndsBefore('2017-06-21 19:28:51')->get(); // Get bookings starts before the given date
$customer->bookingsEndsAfter('2017-06-21 19:28:51')->get(); // Get bookings starts after the given date
$customer->bookingsEndsBetween('2017-06-21 19:28:51', '2017-07-01 12:00:00')->get(); // Get bookings starts between the given dates

$customer->bookingsCancelledBefore('2017-06-21 19:28:51')->get(); // Get bookings starts before the given date
$customer->bookingsCancelledAfter('2017-06-21 19:28:51')->get(); // Get bookings starts after the given date
$customer->bookingsCancelledBetween('2017-06-21 19:28:51', '2017-07-01 12:00:00')->get(); // Get bookings starts between the given dates

$room = \App\Models\Room::find(1);
$customer->isBooked($room); // Check if the customer booked the given room
$customer->bookingsOf($room)->get(); // Get bookings by the customer for the given room

Just like resource models, all the above properties and methods are actually relationships, so you can call the raw relation methods and chain like any normal Eloquent relationship. E.g. $customer->bookings()->where('starts_at', '>', new \Carbon\Carbon())->first().

⚠️ Documentation not complete, the package is under developement, and some part may encounter refactoring! ⚠️

Changelog

Refer to the Changelog for a full history of the project.

Support

The following support channels are available at your fingertips:

Contributing & Protocols

Thank you for considering contributing to this project! The contribution guide can be found in CONTRIBUTING.md.

Bug reports, feature requests, and pull requests are very welcome.

Security Vulnerabilities

If you discover a security vulnerability within this project, please send an e-mail to [email protected]. All security vulnerabilities will be promptly addressed.

About Rinvex

Rinvex is a software solutions startup, specialized in integrated enterprise solutions for SMEs established in Alexandria, Egypt since June 2016. We believe that our drive The Value, The Reach, and The Impact is what differentiates us and unleash the endless possibilities of our philosophy through the power of software. We like to call it Innovation At The Speed Of Life. That’s how we do our share of advancing humanity.

License

This software is released under The MIT License (MIT).

(c) 2016-2021 Rinvex LLC, Some rights reserved.

Comments
  • Class App\Room contains 3 abstract methods and must therefore be declared abstract

    Class App\Room contains 3 abstract methods and must therefore be declared abstract

    I am getting the following error. Any help would be appreciated.

    Class App\Room contains 3 abstract methods and must therefore be declared abstract or implement the remaining methods (App\Room::getBookingModel, App\Room::getRateModel, App\Room::getAvailabilityModel)

    opened by shahzad-sarwar 10
  • Undefined index 0 in BookableBooking boot method

    Undefined index 0 in BookableBooking boot method

    hi, just getting started with this package but i'm facing the error in the title. It seems that in the boot method

    protected static function boot()
        {
            parent::boot();
            static::validating(function (self $bookableAvailability) {
                [$price, $formula, $currency] = is_null($bookableAvailability->price)
                    ? $bookableAvailability->calculatePrice($bookableAvailability->bookable, $bookableAvailability->starts_at, $bookableAvailability->ends_at) : [$bookableAvailability->price, $bookableAvailability->formula, $bookableAvailability->currency];
                $bookableAvailability->currency = $currency;
                $bookableAvailability->formula = $formula;
                $bookableAvailability->price = $price;
            });
        }
    

    The calculatePrice function is returning an associative array, while php is expecting an indexed array when assigning the result of the calculatePrice function

    [$price, $formula, $currency] = [...]$bookableAvailability->calculatePrice([...])

    .. Am i missing something ?

    opened by ghost 7
  • Availability documentation

    Availability documentation

    I understand the documentation isn't complete, but could someone help me by explaining how you can create availabilities and check for clashes in dates?

    Thanks!

    opened by baj84 5
  • Documentation

    Documentation

    From the README

    Usage

    Rinvex Bookings has been specially made for Eloquent and simplicity has been taken very serious as in any other Laravel related aspect.

    Add bookable functionality to your resource model

    To add bookable functionality to your resource model just use the \Rinvex\Bookings\Traits\Bookable trait like this:

    namespace App\Models;
    
    use Rinvex\Bookings\Traits\Bookable;
    use Illuminate\Database\Eloquent\Model;
    
    class Room extends Model
    {
        use Bookable;
    }
    

    That's it, you only have to use that trait in your Room model! Now your rooms will be bookable.

    Add bookable functionality to your customer model

    To add bookable functionality to your customer model just use the \Rinvex\Bookings\Traits\HasBookings trait like this:

    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model;
    use Rinvex\Bookings\Traits\HasBookings;
    
    class Customer extends Model
    {
        use HasBookings;
    }
    

    Again, that's all you need to do! Now your Customer model can book resources.


    That's not all you need to do. It would be helpful if the abstract functions in these traits were documented and explained, i.e. getBookingModel, getRateModel, getAvailabilityModel. Overall the documentation is somewhat sparse.

    I am still exploring this package but it seems like it will be a good fit for my application, but the setup was a bit confusing.

    opened by rshreeharini 4
  • Missing functionality that is present in the documentation.

    Missing functionality that is present in the documentation.

    I see some critical methods and services that are present in the documentation but in reality missing from the code base. For example the newPrice() is not available anywhere. I am missing something? Was the documentation written before the actual code?

    opened by jonagoldman 4
  • Documentation

    Documentation

    The project sounds cool but too bad, I tried using this in my scenario and I feel like the documentation is lacking something I don't know what exactly but when I just do as per the documentation I face many errors I don't know why tried fixing a few but still more error. if by any chance you could point to me where to read more of this or a working example.

    opened by kevinwaxi 3
  • How to cancel booking

    How to cancel booking

    I set canceled_at to now, but it occurs error when saving. Without any change, saving BookableBooking model occurs error. It seems 'options' member, It is null, but error is 'The options must be an array'

    opened by tree1891 3
  • Endless redirection on Booking update

    Endless redirection on Booking update

    Hello,

    I'm trying tu update my Booking object extended from BookableBooking.

    Booking::create(...); works fine.

    Retrieving the booking in database $booking = Booking::find($booking_id); works fine.

    But after that when I try to update

    $booking->update([
        'total_paid' => $total_paid
    ]);
    

    or save

    $booking->total_paid = $total_paid;
    $booking->save();
    

    I get an endless loop.

    DB::table('bookable_bookings')->where('id', $booking_id)->update(['total_paid' => $total_paid]); works fine but is kinda ugly...

    Any idea on what could be going on there or how to fix this please ?

    opened by ShapesGraphicStudio 3
  • Return value of App\Room::newBooking() must be an instance of Rinvex\Bookings\Models\BookableBooking, instance of App\Booking returned

    Return value of App\Room::newBooking() must be an instance of Rinvex\Bookings\Models\BookableBooking, instance of App\Booking returned

    Hi,

    I am getting this issue

    Return value of App\Room::newBooking() must be an instance of Rinvex\Bookings\Models\BookableBooking, instance of App\Booking returned

    Testing using this code in my controller

    $customer = auth()->user();
      $room->newBooking($customer, '2017-07-05 12:44:12', '2017-07-10 18:30:11');
    

    Please point me in the right direction

    Room Model

    
    namespace App;
    
    
    use Rinvex\Bookings\Traits\Bookable;
    use Illuminate\Database\Eloquent\Model;
    
    class Room extends Model
    {
        //
        use Bookable;
    
         /**
         * Get the booking model name.
         *
         * @return string
         */
        public static function getBookingModel(): string
        {
            return Booking::class;
        }
    
        /**
         * Get the rate model name.
         *
         * @return string
         */
        public static function getRateModel(): string
        {
            return Rate::class;
        }
    
        /**
         * Get the availability model name.
         *
         * @return string
         */
        public static function getAvailabilityModel(): string
        {
            return Availability::class;
        }
    }
    

    User Controller

    
    namespace App;
    
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Contracts\Auth\MustVerifyEmail;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use Rinvex\Bookings\Traits\HasBookings;
    
    class User extends Authenticatable
    {
        use Notifiable;
        use HasBookings;
    
        /**
         * The attributes that are mass assignable.
         *
         * @var array
         */
        protected $fillable = [
            'name', 'email', 'password',
        ];
    
        /**
         * The attributes that should be hidden for arrays.
         *
         * @var array
         */
        protected $hidden = [
            'password', 'remember_token',
        ];
    
           /**
         * Get the booking model name.
         *
         * @return string
         */
        public static function getBookingModel(): string
        {
            return Booking::class;
        }
    }
    
    opened by absmugz 3
  • Many To Many Relation

    Many To Many Relation

    Hello, first I want to thank you for sharing this great package.

    I was wondering if it is possible to have multiple users attached to the same booking. In my use case, I use spatie/permissions to add role functionality to the users, so the same table can have customers, suppliers, and a few levels of admins. The thing is that I would like to, not only associate the booking with the user who is actually making the reservation, but also be able to attach the booking to supplier who is in charge of delivering that booked service.

    I went through the code, and I noticed, that you have a polymorphic relation between the bookable resource and the user model that has the trait HasBookings. Would it make sense to change it to a ManyToMany Polymorphic?

    Does this makes any sense?

    I just forked the package to try make it work for me. If it does, would you care to include this feature in your code?

    Best regards.

    opened by angelformica 3
  • Date based rates

    Date based rates

    Thanks for sharing this package!

    I looked through the code, but couldn't find an answer... Is there a way to set booking rates based on other things than quantity of a specific unit?

    I.e. to have a different rate for a weekend / midweek etc.?

    opened by sandervanhooft 3
Owner
Rinvex
value.reach.impact
Rinvex
Rinvex Subscriptions is a flexible plans and subscription management system for Laravel

Rinvex Subscriptions is a flexible plans and subscription management system for Laravel, with the required tools to run your SAAS like services efficiently. It's simple architecture, accompanied by powerful underlying to afford solid platform for your business.

Rinvex 703 Dec 18, 2022
classroombookings - open source room booking system for schools.

This is a web-based room booking system for schools and is designed to be as easy to use as possible. Set up your bookable rooms, day schedule and timetable for the year. Add user accounts, and allow them to make and manage bookings from anywhere.

Craig A Rodway 127 Nov 20, 2022
Meeting Room Booking System

Meeting Room Booking System

Meeting Room Booking System (MRBS) 38 Dec 27, 2022
Bus ticket booking management system

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

Tasnim Farah 2 Jul 8, 2022
Hotel & Booking Reservation Ecommerce system on Prestashop

QloApps - An open source and free platform to launch your own hotel booking website Topics Introduction Requirements Installation & Configuration Lice

Webkul 570 Jan 3, 2023
An attempt at a usable, generic VPS panel for providers and power users.

An attempt at a usable, generic VPS panel for providers and power users. Key goals are to be clean, easy to use, and support Proxmox as well as other providers (Libvirt via Go API, etc) using one simple interface.

null 1 Oct 3, 2022
An Online Movie Booking Website whose data is completely from a database

An Online Movie Booking Website whose data is completely from a database to ensure that it can be implemented in a real time scenario as any change of data needs to be done only in the database using SQL queries and the changes are immediately reflected.

Arunachalam M 7 Apr 13, 2022
Ocean Era Resort Booking Website

Ocean Era Resort Booking Website(College Mini Project) DBMS College Project Landing Page Landing Page (contd) Admin Login ?? Steps to Configure This P

Amal Prasad 1 Jan 22, 2022
DooTask is a lightweight open source online project task management tool that provides various document collaboration tools, online mind mapping, online flowcharting, project management, task distribution, instant IM, file management and other tools.

DooTask is a lightweight open source online project task management tool that provides various document collaboration tools, online mind mapping, online flowcharting, project management, task distribution, instant IM, file management and other tools.

kuaifan 3k Jan 5, 2023
simple laravel zoho library no db required it use cache to store token

zoholib laravel simple zoho library installation composer create-project yls/zoholib Library to use part of https://desk.zoho.com/DeskAPIDocument list

Put 1 Nov 17, 2021
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.

Lychee A great looking and easy-to-use photo-management-system. Since the 1st of April 2018 this project has moved to it's own Organisation (https://g

Tobias Reich 6.2k Jan 5, 2023
Download Porn Adult XXX Videos Online Ready Site No Installation No Database Required

Download Porn Adult XXX Videos Online Ready Site No Installation No Database Required PHP / HTML How to USE Search Videos from any of the Supported Si

null 16 Apr 17, 2022
Translate laravel resource, vendor, folder or file from google translation without requiring any api information

⚡ ⚡ ⚡ Laravel Go Translate Translate laravel resource, vendor, folder or file from google translation without requiring any api information. Table of

CodeBugLab 37 Jun 18, 2022
This is a clone of Angry birds's homepage built using Wordpress, it is configured to run on the Pantheon platform.

Angry-Birds-UI-Clone Description This is a clone of Angry birds's homepage built using Wordpress, it is configured to run on the Pantheon platform. Li

Abir Bouhriz Daidj 3 Oct 20, 2021
Simple Dynamic DNS Web management self-hosting. Run over dnsmasq.

MyDDNS [BETA] Simple Dynamic DNS Web management self-hosting. It use dnsmasq. It was inspired on duckdns.org. Preparation You need root access to a se

Iván Eixarch 4 Jul 6, 2022
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
BraincraftedBootstrapBundle integrates Bootstrap into Symfony2 by providing templates, Twig extensions, services and commands.

BraincraftedBootstrapBundle BraincraftedBootstrapBundle helps you integrate Bootstrap in your Symfony2 project. BootstrapBundle also supports the offi

Braincrafted 403 Aug 13, 2022
A tool to manage your families and friends recipes like a chef.

RecipeManager Api and Frontend to Manage your recipes. Written with Laravel and Vue.js. A tool to manage your families and friends recipes like a chef

Suhype 34 Nov 27, 2022
Laravel-Library-Management-system is nice to management library system...

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

Eng Hasan Hajjar 2 Sep 30, 2022