surya-narayan/laravel-api-starter

A production-ready, reusable Laravel API Starter Kit package

Maintainers

Package info

github.com/surya0437/laravel-api-starter

pkg:composer/surya-narayan/laravel-api-starter

Transparency log

Statistics

Installs: 4

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.1 2026-08-26 12:04 UTC

This package is auto-updated.

Last update: 2026-08-26 12:21:19 UTC


README

Latest Version on Packagist GitHub Tests Action Status License

A production-ready, reusable Laravel package that provides a clean, Laravel-native foundation for building secure, scalable, and maintainable REST APIs.

Laravel API Starter Kit helps you eliminate repetitive API boilerplate by providing standardized responses, authentication, request tracing, query utilities, rate limiting, health checks, logging, and Artisan generators out of the box.

Requirements

  • PHP ^8.3
  • Laravel 12.x
  • Laravel Sanctum ^4.0

Features

  • Laravel 12 & PHP 8.3+ Ready

  • Laravel Sanctum Authentication

    • Register
    • Login
    • Logout
    • Current authenticated user
    • Password reset
    • Email verification
    • Token abilities
  • Standardized API Responses

    • Success responses
    • Error responses
    • Validation errors
    • Paginated responses
  • Request ID Middleware

    • Automatically generates X-Request-Id
    • Preserves an existing request ID
    • Supports request tracing and log correlation
  • API Query Utilities

    • Whitelisted filters
    • Searching
    • Sorting
    • Pagination
  • Configurable Rate Limiting

  • API Versioning

  • Safe Request Logging

    • Sanitizes configured sensitive parameters
  • System Health Checks

    • Database connectivity
    • Cache connectivity
  • Artisan Generators

    • API Controllers
    • API Resources
    • Form Requests
    • Services
    • CRUD scaffolding
  • Centralized Configuration

  • Laravel Package Auto-Discovery

Installation

Install the package using Composer:

composer require surya-narayan/laravel-api-starter

Then run the installation command:

php artisan api-starter:install

The installer prepares the package resources and configuration required by your application.

Install with Example CRUD

To install the package together with example CRUD scaffolding:

php artisan api-starter:install --with-example

Configuration

Publish the package configuration:

php artisan vendor:publish --tag=api-starter-config

The configuration file will be available at config/api-starter.php.

Example configuration:

return [

    /*
    |--------------------------------------------------------------------------
    | Package
    |--------------------------------------------------------------------------
    */

    'enabled' => env('API_STARTER_ENABLED', true),

    /*
    |--------------------------------------------------------------------------
    | API Prefix
    |--------------------------------------------------------------------------
    */

    'prefix' => 'api',

    /*
    |--------------------------------------------------------------------------
    | API Versioning
    |--------------------------------------------------------------------------
    */

    'versioning' => [
        'enabled' => true,
        'default' => 'v1',
    ],

    /*
    |--------------------------------------------------------------------------
    | Authentication
    |--------------------------------------------------------------------------
    */

    'authentication' => [
        'enabled' => true,
        'driver' => 'sanctum',
    ],

    /*
    |--------------------------------------------------------------------------
    | Pagination
    |--------------------------------------------------------------------------
    */

    'pagination' => [
        'default' => 15,
        'max' => 100,
    ],

    /*
    |--------------------------------------------------------------------------
    | Rate Limiting
    |--------------------------------------------------------------------------
    */

    'rate_limit' => [
        'enabled' => true,
        'requests' => 60,
        'minutes' => 1,
    ],

    /*
    |--------------------------------------------------------------------------
    | Request Logging
    |--------------------------------------------------------------------------
    */

    'logging' => [
        'requests' => false,
    ],

    /*
    |--------------------------------------------------------------------------
    | Health Checks
    |--------------------------------------------------------------------------
    */

    'health' => [
        'enabled' => true,
        'database' => true,
        'cache' => true,
    ],

];

Standard API Responses

The package provides a reusable base ApiController with standardized response helpers.

Extend Surya\ApiStarter\Http\Controllers\ApiController:

