reupload
This commit is contained in:
81
structure.md
Normal file
81
structure.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# 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`).
|
||||
Reference in New Issue
Block a user