# Architecture ## Major Modules ### User Management Module - **Purpose**: Handles user authentication, roles, and permissions - **Key Components**: - `User` model with hierarchical relationships (parent/children) - 13 user types via enum (Ultimate through Public) - Permission system via `UserActions` enum - **Location**: `app/Models/User.php`, `app/Enums/UserTypes.php` ### Market Module - **Purpose**: Product and store management - **Key Components**: - `Product` model - Products with categories, stores relationship - `Store` model - Stores with products via belongsToMany - `ProductTransaction` models - Transaction tracking - **Location**: `app/Models/Market/` ### File Management Module - **Purpose**: File upload and management system - **Key Components**: - `FileContent` model - Binary file storage - `FileList` model - File metadata - **Location**: `app/Models/FileContent.php`, `app/Models/FileList.php` ## Module Interactions ``` User (Auth) → Middleware → Controllers → Models ↓ Market Models ↓ File Management ``` ### Authentication Flow 1. User attempts to access protected route 2. `Authenticate` middleware checks session/JWT 3. User object loaded with roles and permissions 4. Route middleware (`auth`, `ultimate`, etc.) validates access ## Data Flows ### Login Flow ``` POST /post/loginnow → LoginController@authenticate ↓ Auth::attempt() (JWT-based) ↓ Session created via Hypervel\Session ↓ Redirect to home or return JSON response ``` ### User Creation Flow ``` POST /admin/user/create → CreateUserControllerUltimate@CreateUser ↓ Validate data (mobile number, username uniqueness) ↓ Create user record with encrypted password ↓ Return success/error response ``` ### Product View Flow ``` POST /View/Product/Details/data → ProductController@viewProductDetails ↓ Fetch product by ID ↓ Fetch associated stores ↓ Return product data with store info ``` ## External Services - **Redis**: Caching layer (configurable via CACHE_DRIVER) - **Session Storage**: Database-backed sessions - **File Storage**: Local filesystem (via Flysystem) ## Architectural Patterns - **MVC Pattern**: Models-Views-Controllers separation - **SPA Architecture**: Single Page Application with Vue Router - **Middleware Chain**: Request filtering via Hypervel middleware - **Enum-based Roles**: Type-safe user role system