use Surya\ApiStarter\Http\Controllers\ApiController;

class UserController extends ApiController
{
    public function show($id)
    {
        $user = User::findOrFail($id);

        return $this->success(
            data: $user,
            message: 'User retrieved successfully.'
        );
    }
}

Example response:

{
  "success": true,
  "message": "User retrieved successfully.",
  "data": {
    "id": 1,
    "name": "John Doe",
    "email": "john@example.com"
  },
  "meta": {
    "request_id": "01K...",
    "version": "v1"
  }
}

API Query Trait

The ApiQueryTrait provides controlled filtering, searching, sorting, and pagination for Eloquent models.

Add the Trait to a Model

use Illuminate\Database\Eloquent\Model;
use Surya\ApiStarter\Traits\ApiQueryTrait;

class Product extends Model
{
    use ApiQueryTrait;

    protected array $apiFilters = [
        'category_id',
        'status',
    ];

    protected array $apiSearch = [
        'name',
        'description',
    ];

    protected array $apiSorts = [
        'name',
        'price',
        'created_at',
    ];
}

Filtering

GET /api/v1/products?filter[status]=active&filter[category_id]=5

Searching

GET /api/v1/products?search=phone

Sorting

GET /api/v1/products?sort=-price

Pagination

GET /api/v1/products?page=1&per_page=20

Controller Usage

use Illuminate\Http\Request;

public function index(Request $request)
{
    $products = Product::query()
        ->apiQuery($request)
        ->apiPaginate($request);

    return $this->paginated($products);
}

Authentication

Authentication is powered by Laravel Sanctum. The package provides endpoints for:

  • Registration (POST /api/v1/auth/register)
  • Login (POST /api/v1/auth/login)
  • Logout (POST /api/v1/auth/logout)
  • Current authenticated user (GET /api/v1/auth/me)
  • Password reset
  • Email verification
  • Token abilities check middleware

API Versioning

API versioning can be enabled from the package configuration:

'versioning' => [
    'enabled' => true,
    'default' => 'v1',
],

Endpoints structure: /api/v1/...

Request IDs

The package provides automatic request tracing through the X-Request-Id header.

Example:

X-Request-Id: 01K123456789

Rate Limiting

Configured centrally in config/api-starter.php:

'rate_limit' => [
    'enabled' => true,
    'requests' => 60,
    'minutes' => 1,
],

Request Logging

Configured in config/api-starter.php:

'logging' => [
    'requests' => true,
],

Request parameters specified in redaction filters are automatically sanitized.

Health Checks

Built-in API health check endpoint:

GET /api/v1/health

Or via CLI:

php artisan api-starter:health

Artisan Generators

API Controller

php artisan make:api-controller ProductController

API Resource

php artisan make:api-resource ProductResource

API Request

php artisan make:api-request StoreProductRequest

API Service

php artisan make:api-service ProductService

Complete CRUD Scaffolding

php artisan make:api-crud Product

Available Commands

Command Description
api-starter:install Install and configure the package
api-starter:install --with-example Install the package with example CRUD
api-starter:status Display package status
api-starter:health Run system health checks
make:api-controller Generate an API controller
make:api-resource Generate an API resource
make:api-request Generate an API request
make:api-service Generate an API service
make:api-crud Generate a complete API CRUD structure

Testing & Quality Assurance

Install development dependencies:

composer install

Run test suite (Pest PHP):

composer test

Run code style check (Pint):

composer lint

Run static analysis (PHPStan):

composer analyse

Contributing

Contributions, bug reports, and pull requests are welcome.

Before submitting a pull request, please ensure all quality checks pass:

composer test
composer lint
composer analyse

License

The Laravel API Starter Kit is open-sourced software licensed under the MIT License.

Package Information

Attribute Value
Package surya-narayan/laravel-api-starter
PHP ^8.3
Laravel 12.x
Authentication Laravel Sanctum
License MIT
GitHub surya0437/laravel-api-starter
Packagist surya-narayan/laravel-api-starter

Author

Surya Narayan Chaudhary