Files
postshop-backend/structure.md
2026-02-03 15:31:29 +05:00

3.4 KiB

Project Structure Analysis

Overview

This project is a multi-channel e-commerce backend platform built with Laravel 10. It features a comprehensive admin panel using Laravel Nova, a robust API for frontend consumption, and modular components for key functionality.

Key Technologies

  • Framework: Laravel 10.x
  • Admin Panel: Laravel Nova
  • API Documentation: Dedoc Scramble
  • Authentication: Laravel Sanctum
  • Media Management: Spatie Media Library
  • Permissions: Spatie Laravel Permission
  • Localization: Spatie Laravel Translatable

Directory Structure

Core Application (app/)

The application logic is organized by domain and function.

Models (app/Models/)

Entities are grouped by domain:

  • Ecommerce/: Core e-commerce entities.
    • Product/: Product, Brand, Category, Collection, Review, Inventory.
    • Order/: Order management, payments, shipping, status.
    • Channel/: Multi-channel support logic.
    • Payouts/: Vendor payout management.
  • CMS/: Content management entities.
    • Marketing/: Newsletter, subscriptions.
    • Media/: Banners, carousels, galleries.
  • System/: System-wide configurations.
    • Settings/: Currency, Location (Province, Region), Payments.
    • Roles/: RBAC (Roles and Permissions).
    • VersionManagement/: App version tracking.
  • Post/: Specific business logic (e.g., PostBranch).
  • Auth/: Authentication related models (e.g., Verification).

Modules (app/Modules/)

Contains standalone modules for encapsulated functionality:

  • GlobalOrder/: Handling global order logic (Controllers, Models, Migrations, Nova Resources).

Http (app/Http/)

  • Controllers/Api/V1/: API endpoints for the frontend/mobile app.
    • Organized by resource (Product, Order, Auth, Cart, etc.).
  • Controllers/Api/V1/Vendor/: Dedicated endpoints for vendor operations.

Helpers (app/Helpers/)

  • Ecommerce/: Domain-specific helper logic.
    • Product/Filter/: Product filtering logic.
    • Product/Sort/: Product sorting logic.

Repositories (app/Repositories/)

  • Implements the Repository pattern to abstract data access layers.

Nova (app/Nova/)

  • Configuration for Laravel Nova resources, defining the admin interface.

Routes (routes/)

  • api/v1/v1-api.php: Main public API routes (Customer facing).
  • api/v1/vendor/vendor-api.php: Vendor specific API routes.
  • web.php: Web routes (likely for admin panel access or fallbacks).

Custom Components (nova-components/)

Custom-built Vue.js components for Laravel Nova:

  • DynamicFields: Handling dynamic field sets.
  • InlineRelationship: Managing related models inline.
  • InventoryHistoryItems: Visualizing inventory changes.
  • PayoutProducts: Managing product payouts.
  • ProductInventory: Inventory management interface.

Config (config/)

  • Standard Laravel configuration files plus package-specific configs (scramble.php, nova.php, etc.).

Database

  • Migrations: Standard Laravel migrations.
  • Seeds: Database seeders for initial data population.

Architecture Patterns

  • Repository Pattern: Used for data access abstraction.
  • Modular Monolith: Emerging structure with app/Modules.
  • Domain-Driven Design (Lite): logical grouping of models and helpers by domain (Ecommerce, CMS, System).
  • Service Providers: heavily used for package integration and registering services (app/Providers).