Pular para conteúdo

Aula 20 - Projeto Capstone: Aplicação Web Laravel Robusta Autônoma 🏆

Objetivo Pedagógico

Objetivo: Construção de uma aplicação corporativa completa em Laravel 10+, com autenticação Sanctum, Service Layers, processamento em segundo plano com Horizon e suíte de testes com Pest.


📑 1. Fundamentos Teóricos & Análise Técnica

O Projeto Capstone de Especialização em Backend PHP desafia o estudante a projetar e implementar uma plataforma completa de Gestão de Assinaturas e Cobranças Recorrentes (SaaS Billing Engine) em Laravel 10+.

O projeto consolida as seguintes exigências de engenharia: 1. Autenticação Segura de APIs com Laravel Sanctum: Emissão e revogação de tokens com escopos de permissão limitados (Token Abilities). 2. Arquitetura em Camadas Desacoplada: Controllers enxutos, DTOs imutáveis tipados e Services gerenciados pelo contêiner de injeção de dependências. 3. Processamento Assíncrono com Redis: Processamento de pagamentos e liquidação periódica de faturas via Jobs gerenciados no Laravel Horizon. 4. Cobertura de Testes com Pest PHP: Suíte automatizada cobrindo testes unitários, testes de integração de API e testes de arquitetura com cobertura superior a 85%.

📐 Arquitetura Conceitual & Diagrama de Fluxo

graph TD
    Client["Client / Checkout SaaS"] --> Sanctum["Sanctum Auth Middleware"]
    Sanctum --> Controller["SubscriptionController"]
    Controller --> DTO["SubscriptionDTO"]
    Controller --> Service["SubscriptionService"]
    Service --> MySQL["MySQL / PostgreSQL (Eloquent)"]
    Service --> Queue["Redis Queue (InvoiceJob)"]
    Queue --> Horizon["Laravel Horizon Worker"]
    Horizon --> Gateway["Gateway de Pagamento Externo"]
    style Client fill:#e1f5fe,stroke:#01579b
    style Sanctum fill:#fff3e0,stroke:#e65100
    style Service fill:#e8f5e9,stroke:#2e7d32
    style Horizon fill:#f3e5f5,stroke:#7b1fa2

🔍 Pilares e Diretrizes Técnicas

Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Design de Software Corporativo: Eliminação total de regras de negócio em controllers e views. - Conformidade e Idempotência: Chaves de idempotência em transações financeiras para prevenir cobranças em duplicidade. - Monitoramento com Horizon: Métricas visuais de latência e controle de falhas de processamento. - Pipeline de Integração Contínua: Execução do Pest e checagem de tipos estáticos com PHPStan no nível máximo de rigor.


🛠️ 2. Implementação Prática em Laravel 10+, MySQL, Redis, Pest e Horizon

Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:

// SubscriptionController.php (Controlador Enxuto em Laravel 10)
<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\CreateSubscriptionRequest;
use App\Services\SubscriptionService;
use App\Services\SubscriptionDTO;
use Illuminate\Http\JsonResponse;
use Symfony\Component\HttpFoundation\Response;

class SubscriptionController extends Controller {
    public function __construct(
        private readonly SubscriptionService $subscriptionService
    ) {}

    public function store(CreateSubscriptionRequest $request): JsonResponse {
        $dto = SubscriptionDTO::fromRequest($request->validated());
        $subscription = $this->subscriptionService->createSubscription($dto);

        return response()->json([
            'message' => 'Assinatura ativada com sucesso.',
            'data' => $subscription
        ], Response::HTTP_CREATED);
    }
}

💡 Análise Passo a Passo do Código

  1. Injeção readonly no Construtor: O PHP 8.2 injeta a camada de serviço com imutabilidade referencial estrita.
  2. Validação no Request: $request->validated() entrega apenas dados previamente higienizados pelas regras do FormRequest.
  3. Resposta Padronizada: Uso de constantes Response::HTTP_CREATED para clareza semântica nos códigos de retorno.

🎯 3. Próximos Passos & Sequência Didática