# Mahmoudz/Porto

A software architectural pattern that provides a comprehensive set of guidelines, principles, and patterns to organize code for high scalability, maintainability and reusability.

Repository: https://github.com/Mahmoudz/Porto
Canonical: https://ross.abutalabs.com/products/porto
Homepage: http://porto.zalt.me
License: MIT
License Family: permissive
Topics: architecture, architectural-patterns, porto, porto-sap, software-architecture, backend, backend-architecture, backend-architecture-patterns, webdevelopment, portosap
Last push: 2026-07-04T19:47:22+00:00

## Health v2 (maintenance only)
Score: 73/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 90, release rhythm 35, longevity 100
- inputs: {"age_days": 3838, "days_push": 60, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1639, forks 179 (observed 2026-08-28T04:05:15.180108+00:00)

## What it is
Porto is a software architectural pattern (not a runnable library) that provides guidelines, principles, and conventions for organizing backend code into Containers (business logic) and a Ship layer (infrastructure). It supports starting as a modular monolith and evolving into microservices, with editions for human-first (Porto SAP) and AI-agent-first (Porto AI) development.

## Use cases
- structure a large backend codebase for maintainability
- start with a monolith and later split into microservices
- apply DDD and SOLID principles to a web application
- organize Laravel-style backend code into reusable components
- reduce coupling between business logic and infrastructure code
- make a codebase easier for AI coding assistants to navigate

## When to choose
- you are starting a new backend project and want a proven code-organization blueprint
- your monolith is growing tangled and you want modular boundaries before microservices
- your team values single-responsibility components and clear layering conventions

## When to avoid
- you need an installable framework or runtime library rather than a set of conventions
- your project is small and a simple MVC structure suffices
- your stack or team is unwilling to adopt opinionated folder structures and naming rules

## Facets
- artifact type: learning-resource
- maturity: active
- function: developer-tools, documentation, workflow-automation
- domain: backend, web-development, developer-tools, apis
- platform: php, cross-platform
- tags: software-architecture, architectural-pattern, modular-monolith, microservices, ddd, solid-principles, code-organization, scalability, web-server

## Member repositories
- Mahmoudz/Porto (main) score 73

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:15.180108+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T03:46:25.149784+00:00, confidence not recorded.
  - readme: https://github.com/Mahmoudz/Porto (fetched 2026-08-28T04:05:15.180108+00:00, sha cf5e1874b3b1)
  - homepage: http://porto.zalt.me (fetched 2026-08-29T11:19:53.897903+00:00, sha 5e0c9dfef80b)
  - site_page: https://porto.zalt.me/docs/Intro (fetched 2026-08-29T11:19:53.900675+00:00, sha 07b0f2037096)
- Data as of 2026-08-30T08:39:29.467469+00:00.
