LaravelStarter

Restful-API-Starter — Laravel Starter Template

By omarfawzi

A Laravel-based RESTful API starter that uses OpenAPI specifications to drive route registration and request validation.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-13View source

What stands out

A quick read of the recorded project description.

01

Routes are imported from OpenAPI specifications; accessing paths not defined in the specification results in an error

02

Integrates an OpenAPI PSR-7 message validator to validate requests according to the specification

03

Security authentication is executed according to OpenAPI specifications, handled by AuthenticationManager

04

Provides Makefile commands covering service rebuild, specification merge and validation, local Swagger UI hosting, and test execution

05

New endpoints require defining an operationId in the specification and registering it in ApiHandler::MAP

Template Details

Restful-API-Starter is a Laravel starter project that aims to delegate RESTful API request structure validation to OpenAPI specifications, allowing developers to focus on business logic validation and implementation. The project requires PHP 8.0 or higher, MySQL 8, and Laravel 9.

Its core mechanism is that routes are no longer written manually one by one but imported from OpenAPI specifications, so accessing paths not defined in the specification returns an error directly; security authentication is also executed according to the specification, handled by App\Modules\OpenApi\Services\AuthenticationManager. Request validation relies on thephpleague/openapi-psr7-validator, an OpenAPI PSR-7 message validator, with specification files placed in the storage/app/schema directory.

In terms of workflow, the project provides commands via a Makefile: make rebuild to rebuild and start services, make bundle to merge and validate specifications, make swagger-ui to host OpenAPI specifications locally, and make test to run tests. When adding new endpoints, you need to define an operationId for the operation in the specification and register that operationId with the corresponding RequestHandler in the MAP of app/Modules/Api/ApiHandler.php.

In terms of limitations, the project materials do not state its production readiness, performance, or other capabilities beyond the dependencies mentioned above; the licensing of third-party assets such as demo images, fonts, and icons must be checked separately.

LaravelStarter

Is it right for your project?

Use Cases

  • Laravel API projects that need OpenAPI specifications as the single source for routing and request validation
  • Teams that want to separate request structure validation from business code and focus on business logic implementation
  • Development workflows that require locally hosting and viewing OpenAPI specification documentation
  • API services in container environments that use a Makefile to uniformly manage builds, specification bundling, and testing

Suitable For

  • Developers using Laravel who accept OpenAPI specification-driven routing
  • API teams that need unified request validation and authentication specifications
  • Projects accustomed to organizing local development commands with a Makefile

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    The environment must meet PHP >= 8.0, MySQL 8, and Laravel 9

  2. 2

    Run make rebuild to rebuild and start services

  3. 3

    Local development requires installing npm

  4. 4

    Add OpenAPI specifications under storage/app/schema and define an operationId for each new operation

  5. 5

    Add the operationId and corresponding RequestHandler to the MAP in app/Modules/Api/ApiHandler.php

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
  • There are hard runtime requirements: PHP version must be at least 8.0, the database must be MySQL 8, and the framework must be Laravel 9; versions below or above these may not work properly.
  • Local development requires additionally installing npm (Node.js package manager), which is an external tool dependency outside the project.
  • Routing is entirely determined by OpenAPI specifications; accessing paths not defined in the specification returns an error directly, and you cannot bypass the specification to add routes yourself.
  • New endpoints must be added to the OpenAPI specification under storage/app/schema, and each operation must define an operationId, otherwise it cannot be integrated.
  • The new operationId must be registered together with the corresponding RequestHandler in ApiHandler::MAP in app/Modules/Api/ApiHandler.php, otherwise requests cannot be processed.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

- PHP >= 8.0 - MYSQL 8 - Laravel 9

Original README

- Install [npm](https://nodejs.org/en/download) for local development.

Original README

this also means that accessing any routes not specified in the open api specifications would return an error.

Original README

Add your open api specifications (under `storage/app/schema`) and **don't** forget to define an `operationId` for your new operation.

Original README

Add the new `operationId` and the corresponding `RequestHandler` to the `ApiHandler::MAP` (located at `app/Modules/Api/ApiHandler.php`).

Original README
https://github.com/omarfawzi/Restful-API-Starter/blob/main/LICENSEhttps://github.com/omarfawzi/Restful-API-Starter/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-13. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
Partly documented · 68 / 100
Technologies
Laravel
Website type
Starter
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2022-09-11
Screenshot last checked
2026-10-13

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Laravel as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: [email protected] · 2026-10-13

Inspect the recorded source material

SHA-256: 150f323a1c1c8cb850d8c88131271ce40ab38eec6697a1861b60e036f8135b40

2026-10-13T06:00:01.867Z

Source file / repository
[![Testing](https://github.com/omarfawzi/Restful-API-Starter/actions/workflows/main.yml/badge.svg)](https://github.com/omarfawzi/Restful-API-Starter/actions/workflows/main.yml)

# Restful API Starter

**Avoid** request schema code validation, starter which is integrated with the agnostic open api schema + validation in order to provide the best restful design for your API services, care about your business logic validation, implementation and leave the starter to take care of the rest.  

### Request Life Cycle

![Chart.drawio.png](https://github.com/omarfawzi/Restful-API-Starter/blob/main/Chart.png)

### Requirements
- PHP >= 8.0
- MYSQL 8
- Laravel 9

### Powered By
- Open API (3.0.2)
- [OpenAPI PSR-7 Message (HTTP Request/Response) Validator](https://github.com/thephpleague/openapi-psr7-validator)

### Specifications 

Added under `storage/app/schema` ([Live](https://omarfawzi.github.io/Restful-API-Starter/)).

### Routes

Routes are imported from the open api specifications to provide a more generic way for configuring routes, 
this also means that accessing any routes not specified in the open api specifications would return an error.

For more info check `App\Providers\RouteServiceProvider::configureRoutes`

### Security

Security is done based on the specification as well and handled by the `App\Modules\OpenApi\Services\AuthenticationManager`

### Get Ready
- `make rebuild` to rebuild and start services.
- Install [npm](https://nodejs.org/en/download) for local development.
- Add your open api specifications (under `storage/app/schema`) and **don't** forget to define an `operationId` for your new operation.
- Add the new `operationId` and the corresponding `RequestHandler` to the `ApiHandler::MAP` (located at `app/Modules/Api/ApiHandler.php`). 
- `make bundle` to combine and validate your specs.
- `make swagger-ui` to host your open api specs locally [localhost](http://localhost:8081).
- `make test` to start running tests.

Have a look over [Makefile](https://github.com/omarfawzi/Restful-API-Starter/blob/main/Makefile) for more options.

### Contributions

Feel free to create Pull Requests.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.