Skip to main content

Porto SAP

Modern Software Architectural Pattern

Welcome to the Future of Backend Engineering



Section 2
Ocean Layers
(Dependencies)
Ship Layer
(Shared Code)
Section 1
Engine Room
(Core Services)
Containers Bay
(Base Classes)
Bridge Deck
(Shared Interfaces)
Ship Ballast
(Integration Adapters)
Frameworks & Libraries
Operating System
Firmware
Physical Hardware
Runtime Environment
Containers Layer
(Business Logic)
Message Broker
Porto (Software Architectural Pattern)
Epipelagic Zone
Mesopelagic Zone
Bathypelagic Zone
Abyssopelagic Zone
Earth Surface
API Gateway

Clear Layers

App code is divided into Containers and Ship layers. Containers encapsulate the business logic, while Ship handles all infrastructure-related code, enabling easy scaling on demand by transitioning from monolithic to microservices.

Web
Route
Web...
CLI
Command
CLI...
API
Route
API...
Web
Controller
Web...
API
Controller
API...
Command
Handler
Command...
Event
Subscriber
Event...
Cron
Job
Cron...
Event
Handler
Event...
Job
Handler
Job...
Middleware
Middleware
View
Template
View...
Data
Transformer
Data...
Action 1
Action 1
Action 2
Action 2
Sub-Action 1
Sub-Action 1
Data
Model 2
Data...
Repository
Repository
Data
Model 1
Data...
External Input Handlers
External Input Handlers
Internal Input Triggers
Internal Input Trigge...
Data Transfer Object
Data Transfer Object
Data Transfer Object
Data Transfer Object
Business Logic
Business Logic
Porto (Software Architectural Pattern)
Porto (Software Arc...
API
Client
API...
DB
Client
DB...
Events
Client
Events...
Task 1
Task 1
Task 2
Task 2
Task 3
Task 3
Task 4
Task 4

Clean Components

Business logic in Containers is organized into Actions and Tasks. Actions initiate sequences of Tasks, each with one public function run() for a single responsibility, thereby enhancing maintainability and enabling code reusability.

Start Building Scalable, Maintainable, and Future-Proof Apps!

Turn Your App Smart with an AI Voice Assistant.
Boost engagement by 70% with a voice UI layer set up in just 10 minutes.