Apiato Framework: Build Large Scalable API-First Apps with Laravel
Build scalable APIs faster | With PHP and Laravel
About Laravel?
Laravel is an open-source PHP web application framework that follows the Model-View-Controller (MVC) pattern and offers features such as routing, middleware, and authentication. It is maintained by Taylor Otwell and has a large community of contributors.
Apiato; API-centric Framework
Apiato is a framework that helps you build scalable and testable API-centric applications with PHP on top of Laravel. It offers tools and functionalities that facilitate the development of any API-centric app. Apiato uses the best frameworks, tools, and conventions to deliver a rich set of features for modern PHP applications.
The reason for this is because setting up a solid API from scratch can be time-consuming, and Apiato provides core features of robust APIs that are fully documented and free. This allows you to focus on writing your business logic and deliver faster to your clients.
Apiato is an open-source project released under the MIT license. This platform was developed and is currently being maintained by a growing and enthusiastic community of experienced Laravel developers. Through collaborative efforts, the community has added many new features and improvements to the platform that have allowed it to become a flexible and powerful tool for developers. The developers behind Apiato are committed to providing ongoing support and improvements to this project, ensuring that it remains a valuable resource for developers around the world.
Apiato comes with developer-friendly rich documentation that makes it easy for Laravel developers of any level to start building scalable apps using it.
Features
- Authentication: OAuth2.0 for first/third-party clients (using Laravel Passport).
- Role-based Access Control (RBAC): Role-Based Access Control (RBAC), seeded with a Super Admin, Roles and Permissions.
- Query Parameters support (orderBy, sortedBy and filter) with full-text search.
- Useful Endpoints for managing users, roles/permissions, tokens and more.
- API Documentations generator, to generate API docs from PHP Docblock using ApiDocJS (provided by Documentation Container).
- Supports CORS (Cross-Origin Resource Sharing) and JSONP (JSON with padding).
- Auto encoding/decoding of real ID's, to prevent exposing real ID's to the outer world.
- API Throttling (rate limiting to control the rate of traffic received and protect your server).
- Support "include" request parameter to load nested relationships.
- Support Data Caching (with auto clearing on Create, Update and Delete).
- API versioning in the URL or Header (versioning based on the route file name).
- Exception handling with custom error responses.
- Support Shallow ETag HTTP Header, to reduce client bandwidth.
- Localization - easily switch between languages via request header field (provided by Localization Container).
- Automatic Data Pagination (meta links to the next and previous data).
- WEB and API Auth Middlewares. With Proxy endpoints for safer authentication of first-party Apps.
- HTTP Requests/Response Monitor and DB Query Debugger (provided by Debugger Container).
- Profiler, to display profiling data in the response (using Laravel Debugbar).
- Social Authentication supported out of the box "Facebook, Twitter, Google+" Using Laravel Socialite (provided by SocialAuth Container).
- Type-Casting JSON responses and pagination results with Transformers (using Fractal).
- Useful Tests Helpers for faster and more enjoyable automated testing (using PHPUnit).
- Support multiple response payload formats (JSON API spec v1.0, Data Array & pure Data).
- Automatic dates conversion to ISO format in responses, from the Transformers.
- Support Stripe payment gateway, extendable to support other payment gateways (provided by Payment Container).
- System and user level settings out of the box (provided by Settings Container).
- Easy Validation and Authorization (for User data, accessibility and ownership) with Requests objects.
- Maintainable and scalable Software Architectural Pattern (using the Porto SAP).
- Code generator commands, for generating full CRUD operations, and other useful commands.
- Separation of UI's (Web, API and CLI) components (routes, controllers, requests, tests...).
- Fully detailed documentation, with code samples, principles, definitions and guidelines.
- 100% customizable and open code. Using the greatest frameworks, tools, packages and standards.
Requirements
- GIT
- PHP >= 8.0.2
- Composer
- PHP Extensions:
- OpenSSL PHP Extension
- PDO PHP Extension
- Mbstring PHP Extension
- Tokenizer PHP Extension
- BCMath PHP Extension (required when the Hash ID feature is enabled)
- Intl Extension (required when you use the Localization Container)
Architecture
Apiato is built using the new architectural pattern Porto.
Porto SAP is a modern Software Architectural Pattern, designed to help developers organize their Code in a super maintainable way. It is very helpful for big and long term projects, as they tend to have higher complexity with time.
Porto is particularly well-suited for medium to large-sized web projects that require a high degree of flexibility and scalability. With Porto, developers can build highly scalable monoliths that can be easily split into multiple microservices whenever needed. This approach enables the reuse of business logic or application features across multiple projects, making it an ideal choice for teams that work on a variety of different projects.
It is built on a foundation of several established architectural concepts, including Domain Driven Design (DDD), Modular, Micro Kernel, Model View Controller (MVC), Layered, and Action Domain Responder (ADR) architectures. By drawing on these established concepts, Porto provides developers with a reliable and well-tested framework for building software.
It's completely optional to build your application using the Porto architecture. Alternatively, you can build it using the MVC architecture, and still benefit from all the features of Apiato.
License
- MIT license