Download the PHP package a2zwebltd/laravel-feature-voting without Composer

On this page you can find all versions of the php package a2zwebltd/laravel-feature-voting. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-feature-voting

Laravel Feature Voting

A portable Laravel engine for feature requests, one-vote-per-user voting, and status updates — with optional Blade and Livewire UI layers.

Packagist Version Downloads PHP Laravel

Drop a feature-voting board into any Laravel app. Users submit ideas, vote (one vote per user, toggleable), and comment. Admins update the status (under_review → planned → in_progress → completed or declined) and submitters are emailed when it changes.

Three layers, each opt-in from the one below:

  1. Engine — models, migrations, service, events, policies, mailables. Always works.
  2. HTTP + Blade — controllers, routes, Tailwind-styled views. Works in any Laravel + Tailwind app.
  3. Livewire — reactive vote button, inline commenting, sortable board. Auto-registers only when livewire/livewire is installed.

Screenshots

Board Submit a request
Feature voting board Request submitted
Admin list Status-change email
Requests list Status update email

Features


Requirements


Installation

Publish and migrate:

Publish the migration once. Each publish writes a new file stamped with the current time, so publishing again (or running vendor:publish --all) creates a duplicate create_feature_voting_tables migration that fails with "table already exists". If your app already has one, skip this tag when upgrading.

Upgrading from v1.0 / v1.1

v1.2 adds a published_at column (moderation). Your existing create_feature_voting_tables migration stays as it is. Publish the new, separate migration and run it:

It adds the column and sets published_at = created_at on every existing request, so your board stays exactly as it was. It checks for the column first, so running it on a fresh install (where the create migration already has the column) does nothing. Until you run it, keep moderation off: with moderation off the package never touches the column.

Optionally publish the views if you want to restyle them:


Configuration

config/feature-voting.php:

.env:

Define who is an admin

The package delegates the "is this user an admin?" decision to a Gate the consumer app defines:

If no gate is registered, the package falls back to comparing $user->email to config('feature-voting.admin_email'). If neither is set, nobody is an admin (fail-closed).

Point the views at your own layout

The shipped pages render inside a layout you control. In your published config/feature-voting.php, pick the style your layout uses.

A classic layout that @yields a section:

A Blade component layout that renders {{ $slot }} (e.g. <x-layouts.app>):

Namespaced anonymous components work too: with Blade::anonymousComponentPath(resource_path('views/layouts'), 'layouts'), set 'component' => 'layouts::app'.

When component is set, layout and section are ignored. If you published index.blade.php / show.blade.php before v1.1, update their @extends(...) line from the package views, or set 'layout' => 'feature-voting::layouts.component' alongside component.

Extra middleware for admin routes

routes.middleware wraps every route. routes.admin_middleware is added on top for the two admin-only routes (PATCH {slug}/admin, DELETE {slug}):

The policy still checks the admin Gate, so this is an extra layer, not a replacement.

Moderation

One board shared by many customers can leak a detail someone typed into a title. Turn on moderation and every new request stays private until an admin approves it:

With moderation on:

With moderation off (the default) new requests get published_at = now() and nothing else changes. The package does not read the column at all then, so apps that never ran the v1.2 migration keep working.

Translations and mail locale

The package ships no lang files. Every string in the views, flash messages, status labels and mail subjects goes through __() with the English text as the key, so you translate it in your app's lang/<locale>.json:

Counts use trans_choice(). Placeholders (:title, :status, :count) keep word order up to the translator. To list every key, grep the package for __(' and trans_choice('.

Mails to a submitter are sent to the user model (Mail::to($user)), so if your User implements Illuminate\Contracts\Translation\HasLocalePreference, the status and publish mails go out in that user's language. The admin mail goes to the admin_email address in the app locale.


Usage

Drop-in: use the shipped pages

After install you get a working board at /feature-requests. Add a link from your app's nav:

Embed Blade components into your own pages

Use the Livewire components

Call the engine directly

Listen for events


Data model

feature_requests — id, user_id (nullable), title, slug unique, description, status, votes_count, comments_count, admin_response, admin_responded_at, metadata (json), published_at (nullable, since v1.2), timestamps, soft deletes.

feature_request_votes — id, feature_request_id, user_id, timestamps. Unique (feature_request_id, user_id).

feature_request_comments — id, feature_request_id, user_id (nullable), body, is_admin_response, timestamps, soft deletes.


Disabling the HTTP layer

If you want to wire your own routes:

Then use the service directly and/or mount the Blade components into your own controllers.


AI agents (Laravel Boost)

This package ships a Laravel Boost guideline and a feature-voting-integration skill (admin Gate, layouts, events, custom routes, view overrides). Boost 2 or newer is required. In your app:

Select a2zwebltd/laravel-feature-voting when asked. Boost only scans packages your app requires directly in composer.json.


Testing


Security Vulnerabilities

If you discover a security vulnerability, please report it responsibly through private communication with the maintainers.


License

MIT. See LICENSE.

Credits

Developed and maintained by the A2Z WEB crew:


All versions of laravel-feature-voting with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
laravel/framework Version ^12.0|^13.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package a2zwebltd/laravel-feature-voting contains the following files

Loading the files please wait ...