Skip to content

zigzagdev/portfolio-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Laravel DDD API

A Laravel-based API project built with Domain-Driven Design and Clean Architecture principles.
Designed for modularity, testability, and long-term maintainability.

Architecture

This project follows a layered Clean Architecture:

  • Presentation Layer: Controllers, ViewModels
  • Application Layer: UseCases, Commands, DTOs, QueryServiceInterfaces
  • Domain Layer: Entities, Value Objects, RepositoryInterfaces
  • Infrastructure Layer: Eloquent Repositories, QueryServices

API Flow

  1. Controller constructs a Command object from request input.
  2. The Command is passed to a UseCase.
  3. UseCase invokes domain logic and persists data via a Repository.
  4. Resulting Entity is mapped to a DTO.
  5. The DTO is passed to a ViewModel and returned as a JsonResponse.

Tech Stack

  • PHP 8.x / Laravel 10.x
  • MySQL or PostgreSQL
  • PHPUnit (Unit/Feature testing)
  • Laravel Scout + Elasticsearch (optional)

Directory Structure

app/
└── Posts/
    β”œβ”€β”€ Application/
    β”‚   β”œβ”€β”€ ApplicationTests/
    β”‚   β”œβ”€β”€ UseCases/
    β”‚   β”œβ”€β”€ UseCommands/
    β”‚   β”œβ”€β”€ Dtos/
    β”‚   └── QueryServiceInterface/
    β”œβ”€β”€ Domain/
    β”‚   β”œβ”€β”€ DomainTests/
    β”‚   β”œβ”€β”€ Entities/
    β”‚   β”œβ”€β”€ ValueObjects/
    β”‚   └── RepositoryInterfaces/
    β”œβ”€β”€ Infrastructure/
    β”‚   β”œβ”€β”€ InfrastructureTests/
    β”‚   β”œβ”€β”€ Repositories/
    β”‚   └── QueryServices/
    └── Presentation/
        β”œβ”€β”€ Controllers/
        β”œβ”€β”€ PresentationTests/
        └── ViewModels/

└── Users/
    β”œβ”€β”€ Application/
    β”‚   β”œβ”€β”€ ApplicationTests/
    β”‚   β”œβ”€β”€ UseCases/
    β”‚   β”œβ”€β”€ UseCommands/
    β”‚   β”œβ”€β”€ Dtos/
    β”‚   └── QueryServiceInterface/
    β”œβ”€β”€ Domain/
    β”‚   β”œβ”€β”€ DomainTests/
    β”‚   β”œβ”€β”€ Entities/
    β”‚   β”œβ”€β”€ ValueObjects/
    β”‚   └── RepositoryInterfaces/
    β”œβ”€β”€ Infrastructure/
    β”‚   β”œβ”€β”€ InfrastructureTests/
    β”‚   β”œβ”€β”€ Repositories/
    β”‚   └── QueryServices/
    └── Presentation/
        β”œβ”€β”€ Controllers/
        β”œβ”€β”€ PresentationTests/
        └── ViewModels/

About

Laravel Portfolio with DDD

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages