3.4 KiB
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).