A flawless framework for building scalable and testable API-Centric Applications with PHP.
APIATO is designed to help you build scalable API's faster, by providing tools and functionalities that facilitates the development of any API-Centric App.
It uses the best frameworks, tools and conventions in a creative way to deliver a rich set of features in a modern PHP Application.
Why!? setting up a solid API from scratch is time consuming (and time is money). APIATO gives you the core features of robust API's, so you can focus on your business logic and deliver faster. Skip the repetitive work and enjoy the open source fun.
Today we’re living in a digital era, where almost everything is connected to the Internet.
Building cross-devices applications is becoming a must. And to do it, you need APIs (Application Programing Interfaces).
Web developers are used to serve HTML pages directly from the Backend. However, this traditional method has many disadvantages nowadays.
API's can serve anything and everything (Mobile Apps, Web Apps, Smart TVs, Smart Watches,...). As well as, it can be exposed to the world allowing developers to interact with your Application and help growing your business.
API-Centric Apps allows Frontend (Web + Mobile) and Backend developers to work on their codes in parallel. After the Frontend Apps are ready they get attached to the Backend (API-Centric) code to start functioning. This leads to zero decoupling between the Frontend and the Backend code and also removes the dependencies. The API documentation acts as the contract between both sides during the development life cycle of all the Apps.
APIATO comes with great features:
- OAuth2.0 authentication for first and third-party clients (using Laravel Passport).
- Role-Based Access Control (RBAC), seeded with a Super Admin, Roles and Permissions.
- Query Parameters support (orderBy, sortedBy, filter, include) with full-text search (search, searchFields).
- Useful endpoints for managing users, roles/permissions, tokens and more, all implemented, documented and covered with functional Tests.
- Easy API Documentations generator (using the ApiDocJS tool).
- Supports for CORS "Cross-Origin Resource Sharing", allowing access from different domians.
- Auto encoding/decoding of real ID's, to prevent exposing real ID's to the outer world.
- API Throttling (Rate Limiting).
- Exception handleing with custom JSON errors responses.
- Data Caching support (with auto clearing on Create, Update and Delete).
- Easy API versioning in the URL, through the route files names.
- Social Authentication supported out of the box (Facebook, Twitter, Google+).
- Localization support (multiple languages via Content-Language header).
- Automatic Data Pagination (meta links to next and previous data).
- Http Requests/Response Monitor and DB Query Debugger (from the Debugger Container).
- Type-Casting JSON responses with Transformers (Using Fractal).
- Custom Tests Helpers for faster and more enjoyable automated testing (using PHPUnit).
- Optional support for the JSON API specification v1.0.
- Automatic dates conversion to ISO format in responses.
- Optional support for JSON with padding (JSONP).
- Support Stripe payment gateways (easy to extend and cover other gatways).
- WEB and API Authentication Middlewares.
- Maintainable and scalable Software Architectural Pattern (using Porto SAP).
- Code generator, allows generating Containers of code for faster development.
- Separation of Web, API and CLI routes, controllers, requests and more.
- Ready Admin dashboard infrastructure.
- Fully detailed documentation (on apiato.io).
- 100% customizable and Open Code.
- And much more...
APIATO is built with a new architectural pattern called 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.
Taking a look at the Porto document before digging in APIATO, will help you understand how the code is organized and how things work. However, you do NOT have to follow any of the Porto conventions to benifit from all the features that APIATO provides.
If you feel safe writting all your code in the Controller
component; do it, no one can stop you! You might also consider using the Action
component as a "Service Class" to share code between your Controllers
.
Join our Slack chatting room, by clicking on the icon below.
Created by Mahmoud Zalt (Twitter @Mahmoud_Zalt).
And a list of awesome contributors:
The MIT License (MIT).