liteerp-oss/liteerp
40.7
Weak · 21 September 2026
49.8k
lines of production code
PHP
with JavaScript
2
measurements over time
What this system is
LiteERP is a modular, multi-tenant enterprise resource planning system built on Laravel and React, designed to manage core business operations including sales, purchasing, inventory, and customer relations. It provides a comprehensive suite of RESTful APIs for handling entities such as orders, invoices, products, and users, supported by a robust hook-based extension system that allows for dynamic logic injection and UI customization. The platform features a Dockerized development environment, role-based access control, and multi-language support to facilitate flexible deployment and global usability.
How it got here
2025 — LiteERP initial scaffolding and core module implementation
177 changes.
This period established the LiteERP foundation by setting up the Dockerized development environment, Laravel bootstrap, and React-based admin interface. It introduced the core Clean Architecture modules for authentication, business management, customers, products, orders, and inventory, complete with database schemas, API endpoints, and localization support.
2026 — Extension system and permission refactoring
42 changes.
The codebase introduced a comprehensive extension framework, enabling third-party modules to intercept and modify core queries via a hook system while migrating extension management to a database-driven architecture. Concurrently, the permission system was restructured with a domain-driven model, centralized enums, and dedicated API endpoints to support granular, extensible access control. These changes were accompanied by significant frontend updates, including internationalization support and new React components for managing extensions, permissions, and inventory.
Features
Add Custom Invoice In infrastructure layer
This change introduces the infrastructure implementation for the Custom Invoice In feature, including the service provider that registers the Eloquent repository and service bindings, loads module configuration, routes, and translations. It adds the Eloquent repository for CRUD operations on custom invoice in records, the service implementation with business logic for creating, updating, and deleting records (including document number uniqueness validation), and the API routes for managing custom invoice ins under the /api/business-access prefix.
app/core/CustomInvoiceIn/Infrastructure · high confidence
Add extension event listener implementation
A new implementation class for the extension event contract has been added, providing concrete methods to register listeners and dispatch events using the framework's event facade.
app/app/Supports/Events · high confidence
Add new React button components
Added new React components for UI buttons (DangerButton, GradientButton, PrimaryButton, SecondaryButton, SuccessButton, WarningButton) in the app/resources/js/react/components/UI/Buttons directory. These components provide a consistent button interface with support for label, click handler, disabled state, loading state, and customizable width/height.
app/resources/js/react/components/UI/Buttons · high confidence
Add request DTOs for Category Product CRUD operations
Introduced new Data Transfer Objects (CreateCategoryProductRequest, DeleteCategoryProductRequest, IndexCategoryProductRequest, ShowCategoryProductRequest) to standardize input handling for category product management. These DTOs define the expected fields for creating, deleting, listing, and viewing category products, including support for tax in creation and keyword-based filtering in listings, ensuring consistent data validation across the application layer.
app/core/CategoryProduct/Application/DTOs · high confidence
Added English, Japanese, and Vietnamese inventory error messages
The inventory module now includes localized user-facing error messages for English, Japanese, and Vietnamese. Users will see specific translations for inventory-related validation errors, such as 'Inventory already exists', 'Data not found', 'Inventory does not exist', and 'Insufficient inventory', improving clarity for non-English speaking users.
app/core/Inventory/Infrastructure/lang · high confidence
Added English, Japanese, and Vietnamese language files
The application now includes localization support for English, Japanese, and Vietnamese. New translation files have been added for authentication, pagination, password reset, and validation messages in these three languages, enabling users to see interface text in their preferred language.
app/lang · high confidence
Added English, Japanese, and Vietnamese translations for order notifications
The application now supports localized order-related messages in English, Japanese, and Vietnamese. Users will see translated text for order creation, deletion, status changes, and validation errors, including notification messages that dynamically include the username of the actor (e.g., "John created a new order").
app/core/Order/Infrastructure/lang · high confidence
Added English, Japanese, and Vietnamese validation messages for business entities
New localized error messages have been added for the Business module in English, Japanese, and Vietnamese. Users will now see specific translations for validation errors such as 'Business name has been used', 'Name and address has been used', and 'Not found business' in their preferred language.
app/core/Business/Infrastructure/lang · high confidence
Added Laravel AI stubs for agents, tools, and middleware
New stub files have been added to the application scaffolding to support the Laravel AI package. These include base classes for agents (including structured output variants), tools, and middleware, providing developers with ready-to-use templates that implement the Laravel\\Ai contracts for building AI-driven features.
app/stubs · high confidence
Added Order application request DTOs
Introduced a set of new Data Transfer Objects in the Order application layer to standardize request data handling. These include \CreateOrderRequest\ and \UpdateOrderRequest\ for order creation and modification, \IndexOrderRequest\ for listing orders with pagination and filtering, \ShowOrderRequest\ for retrieving specific order details, and validation-specific DTOs (\CheckOrderCancelledRequest\, \CheckReadyForOrderItemRequest\, \CheckUpdateShippingOrderRequest\) to support order lifecycle checks.
app/core/Order/Application/DTOs · high confidence
Added StockIn request DTOs for CRUD operations
Introduced five new Data Transfer Objects (CancelledStockInRequest, CheckForStockMovementInRequest, CreateStockInRequest, IndexStockInRequest, ShowStockInRequest) within the StockIn application layer. These classes standardize the input data structure for stock-in management operations, handling fields such as business ID, user ID, invoice details, search keywords, and sorting order, and provide methods to convert between array inputs and typed object properties.
app/core/StockIn/Application/DTOs · high confidence
Added centralized popup notification system
Introduced a new \PopupContext\ component that provides a global context for managing toast-style notifications. This allows application components to trigger success, error, warning, or info popups via a simple \openPopup\ API, with the UI rendered as a portal overlay that respects the current theme and supports customizable messages, icons, and action buttons.
app/resources/js/react/components/popups · high confidence
Automatic registration of core modules and enabled extensions
The application now automatically discovers and registers service providers for both core modules and user extensions at startup. Core modules located in the 'core' directory are scanned for their respective service providers, while enabled extensions in the 'extensions' directory are similarly autoloaded. This change also registers a singleton HookDispatcher and binds the ExtensionEvent interface to its implementation, enabling a modular architecture where new features can be added simply by placing them in the appropriate directories.
app/app/Providers · high confidence
Business entity management service implementation
The BusinessServiceImpl class has been added to provide the infrastructure layer for managing business entities. This service implements the BusinessService interface and exposes capabilities to create, retrieve, update, and list businesses. It enforces validation rules during creation and updates, such as preventing duplicate names or address combinations, and handles retrieval of business details including full data sets.
app/core/Business/Infrastructure/Services · high confidence
Customer Group management use cases and request DTOs
This change introduces the application-layer logic for managing customer groups, including Create, Read, Update, and Delete (CRUD) operations. It adds specific Request DTOs (CreateCustomerGroupRequest, DeleteCustomerGroupRequest, IndexCustomerGroupRequest, ShowCustomerGroupRequest) to handle input data validation and transformation. The use cases integrate with a hook system for UI and response phases, dispatch permission events for create, update, and delete actions, and trigger activity log events to track changes. The ViewCustomerGroup use case specifically handles UI-related hooks for form, index, and search phases.
app/core/CustomerGroup/Application/UseCases · high confidence
Customer Group module infrastructure wiring
This change adds the infrastructure layer for the Customer Group module, registering the Eloquent repository and service implementations via the CustomerGroupServiceProvider. It wires up API routes for managing customer groups under /api/business-access/customer-groups and exposes a view route at /api/business-access/view/customer-groups, while also loading module-specific configuration, translations (English, Japanese, Vietnamese), and web routes.
app/core/CustomerGroup/Infrastructure · high confidence
Customer creation form now supports national ID and group selection
The customer data entry interface has been updated to include a new 'National Id' text field and a searchable 'Group' selector that allows users to assign customers to specific groups. The form also retains existing fields for contact details, tax code, bank information, and customer type (individual or company), with all labels and placeholders now supporting internationalization.
app/resources/js/react/components/Customer/ListCustomer · high confidence
Customer management use cases now integrate hooks and activity logging
The Customer application layer has been updated to include a comprehensive set of use cases (Create, CreateOrUpdate, Update, Delete, Show, OrderShipping, and ViewRender) that enforce a consistent execution model. Each operation now wraps database transactions, dispatches lifecycle hooks (BEFORE/AFTER for logic, ON for UI rendering) via the HookDispatcher, and emits specific events for permission checks and activity logging (e.g., 'erp.activitylog.create', 'erp.activitylog.delete'). This ensures that customer data modifications are auditable and extensible through the hook system, while the ViewRender use case specifically handles UI-phase hook dispatching for form, index, and search components.
app/core/Customer/Application/UseCases, app/core/PriceList/Application/UseCases, app/core/Supplier/Application/UseCases · high confidence
Customer module API and web routes introduced
The Customer module now exposes its routing configuration. The API routes define a resource controller for customers under the /api/business-access prefix, protected by the 'business' middleware, and add a specific GET endpoint for viewing customers. Web routes for the Customer module have also been initialized.
app/core/Customer/Infrastructure/routes · high confidence
Customer repository and event listener implementation
The Customer module now includes an Eloquent-based repository that supports finding customers by ID, phone number, or national ID, as well as creating, updating, and deleting customer records. Additionally, a listener has been added to automatically handle order shipping customer requests when an order is created.
app/core/Customer/Infrastructure/Repositories · high confidence
Implemented Eloquent repository for InvoiceOut with order status and shipping fee logic
Added the Eloquent-based implementation of the InvoiceOut repository, enabling data persistence and retrieval for invoice-out records. The repository now supports listing invoices with joined customer, order, and shipping details, including logic to determine the actual shipping fee (preferring actual over estimated if available) and displaying the associated order status. It also provides methods to find invoices by ID or order ID, create and update records, and retrieve full invoice data including customer and shipping provider information.
app/core/InvoiceOut/Infrastructure/Repositories · high confidence
Initial API and web routing for the Business module
This change introduces the initial route definitions for the Business module, establishing the entry points for its functionality. The API routes (api.php) define endpoints for listing, viewing, updating, and creating businesses, with specific access controls: viewing and listing are available to logged-in users, updating requires a 'business' middleware, and creating businesses is restricted to administrators. The web routes file (web.php) is also created as a placeholder for future web-based business features.
app/core/Business/Infrastructure/routes, app/core/InvoiceIn/Infrastructure/routes, app/core/InvoiceOut/Infrastructure/routes · high confidence
Initial Activity Log module with audit diff tracking
This change introduces the Activity Log module, providing a new API endpoint at \/api/business-access/activity-logs\ to retrieve paginated activity records ordered by newest first. The module automatically captures user actions via an event listener and, when logging updates to existing entities, automatically computes and stores a field-level diff of the changes using the \AuditDiffBuilder\. The implementation follows a clean architecture pattern with domain entities, application use cases, and an Eloquent repository layer, supporting both English and Vietnamese localization.
app/core/ActivityLog · high confidence
Initial Business module with CRUD operations and token-based access
This change introduces the core application layer for the Business module, enabling users to create, read, update, and list business entities. The implementation includes HTTP controllers and request validation classes that enforce specific field requirements (e.g., name, address, tax code) and integrate with a hook system for extensible validation and UI rendering. Key features include a 'Show' use case that retrieves business details and automatically generates an authentication token for the user, and an 'Index' query that filters businesses based on user permissions via database joins.
app/core/Business/Application · high confidence
Initial CSS styling for ERP interface components
This change introduces the foundational CSS styles for the application's user interface, establishing the visual design for key layout areas including the sidebar, topbar, authentication pages, and dashboard. It defines a dual theme system (light and dark) using CSS variables for consistent color application across elements like cards, tables, and badges. Additionally, it implements responsive behaviors for mobile navigation and styles for interactive components such as popups, notifications, and business-specific cards.
app/resources/css · high confidence
Initial Customer domain model and repository interface
This change introduces the foundational domain layer for the Customer feature, including the Customer entity with fields for identification (national\_id, tax\_code), contact details, and status management (active/inactive), alongside the CustomerRepositoryInterface defining CRUD operations and lookup methods by national ID and phone, and the CustomerService interface specifying create, update, delete, and show capabilities.
app/core/Customer/Domain, app/core/Order/Domain, app/core/User/Domain · high confidence
Initial Customer module service provider registration
The application now registers the Customer module's infrastructure services via a new \CustomerServiceProvider\. This provider binds the \CustomerRepositoryInterface\ to its Eloquent implementation and \CustomerService\ to its service implementation, ensuring dependency injection works correctly for customer-related operations. It also loads the module's specific API and web routes, merges configuration settings, and registers translations, making the Customer module fully integrated into the application's routing and configuration system.
app/core/Customer/Infrastructure/Providers · high confidence
Initial ERP database schema and infrastructure
This change introduces the foundational database schema for the ERP system, establishing the core tables required for user management, business configuration, and inventory operations. It includes migrations for users, permissions, suppliers, warehouses, products, and categories, alongside the transactional tables for purchases, orders, invoices (in/out), and stock movements. The schema also supports shipping providers, inventory adjustments, activity logs, and notifications, while adding specific features for order/purchase cancellation reasons, custom invoices, and an AI agent conversation module.
app/database · high confidence
Initial HTTP controllers for inventory management
Added the InventoryController and ViewInventoryController to expose inventory capabilities via HTTP. InventoryController handles creating new inventory items (store) and listing them (index) by delegating to application use cases, while ViewInventoryController provides a dedicated endpoint for viewing inventory details.
app/core/Inventory/Http/Controllers · high confidence
Initial HTTP layer for Order management with extensible validation
This change introduces the HTTP controllers and request validation classes for the Order module. Users can now create, view, list, and update orders via API endpoints. The validation logic for these operations is extensible via a hook system, allowing additional rules to be injected during the validation phase for create, index, show, and update actions.
app/core/Order/Http · high confidence
Initial HTTP layer for Purchase Item management
This change introduces the HTTP controllers and request validation classes for the Purchase Item module, enabling users to create, read, update, and delete purchase items via API endpoints. The \PurchaseItemController\ handles standard CRUD operations, while a separate \ViewPurchaseItemController\ provides a specific view for purchase items. Validation logic in the request classes enforces business rules, such as requiring at least one quantity field (buy, gift, compensation, or conversion) to be greater than zero for create and update actions, and integrates a hook system to allow external validation rules to be injected during the validation phase.
app/core/PurchaseItem/Http · high confidence
Initial HTTP layer for Stock Movement Out index queries
This change introduces the initial HTTP handling for the Stock Movement Out feature, specifically for listing stock movements. It adds a new \StockMovementOutController\ that exposes an \index\ action, accepting an \IndexStockMovementOutRequest\ and delegating to an \IndexQuery\ use-case to return JSON data. The accompanying request class enforces validation rules, requiring a valid \stock\_out\_id\ and allowing optional \keywords\ and \order\_by\ parameters.
app/core/StockMovementOut/Http · high confidence
Initial HTTP layer for StockIn management
This change introduces the HTTP controllers and request validation classes for the StockIn module, enabling users to create, view, update, and list stock-in records via JSON API endpoints. The controllers delegate to application use cases, while the request classes enforce validation rules (such as date formats and status enums) and integrate a hook system to allow extensible validation logic during the create, index, show, and update operations.
app/core/StockIn/Http · high confidence
Initial HTTP layer for the Invoice Out module
This change introduces the HTTP handling components for the new Invoice Out feature, including controllers for creating, listing, viewing, and updating invoices, along with corresponding request validation classes. The controllers delegate business logic to application use cases and return JSON responses. The request classes define validation rules for invoice data (such as document number, amounts, dates, and payment status) and integrate a hook system to allow external modules to inject additional validation rules during the creation, indexing, showing, and updating of invoices.
app/core/InvoiceOut/Http · high confidence
Initial HTTP layer for user authentication and session management
This change introduces the HTTP controllers and request validation classes that expose the core authentication capabilities to users. It adds endpoints for registering, logging in, verifying accounts, and managing profiles, alongside specific controllers for handling web session login and logout flows. The included request classes define the input validation rules for these operations, such as requiring email and password for login or supporting language preferences (en, vi, ja) during profile updates.
app/core/Authencation/Http · high confidence
Initial InvoiceIn module infrastructure and event-driven processing
The InvoiceIn module is introduced with its core infrastructure components. The InvoiceInServiceProvider registers the necessary dependency injection bindings for repositories and services, loads module-specific routes, translations, and configuration. The InvoiceInListener sets up event listeners for purchase lifecycle events: it triggers automatic invoice creation when a purchase is approved and marks invoices as unapproved when a purchase is cancelled.
app/core/InvoiceIn/Infrastructure/Listeners, app/core/InvoiceIn/Infrastructure/Providers · high confidence
Initial Laravel application bootstrap configuration
The application now initializes using Laravel's modern bootstrap structure, defining routing for web, API, console, and channels, and configuring middleware aliases (including custom authentication and language middleware) and a 'business' middleware group that enforces token validation, language handling, and request locking to prevent duplicate submissions.
app/bootstrap · high confidence
Initial Laravel application configuration scaffold
This change introduces the standard Laravel configuration files for the application, establishing the foundational settings for core services. It defines the application identity, environment, and debug modes, while configuring authentication via session guards and Eloquent providers. The setup includes database connection profiles for SQLite, MySQL, MariaDB, PostgreSQL, and SQL Server, alongside Redis support. It also configures caching, queue processing, session storage, and filesystem disks (including local, S3, and Azure Blob storage). Additionally, it sets up broadcasting connections (Pusher, Reverb, Ably), mail transport options, logging channels, and third-party service credentials for social login (GitHub, Google) and AI providers (OpenAI, Azure, Anthropic, etc.).
app/config · high confidence
Initial Price List management API endpoints
This change introduces the core HTTP layer for the new Price List feature, providing RESTful endpoints to create, read, update, and delete price list entries. The implementation includes controllers for standard CRUD operations as well as a dedicated view controller for rendering, alongside request validation classes that enforce data integrity (such as required customer group and product IDs) and integrate with the system's hook mechanism for extensibility.
app/core/PriceList/Application/DTOs, app/core/PriceList/Http · high confidence
Initial Price List module infrastructure and domain layer
This change introduces the foundational infrastructure for the Price List feature, enabling the management of product pricing within specific customer groups. It adds the domain entity, repository interface, and service layer, along with an Eloquent repository implementation that supports creating, updating, deleting, and listing price entries (including search by product name and group). The module registers its own service provider to bind interfaces to implementations, loads API and web routes (exposing a RESTful resource and a view endpoint under /api/business-access), merges configuration, and includes localized error messages in English, Japanese, and Vietnamese.
app/core/PriceList/Infrastructure · high confidence
Initial React-based admin interface with extension support and real-time notifications
This change introduces the core JavaScript entry points for the application's new React-based admin UI. The \admin.jsx\ file establishes the main routing structure using React Router, defining static routes for core ERP modules (such as products, orders, customers, and inventory) and dynamically registering additional routes via a central registry to support extensions. The \app.js\ entry point bootstraps the application, loads Bootstrap, and implements an autoload mechanism that automatically discovers and instantiates JavaScript extensions located in the \../../extensions/\\/Resources/js/\ directory, while also eagerly loading their CSS assets. Additionally, \bootstrap.js\ configures the frontend environment by setting up Axios for HTTP requests and integrating Laravel Echo with Pusher for real-time broadcasting, including business-specific access headers for authentication.
app/resources/js · high confidence
Initial Redux state management setup
This change introduces the foundational Redux store and associated slices for the application's frontend state. It establishes state management for user interface themes (with a default to light mode persisted in localStorage), business information and roles (persisted to localStorage), notification counts, and specific data slices for order details, purchase details, and order summaries. The store configuration wires these reducers together, enabling the UI to manage and persist these distinct state domains.
app/resources/js/react/redux · high confidence
Initial Stock-In module infrastructure and domain layer
This change introduces the foundational infrastructure for the Stock-In feature, including the domain entity, repository interface, and service contracts. It registers the Eloquent repository and service implementations via a dedicated service provider, sets up API routes for stock-in management under /api/business-access/stocks, and configures event listeners to automatically create stock-in records upon invoice approval and handle cancellations. The module also includes localized translation files for English, Japanese, and Vietnamese to support user-facing messages and notifications.
app/core/StockIn/Infrastructure · high confidence
Initial Supplier module infrastructure
This change introduces the foundational infrastructure for the Supplier module, including the service provider to register dependencies (Eloquent repository and service implementations), configuration, and translations in English, Japanese, and Vietnamese. It defines the API routes for managing suppliers under the /api/business-access prefix and provides the Eloquent repository implementation for CRUD operations, ensuring business-scoped data isolation via business\_id.
app/core/Product/Infrastructure, app/core/Supplier/Infrastructure · high confidence
Initial User module infrastructure with API routes and repository
The User module's infrastructure layer is introduced, establishing the service provider bindings for the Eloquent user repository and user service implementations. This includes the registration of API routes under the 'api/business-access' prefix protected by the 'business' middleware, exposing standard RESTful endpoints for user management via the UserController. The implementation provides data access methods for finding users by ID or email (including business-scoped lookups) and retrieving all users, along with configuration defaults and localized error messages in English, Japanese, and Vietnamese.
app/core/User/Infrastructure · high confidence
Initial Warehouse module infrastructure and API endpoints
This change introduces the foundational infrastructure for the Warehouse module, including the service provider that registers Eloquent repositories and service implementations, HTTP controllers for standard CRUD operations (create, read, update, delete) and a specific view endpoint, and form request classes that integrate a hook system for validation. It also adds the API routes under \/api/business-access/warehouse\, configuration files, and translation messages in English, Japanese, and Vietnamese to support the new warehouse management capability.
app/core/Warehouse/Infrastructure · high confidence
Initial authentication API and web session routes
This change introduces the initial routing structure for the authentication module. It defines API endpoints for user registration, login, verification, password management, and profile updates under the /api/authencation prefix, protected by language and login middleware. Additionally, it adds web routes for session-based login and logout functionality accessible at /dashboard/authencation.
app/core/Authencation/Infrastructure/routes · high confidence
Initial authentication domain structure introduced
This change introduces the core domain layer for the authentication system, establishing the foundational entities and interfaces required for user management and session handling. The \Authencation\ entity now supports user profile data including email, name, role, and language preferences, along with methods for managing verification status and system roles. New repository and service interfaces define the contract for creating, updating, and retrieving user accounts, as well as handling login, logout, and personal token generation operations.
app/core/Authencation/Domain · high confidence
Initial authentication use-case implementation
This change introduces the core application-layer use cases for the authentication module, including account creation, login, password reset, profile management, and session handling. Users can now register accounts with email verification, log in via standard credentials or web session tokens, manage their profile information, and reset forgotten passwords through token-based email notifications.
app/core/Authencation/Application/UseCases · high confidence
Initial business configuration for currency and tokens
A new configuration file for the business module has been introduced, defining default settings for the application currency (USD), currency locale (en-US), and expiration time for expiration tokens (600 seconds). These values are sourced from environment variables where available, allowing for flexible deployment-specific overrides.
app/core/Business/Infrastructure/config · high confidence
Initial domain layer for the Purchase module
This change introduces the foundational domain components for the new Purchase feature within the ERP system. It defines the \Purchase\ entity to manage purchase records, including their lifecycle status (draft, requested, approved, cancelled) and associated metadata like supplier and shipping details. Additionally, it establishes the \PurchaseRepositoryInterface\ for data persistence operations and the \PurchaseService\ interface to handle business logic for creating, retrieving, and updating purchase records.
app/core/Purchase/Domain · high confidence
Initial domain model and application DTOs for Purchase Items
This change introduces the foundational data structures for the Purchase Item feature within the ERP system. It adds a set of Application DTOs (such as CreatePurchaseItemRequest, DeletePurchaseItemRequest, and IndexPurchaseItemRequest) to handle input validation and data transfer for purchase item operations. On the domain side, it defines the PurchaseItem entity with fields for quantities, costs, discounts, and taxes, including helper methods to calculate total cost, cost after discount and tax, and total quantity. Additionally, it establishes the PurchaseItemRepositoryInterface and PurchaseItemService interface to define the contract for data persistence and business logic operations.
app/core/PurchaseItem/Application/DTOs, app/core/PurchaseItem/Domain · high confidence
Initial domain model for Outgoing Invoices
This change introduces the core domain layer for the 'Invoice Out' feature, establishing the foundational data structures and logic for managing outgoing invoices. It defines the \InvoiceOut\ entity with fields for financial details (subtotal, tax, discount, total), payment status tracking (paid, partial, pending), and approval state, along with helper methods to validate payment amounts and update statuses. The entry also includes the repository interface for data persistence and the service interface defining operations like creation, retrieval by order ID, and updates, effectively setting up the clean architecture backbone for this specific business capability.
app/core/InvoiceOut/Domain · high confidence
Initial implementation of AppToken and PurchaseTax modules
This change introduces the foundational structure for two new core modules: AppToken and PurchaseTax. The AppToken module provides the domain entities, services, and use cases for generating and parsing JWT-based application tokens, including configuration for public/private key paths and algorithm types, though the HTTP controller and API routes are currently commented out. The PurchaseTax module implements the creation of purchase tax records, wiring a controller to a use case that dispatches a permission-based event upon successful creation and updates associated purchase items via the Eloquent repository. Both modules include their respective service providers, DTOs, and repository interfaces to support future full-stack integration.
app/core/AppToken, app/core/PurchaseTax · high confidence
Initial implementation of Invoice In application use cases
This change introduces the core application logic for the Invoice In module, adding use cases for creating, updating, viewing, and managing the approval status of invoices. The implementation includes AutomaticCreateInvoice and CreateInvoiceIn, which handle invoice creation with database transactions, hook-based extensibility, and event-driven notifications and activity logging. It also provides use cases for retrieving invoices by purchase ID, displaying invoice details, updating invoice records (including approval state changes), and unapproving invoices, ensuring consistent permission checks and user feedback throughout the workflow.
app/core/InvoiceIn/Application/UseCases · high confidence
Initial implementation of Invoice In service logic
This change introduces the core service implementation for the Invoice In module, providing the backend logic for creating, updating, viewing, and managing the lifecycle of incoming invoices. Users can now have invoices created with auto-generated document numbers, updated with details such as payment status and amounts (including validation for partial payments), and retrieved via various lookup methods. The service also handles specific workflow transitions, such as automatically marking an invoice as unapproved when its associated purchase order is cancelled.
app/core/InvoiceIn/Infrastructure/Services · high confidence
Initial implementation of InvoiceOut application use cases
This change introduces the core application logic for the InvoiceOut module, including use cases for creating, updating, viewing, and finding invoices, as well as handling order cancellations and shipping fee adjustments. The implementation follows a clean architecture pattern, integrating with a hook system for pre- and post-processing events, dispatching permission-based events for notifications and activity logs, and ensuring data integrity through database transactions.
app/core/InvoiceOut/Application/UseCases · high confidence
Initial implementation of OrderShipping application layer
This change introduces the core application logic for the Order Shipping module, including use cases for creating, updating, retrieving, and validating order shipments. It adds specific DTOs to handle request data (such as receiver details, shipping fees, and order IDs) and integrates a hook system to allow extensions to intercept and modify data during create, show, and update operations. The implementation also includes activity logging and notification dispatching for shipping events.
app/core/OrderShipping/Application/UseCases · high confidence
Initial implementation of Purchase Item application use cases
This change introduces the core application-layer use cases for the Purchase Item module, enabling users to create, read, update, delete, and view purchase items. The implementation includes specific validation logic to ensure products are added before processing and to verify stock quantities during stock movements. It also integrates a hook system to allow for extensible behavior before and after key operations (create, update, delete, show) and utilizes database transactions to maintain data integrity during these changes.
app/core/PurchaseItem/Application/UseCases · high confidence
Initial implementation of Stock Movement Out application layer
This change introduces the application-layer components for the Stock Movement Out feature, including DTOs for creating single and bulk movements, an index query with pagination and filtering, and use cases for handling the creation logic. It establishes the data transfer structures and query handling for managing stock movements out of inventory.
app/core/StockMovementOut/Application · high confidence
Initial implementation of authentication service and session management
This change introduces the core authentication infrastructure, including the \AuthSessionManagerImplement\ for handling login and logout sessions, and the \AuthencationServiceImpl\ which provides the backend logic for user account creation, profile updates, password resets, email verification, and authentication via email and password. It also adds methods to retrieve user accounts and personal tokens by email, establishing the foundational service layer for user identity management.
app/core/Authencation/Infrastructure/Services · high confidence
Initial implementation of core authentication infrastructure
This change introduces the foundational infrastructure for the authentication module, including the \AuthencationServiceProvider\ which registers dependency bindings for repositories, services, and session managers, and loads module-specific routes, translations, and configuration. It also adds the \EloquentAuthencationRepository\, which implements user persistence and token management using the Eloquent ORM, enabling the system to create, retrieve, update, and authenticate users via email or ID.
app/core/Authencation/Infrastructure/Providers · high confidence
Initial implementation of the Business repository
The EloquentBusinessRepository has been added to provide the data access layer for the Business domain. It implements the BusinessRepositoryInterface and supports creating, updating, and retrieving business records. Key capabilities include checking for business existence by name and address, finding businesses by ID with full data, and retrieving business details filtered by user ID and permission groups. This repository serves as the concrete implementation for business data operations within the application's infrastructure.
app/core/Business/Infrastructure/Repositories, app/core/InvoiceIn/Infrastructure/Repositories · high confidence
Initial implementation of the Eloquent inventory repository
Added the EloquentInventoryRepository class in the Inventory infrastructure layer, implementing the InventoryRepositoryInterface. This file establishes the foundational structure for inventory data access using Eloquent ORM, though the implementation methods are currently empty.
app/core/Inventory/Infrastructure/Repositories · high confidence
Initial implementation of the Order Shipping module
This change introduces the foundational infrastructure for the Order Shipping feature, including the domain entity, repository interface, and service layer. It registers the Eloquent repository and service implementations via a dedicated service provider, sets up API routes for managing order shippings under the business-access scope, and configures event listeners to automatically create shipping records and check readiness upon order approval. The module also includes localized error messages in English, Japanese, and Vietnamese, along with a configuration file to enable the module by default.
app/core/OrderShipping/Infrastructure · high confidence
Initial implementation of the Order repository layer
This change introduces the \EloquentOrderRepository\ class, which serves as the concrete data-access implementation for the Order domain. It provides methods to create, update, and retrieve orders by ID or order number, including a detailed lookup (\findByIdWithData\) that joins shipping and customer information and retrieves the order cancellation reason. This establishes the foundational persistence logic for order management within the application.
app/core/Order/Infrastructure/Repositories · high confidence
Initial implementation of the PermissionGroupUser module
This change introduces the complete PermissionGroupUser module, enabling the management of user-to-permission-group assignments. It includes the domain entities, service interfaces, and Eloquent repository implementations for creating, reading, and deleting these associations. The application layer provides use cases for these operations, supported by DTOs for request handling and validation rules in HTTP requests. A service provider registers the necessary bindings, loads module-specific routes, configuration, and translations (English, Japanese, Vietnamese), and wires up event listeners to handle system events like user creation or deletion. Although the HTTP controller methods are currently commented out, the underlying infrastructure for managing permission group user relationships is now in place.
app/core/Permission/Infrastructure/Providers, app/core/PermissionGroupUser, app/core/Purchase/Infrastructure, app/core/StockOut/Infrastructure · high confidence
Initial implementation of the Stock Movement In module
This change introduces the complete Stock Movement In feature, enabling users to manage inventory receipts at the product and warehouse level. The module provides API endpoints to create, update, and list stock movements, with the index view supporting filtering by customer, purchase order, and keywords. It enforces inventory integrity by validating available quantities against order items and inventory adjustments before allowing creation or updates, and automatically completes movements when related stock-ins are received.
app/core/StockMovementIn · high confidence
Initial implementation of the Stock Movement Out module
This change introduces the core infrastructure for the Stock Movement Out feature, enabling the system to track and manage outgoing stock movements linked to order items. It adds the domain entity, repository interface, and service layer, along with an Eloquent repository implementation that handles creation, updates, and existence checks (preventing duplicate movements for the same order item). A service listener is registered to automatically trigger the creation of stock movement records when an order item is completed. The module also includes API routes for managing stock movements, a service provider for dependency injection, configuration, and translations in English, Japanese, and Vietnamese.
app/core/StockMovementOut/Infrastructure · high confidence
Initial implementation of the core notification module
This change introduces the foundational structure for the new Notification feature within the application. It establishes the domain layer with a Notification entity and repository interface, alongside an infrastructure layer that implements database persistence via Eloquent and a service layer for business logic. The module exposes RESTful API endpoints for listing, updating, and deleting notifications under the /api/business-access route, secured by the 'business' middleware. Additionally, it includes a broadcast event for real-time notifications via Pusher, a service provider for dependency injection and configuration, and translation files for error messages in English, Japanese, and Vietnamese.
app/core/Notifications/Infrastructure · high confidence
Initial implementation of the inventory service layer
The inventory service infrastructure has been initialized with a new \InventoryServiceImpl\ class that implements the \InventoryService\ interface. This service acts as the application-layer bridge for inventory operations, injecting the \InventoryRepositoryInterface\ to handle data persistence and utilizing Laravel's logging facade for diagnostics. This change establishes the foundational service component required for the inventory domain within the application.
app/core/Inventory/Infrastructure/Services, app/core/Permission/Infrastructure/Services · high confidence
Initial implementation of the notification application layer
This change introduces the core application use cases for the new notification system, enabling users to create, read, update, and delete notifications. The \CreateNotification\ use case supports multi-channel delivery (database and email) with localized titles and messages, while \InsertManyNotification\ allows broadcasting notifications to multiple users based on permissions, also respecting user language preferences. The \DeleteNotification\ and \UpdateNotification\ use cases provide standard management capabilities, and \IndexNotification\ handles listing notifications.
app/core/Notifications/Application/UseCases · high confidence
Initial inventory domain model and service interfaces
This change introduces the foundational domain layer for the inventory module, including the Inventory entity with methods to calculate available stock, manage reserved quantities, and handle quantity adjustments, alongside empty repository and service interfaces to define the contract for future implementations.
app/core/Inventory/Domain · high confidence
Initial product management API and validation hooks
This change introduces the core HTTP layer for the new Product module, providing RESTful endpoints for creating, reading, updating, and deleting products. It includes the \ProductController\ and specific request validation classes (e.g., \CreateProductRequest\, \UpdateProductRequest\) that enforce field constraints such as SKU, name, unit, and description length. Additionally, the validation logic is extended with a hook system (\HookDispatcher\) that allows external modules to inject custom validation rules during product creation and updates.
app/core/Product/Http · high confidence
Initial project scaffolding and Dockerized development environment
This release establishes the LiteERP foundation, introducing a Docker-based development stack (MySQL 8, Redis 8.4, PHP 8.4/Apache, and phpMyAdmin) with a \docker-compose.yml\ configuration that supports host-user permission synchronization via UID/GID arguments. It includes the initial \.env.example\ template for application and database credentials, a \.gitignore\ for common artifacts, and essential project documentation such as the MIT License, Code of Conduct, Contributing guidelines, Security policy, and a Development guide detailing the module and page generation commands.
(repo-wide) · high confidence
Initial project scaffolding and infrastructure setup
This release establishes the foundational structure for the application, introducing custom exception handling classes (BadException, ForbiddenBiddenException, UnauthorizedException) that standardize JSON error responses and manage database transaction rollbacks. It adds core domain modules for Business, Customer, Inventory, InvoiceIn, and InvoiceOut, each equipped with service providers, configuration files, and routing loaders. The frontend includes new React UI components (FlatIcon32, IconButton) for consistent iconography and button styling. Additionally, Docker configuration files are provided to set up the MySQL database (connection limits, timeouts), PHP runtime (upload/memory limits), and Apache web server (virtual host for localhost).
(repo-wide) · high confidence
Initial project scaffolding for LiteERP application
This change introduces the foundational configuration and structure for the LiteERP application. It establishes the environment configuration template (.env.example) with defaults for database, mail, broadcasting (Pusher), and AI service integrations, alongside a Vite build configuration that sets up JavaScript module aliases for the React frontend. The entry also includes standard development tooling such as PHPUnit configuration, EditorConfig, and Git attributes to enforce consistent coding standards and file handling across the project.
app · high confidence
Initial public web server entry point and assets
The application now includes the standard Laravel public directory structure, introducing the front controller (index.php) that bootstraps the framework, an .htaccess file for URL rewriting and header handling, a favicon, a robots.txt file, and a default thumbnail asset.
app/public · high confidence
Initial purchase cancellation module scaffolding
This change introduces the foundational structure for the Purchase Cancel feature within the application's core module. It establishes a clean architecture layer including DTOs for request data, domain entities and services for business logic, and infrastructure components such as an Eloquent repository, service implementation, and a service provider for dependency injection. Additionally, it sets up event listening for purchase cancellation events and provides initial configuration, route placeholders, and multi-language translation files (English, Japanese, Vietnamese) for user-facing messages.
app/core/PurchaseCancel · high confidence
Initial release of Inventory Adjustment module
This change introduces the complete Inventory Adjustment feature, enabling users to create and list inventory adjustments. The module provides API endpoints for creating adjustments (which must be negative quantities representing reductions) and listing them with keyword search and pagination. It includes a view endpoint that renders form, index, and search UI components via hooks, and integrates with the system's activity logging to track creation events.
app/core/InventoryAdjustment · high confidence
Initial release of React API service layer
This change introduces the complete set of JavaScript service modules for the application's frontend, providing the client-side API integration for core business features. The new services cover authentication, user and permission management, inventory and stock movements (in/out), purchasing, sales orders, invoicing (custom and standard), shipping, and product management. These modules standardize how the React UI communicates with the backend endpoints under the /business-access prefix, enabling the corresponding UI hooks and views to function.
app/resources/js/react/services · high confidence
Initial release of admin, home, and email view templates
This change introduces the foundational Blade view templates for the application, establishing the visual structure for the admin panel, the public home page, and system email notifications. The admin section now includes dedicated layouts and view stubs for authentication flows (login, register, verify, business, membership) and the dashboard, which supports dynamic child view inclusion. A new home page layout and welcome view provide a landing page with product descriptions and navigation links. Additionally, customized HTML and text templates for Laravel's mail system are added, featuring a branded header with a logo and a responsive default CSS theme, ensuring consistent styling for all outgoing emails.
app/resources/views · high confidence
Initial release of core ERP application pages
This change introduces the foundational React page components for the ERP system, establishing the initial user interface for key modules. Users can now access the Dashboard with revenue and expense overviews, manage Inventory and Product catalogs, and handle Orders, Purchases, and Invoices (both ins and outs). The update also includes the complete Authentication flow (Login, Register, Forget Password, Logout), User Profile management with avatar and language settings, and administrative features for Business setup, Permissions, Extensions, and Activity Logs.
app/resources/js/react/pages · high confidence
Initial release of core ERP data models
This change introduces the foundational database models for the ERP system, establishing the data structure for key business entities. It includes models for managing businesses, users, and permissions, as well as core operational modules for sales (orders, invoices, shipping), procurement (purchases, suppliers), and inventory (stock movements, adjustments, warehouses). The models also support customer management, product categorization, and system features like activity logging, notifications, and image handling.
app/app/Models · high confidence
Initial release of the Category Product module
This change introduces the complete Category Product module, enabling users to manage product categories with support for tax rates, unique name validation, and multi-language translations (English, Japanese, Vietnamese). The implementation includes the domain entity, repository interface, and service layer, wired together via a service provider that registers the Eloquent repository and loads module-specific routes, configuration, and translations.
app/core/CategoryProduct/Infrastructure · high confidence
Initial release of the Customer Group management API
This change introduces the complete HTTP layer for managing customer groups, including controllers and request validation classes for creating, reading, updating, deleting, and listing groups. The implementation exposes standard JSON REST endpoints and integrates a hook system into the validation phase of each operation, allowing external logic to influence request rules for create, update, show, index, and delete actions.
app/core/CustomerGroup/Http · high confidence
Initial release of the Inbound Invoice (InvoiceIn) module
This change introduces the complete HTTP layer for the new Inbound Invoice feature, including controllers for creating, listing, viewing, and updating invoices, as well as request validation classes that enforce business rules (such as date ordering and payment status constraints) and integrate with the system's hook mechanism for extensibility. The module supports core invoice attributes like document numbers, purchase links, tax/discount calculations, and payment tracking (paid, pending, partial), providing the entry point for managing incoming invoices within the ERP.
app/core/InvoiceIn/Http · high confidence
Initial routing configuration for API, web, console, and broadcasting
This change introduces the core routing structure for the application. The API layer exposes a protected user endpoint via Sanctum authentication. The web layer defines the home route and a dashboard section that routes all paths to a single-page controller. Console routing is configured to run the queue worker every five seconds with overlap prevention, and broadcasting routes are set up with Sanctum and a custom 'business' middleware, including a channel authorization logic that validates user and business ID matching.
app/routes · high confidence
Initial supplier management API endpoints and validation
This change introduces the HTTP layer for the new Supplier module, providing RESTful endpoints to create, read, update, and delete supplier records. The \SupplierController\ and \ViewSupplierController\ expose these capabilities, while specific request classes (\CreateSupplierRequest\, \UpdateSupplierRequest\, \IndexSupplierRequest\, \DeleteSupplierRequest\) enforce validation rules for supplier data such as unit name, contact details, and active status. The index endpoint additionally supports filtering by active status and ordering results.
app/core/Supplier/Http · high confidence
Introduce Category Product management with tax support and extensible validation
This change adds the HTTP layer for the new Category Product feature, including controllers and request validation classes for creating, reading, updating, deleting, and listing category products. Users can now manage category products via API endpoints, with validation rules enforcing required name, description, and a new tax field (numeric, 0-100). The validation logic is extensible via a hook system, allowing other modules to inject additional validation rules during create, update, index, show, and delete operations.
app/core/CategoryProduct/Http · high confidence
Introduce Custom Invoice In application layer with hooks and activity logging
This change adds the application-layer use cases and DTOs for the new Custom Invoice In feature, enabling users to create, update, delete, and view custom invoices. The implementation integrates a hook system (dispatching BEFORE/AFTER and UI events) to allow extensibility, dispatches permission-based events for create, update, and delete actions, and automatically records activity logs for these operations.
app/core/CustomInvoiceIn/Application/UseCases · high confidence
Introduce Custom Invoice Out application layer with CRUD use cases and hooks
This change adds the application-layer logic for the new Custom Invoice Out feature, including DTOs for create, delete, and index requests, and use cases for creating, updating, deleting, and viewing custom invoices. Each write operation (create, update, delete) is wrapped in a database transaction, integrates with the hook system for pre- and post-action processing, dispatches permission events, and records activity logs. The view use case dispatches UI-phase hooks for form, index, and search contexts, enabling extensibility for the user interface.
app/core/CustomInvoiceOut/Application/UseCases · high confidence
Introduce Custom Invoice Out module infrastructure
This change adds the infrastructure layer for the new Custom Invoice Out feature, including the service provider that wires up the Eloquent repository and service implementations, API and web route definitions for managing custom invoice-outs, and configuration files. It also provides localized error messages in English, Japanese, and Vietnamese for scenarios such as duplicate document numbers or missing records, ensuring the module is fully integrated and ready for use within the application.
app/core/CustomInvoiceOut/Infrastructure · high confidence
Introduce Customer management API and view rendering endpoints
The application now exposes a complete set of HTTP endpoints for managing customers, implemented via the new CustomerController and ViewController classes. Users can create, retrieve, update, and delete customer records through standard RESTful actions (store, index, show, update, destroy), which delegate to specific application use cases and queries. Additionally, a dedicated view rendering endpoint is available to serve customer-related UI views.
app/core/Customer/Http/Controllers · high confidence
Introduce DTOs for extension management and installation workflows
This change adds a set of Data Transfer Objects (DTOs) within the Extension application layer to support the new database-backed extension feature. Specifically, it introduces \CreateExtensionRequest\, \DeleteExtensionRequest\, \IndexExtensionRequest\, and \UpdateExtensionRequest\ to handle input validation and serialization for creating, deleting, listing, and updating extensions. It also adds \ExtensionInstallPlan\ to structure installation details (commands, migrations, warnings) and \MakeExtensionCommand\ to model extension metadata (name, version, status, etc.) and provide domain behaviors like enabling or disabling an extension. These DTOs form the data contract for the extension installation and management use cases.
app/core/Extension/Application/DTOs · high confidence
Introduce InvoiceOut request DTOs for creation, listing, and shipping updates
Added five new Data Transfer Objects in the InvoiceOut application layer to structure incoming request data: CreateInvoiceOutRequest (including amount\_paid and image fields), IndexInvoiceOutRequest (supporting keyword search and ordering), ShowInvoiceOutRequest, UnapproveInvoiceOutByOrderCancelledRequest, and UpdateInvoiceOutByShippingFeeRequest (handling estimated and actual shipping fees). These DTOs standardize how invoice-out creation, retrieval, cancellation, and shipping fee updates are validated and passed through the application.
app/core/InvoiceOut/Application/DTOs · high confidence
Introduce JavaScript core infrastructure for frontend extensions
Added a new core module in app/resources/js/core that provides the foundational architecture for frontend extensions. This includes a ServiceProvider singleton to manage the registration and booting lifecycle of extensions, an Extension base class for developers to extend, a RouteRegistry and RegisterRoute helper for declarative React route registration, and a PermissionNode class to standardize permission string formatting (e.g., erp.{node}.{node}-{name}).
app/resources/js/core · high confidence
Introduce OrderItem module with CRUD, summary, and event-driven inventory logic
This change adds the OrderItem module, providing full CRUD operations for order line items via a new REST API at /api/business-access/orderitems. Users can create, update, and delete order items, with validation ensuring at least one quantity type (buy, gift, compensation, or conversion) is specified and preventing duplicate products within the same order. The module supports paginated listing and a summary view that calculates totals, discounts, and taxes. It also integrates with system events to automatically update order item status upon order approval or cancellation, and exposes a dedicated endpoint for stock movement out operations.
app/core/OrderItem/Infrastructure · high confidence
Introduce OrderShipping HTTP layer with hook-integrated validation
The OrderShipping module now exposes HTTP endpoints for creating, listing, viewing, and updating shipping records, along with a separate view-rendering endpoint. The controllers delegate to application use cases and return JSON responses. Validation rules for create, index, show, and update operations are extended by a hook system (dispatching on the OrderShipping module during the VALIDATE phase), allowing external logic to inject additional constraints alongside the core field validations (such as order\_id, receiver details, shipping provider, fees, and dates).
app/core/OrderShipping/Http · high confidence
Introduce Overview module with analytics and caching capabilities
This change introduces the new Overview module, providing an API endpoint to retrieve business analytics including revenue, expenses, and cached data for monthly and yearly periods. The implementation includes application-layer use cases that dispatch hooks for validation and processing, and automatically generate cache entries for revenue and expense time-series data for all businesses. In non-production environments, these cache operations run synchronously, while production uses concurrent forking to improve performance.
app/core/Overview/Application · high confidence
Introduce Permission Group management module
This change adds a new Permission Group module to the application, enabling administrators to create, read, update, and delete permission groups via a new REST API under \/api/business-access/permission-groups\. The implementation includes a full set of application DTOs, use cases, and controllers, backed by a domain service that enforces business rules such as preventing the deletion of admin groups and ensuring unique group names. The module is integrated with the system's hook infrastructure for validation and event dispatching, and includes activity logging for create, update, and delete actions. It also provides a dedicated view render endpoint and supports internationalization with messages in English, Japanese, and Vietnamese.
app/core/PermissionGroup · high confidence
Introduce StockOut HTTP layer with hook-based validation
This change adds the HTTP controllers and request validation classes for the StockOut module. The controllers expose standard REST endpoints (store, index, update, show) that delegate to application use cases. A key behavioral addition is the integration of a hook system into the request validation rules; specifically, the Create, Index, Show, and Update request classes now dispatch hooks during the validation phase to allow external modules to inject or modify validation rules for the StockOut module.
app/core/StockOut/Http · high confidence
Introduce custom invoice-in management API
This change adds the HTTP layer for the new Custom Invoice In feature, providing REST endpoints to create, update, delete, and list custom invoices. The controllers delegate to application use cases, while the request validation classes integrate a hook system to allow external validation rules to be injected during the validation phase for create, update, index, and delete actions.
app/core/CustomInvoiceIn/Http · high confidence
Introduce custom invoice-out management with extensible validation hooks
This change adds the HTTP layer for the new Custom Invoice Out feature, providing controllers and request classes to create, read, update, and delete custom invoices. The request validators (Create, Update, Index, Delete) integrate a hook system that allows external modules to inject additional validation rules during the validation phase, making the invoice workflow extensible. The API exposes endpoints for listing invoices with filtering and sorting, as well as full CRUD operations for managing individual invoice records.
app/core/CustomInvoiceOut/Http · high confidence
Introduce infrastructure for extension management and installation
This change adds the infrastructure layer for the new Extension feature, enabling users to install, manage, and uninstall extensions via the API. It introduces a database-backed storage system for extension metadata (name, version, status, etc.) and implements the core logic for uploading and extracting extension ZIP files. The system supports automated installation steps, including running database migrations, publishing static assets, and executing specific Artisan commands (currently limited to \app:npmbuild\). A new \BlockExtension\ middleware allows administrators to globally disable the extension feature via configuration, and the service provider wires up the necessary repositories, services, and install executors.
app/core/Extension/Infrastructure · high confidence
Introduce notification request DTOs with localization and multi-channel support
Added five new Data Transfer Objects (Create, Delete, Index, InsertMany, and UpdateNotificationRequest) to the notification application layer. These DTOs standardize input validation and transformation for notification operations, introducing support for localized messages via message/title parameters and a locale field, as well as multi-channel delivery configuration (defaulting to database storage). The InsertManyNotificationRequest specifically enables bulk notification creation with queue prioritization and permission scoping.
app/core/Notifications/Application/DTOs · high confidence
Introduce order cancellation capability
This change adds the core infrastructure for cancelling orders, including a new \OrderCancel\ module with a dedicated API endpoint (\POST /ordercancels\) to submit cancellation requests. It introduces the necessary domain entities, service interfaces, and Eloquent repository implementations to persist cancellation records, along with an event listener that automatically triggers a cancellation when the \erp.order.cancelled\ event is fired. The module is fully registered via a service provider, complete with configuration, multi-language translations (English, Japanese, Vietnamese), and route loading.
app/core/OrderCancel · high confidence
Introduce order item lifecycle use cases with inventory event tracking
The application now exposes dedicated use cases for managing order items, including creating, updating, deleting, cancelling, completing, and retrieving summaries. These operations are implemented with database transaction safety and integrate with a hook system for extensibility. A key behavioral addition is the automatic dispatch of permission-based events (e.g., ORDERITEM\_CREATE, ORDERITEM\_UPDATE, ORDERITEM\_DELETE) that include calculated quantity changes (summing buy, gift, compensation, and conversion quantities), enabling downstream systems to react to inventory movements triggered by order item modifications.
app/core/OrderItem/Application/UseCases · high confidence
Introduce purchase request DTOs with cancellation support
Added four new Data Transfer Objects in the Purchase application layer to structure purchase data: CreatePurchaseRequest, IndexPurchaseRequest, ShowPurchaseRequest, and UpdatePurchaseRequest. These DTOs define the input fields for creating, listing, viewing, and updating purchase records, including attributes like supplier, dates, status, and shipping fees. Notably, the UpdatePurchaseRequest includes a 'reason' field, enabling users to provide a reason when modifying or cancelling a purchase.
app/core/Purchase/Application/DTOs · high confidence
Introduce structured DTOs for Invoice In application requests
This change introduces four new Data Transfer Objects (DTOs) within the Invoice In application layer to standardize request data handling: CreateInvoiceInRequest, IndexInvoiceInRequest, ShowInvoiceInRequest, and ChangeToUnapprovedRequest. These classes define the expected input structure for creating, listing, viewing, and reverting the approval status of invoices, including fields for business context, financial totals, tax, discounts, payment status, and user attribution. By centralizing these structures, the application ensures consistent data mapping and validation across invoice-related operations.
app/core/InvoiceIn/Application/DTOs · high confidence
Introduce structured DTOs for shipping provider operations
Added four new Data Transfer Objects (CreateShippingRequest, DeleteShippingRequest, IndexShippingRequest, ShowShippingRequest) to standardize how shipping provider data is passed into the application layer. These classes enforce consistent field mapping for creating, deleting, listing, and viewing shipping providers, including support for filtering by active status and keywords in list operations.
app/core/Shipping/Application/DTOs · high confidence
Introduce structured form field rendering classes and type definitions
This change adds a new set of PHP classes in the app/app/Supports/Forms directory to standardize how form fields are defined and rendered. It introduces specific render classes (FormFieldRender, IndexFieldRender, SearchIndexRender) that encapsulate field properties like type, value, label, and options, exposing them via a toArray() method for consistent data structure. Alongside these, it defines type constant classes (FormFieldType, IndexFieldType, SearchFieldType) to provide a centralized, type-safe way to reference field types such as text, select, gallery, link, and badge across the application.
app/app/Supports/Forms · high confidence
Introduce supplier request DTOs for CRUD operations
Added new Data Transfer Objects (CreateSupplierRequest, UpdateSupplierRequest, IndexSupplierRequest, DeleteSupplierRequest) to the Supplier application layer. These classes define the structure for creating, updating, listing, and deleting suppliers, including fields for business details, contact information, and filtering options like keywords and active status.
app/core/Supplier/Application/DTOs · high confidence
Introduces core extension and hook interfaces
This change adds foundational contract interfaces for the application's extension system. It defines \HookInterface\ and \ExtensionEvent\ to standardize how hooks are supported and handled, and how events are dispatched and listened to. Additionally, \QueryInterface\ is introduced to standardize query handling, and \AbstractHook\ provides a base class for implementing hooks with support for action, phase, and timing matching. These contracts establish the structure for the extension core, enabling modular and extensible behavior within the application.
app/app/Contracts · high confidence
Introduces structured DTOs for Warehouse CRUD operations
This change introduces four new Data Transfer Objects (DTOs) within the Warehouse application layer to standardize data handling for warehouse management. The new \CreateWarehouseRequest\ DTO enables creating warehouses with details such as name, address, business ID, and an active status. The \IndexWarehouseRequest\ DTO supports listing warehouses with filtering capabilities, including keyword search, ordering, and filtering by active status. The \ShowWarehouseRequest\ DTO is used for retrieving individual warehouse details, while the \DeleteWarehouseRequest\ DTO handles deletion requests by specifying the warehouse ID, business ID, and the user performing the action. These DTOs provide a consistent structure for mapping incoming request data to internal application logic.
app/core/Warehouse/Application/DTOs · high confidence
Introduces structured request DTOs for StockOut operations
The StockOut application layer now uses dedicated Data Transfer Objects (CancelledStockOutByOrderCancelledRequest, CreateStockOutRequest, IndexStockOutRequest, ShowStockOutRequest) to handle input data. These classes standardize how stock-out requests are constructed from incoming arrays, mapping fields like business\_id, order\_id, and user context (created\_by/approved\_by) into strongly typed structures, which improves consistency and type safety for stock-out creation, listing, viewing, and cancellation workflows.
app/core/StockOut/Application/DTOs · high confidence
Introduction of Customer Request DTOs for CRUD operations
This change introduces a new set of Data Transfer Objects (DTOs) within the Customer application layer to standardize request data for customer management operations. Specifically, it adds \CreateCustomerRequest\, which includes fields for business details, contact information, national ID, and bank details, along with automatic phone number formatting; \IndexCustomerRequest\, which supports filtering by keywords, business ID, active status, and ordering; \ShowCustomerRequest\ and \DeleteCustomerRequest\ for retrieving and removing specific customer records; and \OrderShippingCustomerRequest\ to link customers with shipping orders. These DTOs serve as the structured input contracts for the customer domain logic.
app/core/Customer/Application/DTOs · high confidence
Introduction of a new Hook system for extensible application logic
This change introduces a new Hook infrastructure within the application's support layer, enabling developers to attach extensible logic to specific lifecycle events. The system defines constants for actions (create, update, delete, show, index, search), phases (validate, response, ui, query), and timings (before, on, after) via dedicated classes (HookAction, HookPhase, HookTiming). A HookContext object carries the state of a hook execution, while HookResult allows hooks to signal whether processing should stop and return a payload. The core HookDispatcher iterates through registered hooks (tagged as 'liteerp.hooks' in the container), checks if they support the current context, and executes them, allowing hooks to modify the payload or halt execution. This provides a structured way to inject custom behavior at various points in the application flow.
app/app/Supports/Hooks · high confidence
Introduction of language preference support in authentication data transfer objects
The authentication layer now includes a \lang\ field in the \CreateAuthencationRequest\ and \UpdateAuthencationRequest\ DTOs, allowing users to specify their preferred email language (defaulting to 'en') during account creation and profile updates. This change establishes the data structure required to persist user language settings within the authentication flow.
app/core/Authencation/Application/DTOs · high confidence
Introduction of new React UI components and notification system
This change introduces a suite of new React components for the application's frontend interface. Key additions include CommonDataTable and CommonDataTableV2 for displaying tabular data with features like pagination, filtering, and role-based permissions (edit, delete, add, show). A new NotificationList component and its sub-components (ListItem, EntityIconType, EntityMessage) provide a user-facing notification center with real-time updates via Laravel Echo, allowing users to mark notifications as read or delete them. Additional utility components such as LanguageSwitcher, Footer, Sidebar, Topbar, StatusBadge, and Currencies are also added to support internationalization, layout structure, and data formatting.
app/resources/js/react/components · high confidence
Introduction of queued notification and command execution jobs
The application now supports asynchronous processing for system notifications and background command execution. New queued jobs have been added: CreateNotificationJob, which handles bulk notification insertion via the core notification use case; SendMailJob, which dispatches email notifications to users while integrating with a hook system to allow for pre- and post-processing of notification data; and RunCommandJob, which allows for the asynchronous execution of Artisan commands. These changes shift notification sending and command execution from synchronous to asynchronous operations, improving application responsiveness.
app/app/Jobs · high confidence
Introduction of structured DTOs for product CRUD operations
The application now uses dedicated Data Transfer Objects (CreateProductRequest, DeleteProductRequest, IndexProductRequest, ShowProductRequest) to handle product-related inputs. These classes standardize how product data is validated and transformed, ensuring consistent handling of fields like business ID, user ID, SKU, and search keywords across create, read, update, and delete actions.
app/core/Product/Application/DTOs · high confidence
Inventory API and web route definitions added
The application now exposes inventory management endpoints. The API routes, protected by the 'business' middleware, include standard resource actions for inventory via InventoryController and a specific view endpoint at /view/inventory handled by ViewInventoryController. Web routes for the inventory module have also been initialized.
app/core/Inventory/Infrastructure/routes · high confidence
Inventory module service provider registration
The application now registers the Inventory module's infrastructure via a new service provider. This change wires up the dependency injection bindings, mapping the inventory repository and service interfaces to their Eloquent and implementation classes. It also ensures the module's configuration, translations, and API/web routes are automatically loaded and merged into the application.
app/core/Inventory/Infrastructure/Providers · high confidence
InvoiceOut module event listeners and service provider initialization
The InvoiceOut module now registers its infrastructure components via a new service provider and listener. The listener automatically subscribes to internal ERP events to trigger specific business logic: it unapproves invoices when an order is cancelled, creates new invoices upon order item summary updates, and adjusts invoice totals when shipping fees change. The service provider wires up the necessary repository and service bindings, and loads the module's routes, translations, and configuration.
app/core/InvoiceOut/Infrastructure/Listeners · high confidence
New BusinessListItem component for rendering business details
A new BusinessListItem React component has been introduced to display individual business entries. It renders business name and address, includes a success button for viewing details, and supports a customizable list of additional items (text, links, or status badges) via a renderItem prop. The component uses i18n for label translation and integrates with existing UI elements like StatusBadge and FlatIcon32.
app/resources/js/react/components/Business · high confidence
New DTOs for user creation, deletion, and listing
The application now includes dedicated Data Transfer Objects (DTOs) to structure user-related requests: CreateUserRequest for adding new users, DeleteUserRequest for removing them, and IndexUserRequest for listing and paginating users. These classes standardize how user data is passed through the application layer, mapping incoming request arrays to structured objects with fields like email, business ID, group ID, and pagination parameters.
app/core/User/Application/DTOs · high confidence
New Extension Card UI component for managing extensions
Added the ExtensionCard React component, which renders a card displaying extension details (name, version, verification status, description, author, and directory) and provides action buttons to enable/disable, configure (via settings link), or delete the extension. The component integrates with the ExtensionService for API calls, uses the PermissionService to refresh business roles and navigation after changes, and displays error messages via a popup when operations fail.
app/resources/js/react/components/Extension · high confidence
New Image Manager module for uploading business images
This change introduces the ImageManager module, enabling users to upload image files (jpg, jpeg, png, webp, max 5MB) associated with a specific business. The implementation adds a full stack of components: a controller and form request for validation, a use case that stores files in the public storage under 'business/{id}/images', domain entities and services, and an Eloquent repository to persist image records. A service provider registers the module's dependencies, routes, and translations, exposing a RESTful resource endpoint at /api/business-access/image-manager.
app/core/ImageManager · high confidence
New Invoice Out Detail view component
Added a new React component (InvoiceOutsDetail.jsx) that provides a detailed view for individual invoice-out records. This component fetches and displays invoice metadata, renders a data table of associated order items with specific columns (name, purchase ID, quantities, SKU, price, taxes, totals, warehouse), and supports updating the invoice status (e.g., approval) via a confirmation popup. It integrates with existing services (InvoiceOutService, OrderItemService), UI components (Currencies, StatusBadge, InputForm), and internationalization (useI18n) to present the data.
app/resources/js/react/components/Invoice/InvoiceOuts · high confidence
New Overview module with dashboard data and scheduled caching
This change introduces the core infrastructure for the new Overview module, providing the backend foundation for the business dashboard. It registers the \OverviewController\ at \/api/business/overviews\ to serve dashboard data, including monthly metrics (orders, products, customers, purchases) and time-series revenue/expense charts. To ensure performance, the \OverviewServiceProvider\ schedules the \app:overview\ console command to run every thirty minutes, which pre-calculates and caches these metrics. The module also includes domain entities for comparison logic, repository interfaces for data access, and translation files for English, Japanese, and Vietnamese to support localized dashboard labels.
app/core/Overview/Infrastructure · high confidence
New React input components for forms and media
The Input component library now includes several new React components to support richer form interactions: a rich-text editor (CustomEditor) powered by TinyMCE, single and multi-image upload controls (UploadImage and GalleryImage) that integrate with the ImageManagerService, a searchable dropdown (SearchSelect) using react-select, and standard input wrappers (Input, InputForm, SearchInput, Select, Select2, Textarea) that handle labels, validation errors, and basic state changes.
app/resources/js/react/components/UI/Input · high confidence
New React layout components for authentication, business, dashboard, extension, and popup views
The application now includes dedicated React layout components in the \app/resources/js/react/layouts\ directory to structure different user interfaces. \AuthLayout\ provides a centered layout for login/register pages with a logo and language switcher. \BusinessLayout\ wraps content with a full-height container and a footer. \DashboardLayout\ introduces a sidebar and topbar structure, automatically fetching business navigation and role permissions via API, and handling navigation redirects if business data is missing. \ExtensionLayout\ offers a similar dashboard structure but includes a custom footer with theme toggling, GitHub links, and documentation links. \PopupLayout\ provides a reusable modal component with configurable titles, confirm/cancel actions, and loading states.
app/resources/js/react/layouts · high confidence
New React utility libraries for form, table, and data handling
This change introduces three new JavaScript modules in the \app/resources/js/react/libraries\ directory to standardize common UI interactions. \common.js\ provides utility functions for formatting dates (ISO to local), truncating long strings, and capitalizing text. \handleInput.js\ exports a \useForm\ hook that manages form state, errors, loading status, and edit/destroy modes, along with handlers for input changes and custom hook rendering. \handleTable.js\ provides a \useTable\ hook to manage table data, pagination links, loading states, and column definitions, including a helper to add columns with custom render functions.
app/resources/js/react/libraries · high confidence
New React wrapper component for shared context providers
A new \Wrapper\ component has been added to the React wrappers directory. This component serves as a container that nests the application's children within three essential context providers: \I18nProvider\ for internationalization, \Provider\ from react-redux for state management, and \PopupProvider\ for popup management. This allows child components to access global state, translations, and popup functionality without needing to import these providers individually.
app/resources/js/react/wrappers · high confidence
New React-based Product Management UI
The product management interface has been rebuilt using React components, introducing dedicated views for listing products, adding and editing product details, managing categories, and handling price lists. This update replaces the previous implementation with a modern UI that includes features such as image upload, rich-text descriptions, SKU and unit selection, category assignment, and tax configuration for categories. The new interface also supports dynamic form rendering via hooks, integrates with the CommonDataTableV2 for data display, and enforces role-based permissions for actions like creating, updating, and deleting products and categories.
app/resources/js/react/components/Product · high confidence
New Stock In and Stock Out detail views with inventory management
Added new React components for managing stock movements: StockInDetail allows users to view stock-in records, confirm receipt, and manage inventory movements via a dedicated form; StockOutDetail provides a view for stock-out records including shipping and payment information, with options to confirm shipment and completion; StockList serves as the entry point with tabs for Stock Ins and Stock Outs. These components integrate with existing services (StockInService, StockOutService, StockMovementInService) and support internationalization.
app/resources/js/react/components/Stock · high confidence
New UI components for Stock Out detail view
Added a set of React components (CustomerInfo, FormUpdate, InfoBox, PaymentInformation, ProductTable, ShippingInformation, SummaryRow, TwoCol) to the Stock Out Detail page, providing structured displays for customer and shipping data, payment status, product tables, and a form for updating stock out records with internationalization support.
app/resources/js/react/components/Stock/StockOutDetail · high confidence
New UI components for the Stock In Detail view
The Stock In Detail interface now includes dedicated React components to structure the user experience: InfoBox and SummaryRow for displaying key metrics, TwoCol for side-by-side information layout, ProductTable for listing items with supplier and warehouse details, and InventoryForm for managing stock adjustments via warehouse selection and quantity input.
app/resources/js/react/components/Stock/StockInDetail · high confidence
New artisan commands for setup, admin creation, and scaffolding
The application now includes a suite of new console commands to streamline development and initialization. The \app:setup\ command automates the initial environment configuration, including key generation, database migrations, storage linking, JWT key generation, and frontend asset building. Administrators can now create initial admin accounts using \app:create-admin\. For developers, scaffolding commands have been added to generate Clean Architecture modules (\app:make-module\), React pages (\make:page\), and extension skeletons (\make:extension\), along with specific generators for events, listeners, and broadcasts within modules.
app/app/Console · high confidence
New autoload mechanism for extension translations
The application now automatically discovers and merges translation files from installed extensions. A new \autoload.js\ module scans the \extensions/\\/Resources/js/i18n/\ directory for locale files and merges them with the core English, Vietnamese, and Japanese translations, ensuring that UI strings provided by extensions are available to the user without manual configuration.
app/resources/js/i18n/locales · high confidence
New common API clients and permission definitions for the ERP frontend
This change introduces new shared JavaScript modules in the React common layer to support the ERP application's core functionality. It adds dedicated Axios API clients (api.js, api-upload.js, authApi.js) that handle HTTP requests with automatic token injection, language header configuration (App-Language), and 401 authentication error handling. Additionally, it defines a comprehensive permission structure (permission.js) mapping specific ERP entities—such as Users, Customers, Orders, Products, Inventory, and Invoices—to granular action keys (index, show, create, update, delete, and specific states like approved or cancelled), enabling role-based access control in the UI.
app/resources/js/react/common · high confidence
New custom i18n context and hook for language management
The application now uses a custom React context (I18nContext) and a corresponding hook (useI18n) to manage internationalization. This implementation loads language messages from an autoloaded locale file, defaults to English if no preference is stored, and persists the selected language in the browser's localStorage. Components can now access translation functions and the current language setting via the provided hook.
app/resources/js/i18n · high confidence
New customer and customer group management interfaces
Added ListCustomer and ListGroup React components that provide full CRUD (create, read, update, delete) capabilities for customers and customer groups. These interfaces utilize the new CommonDataTableV2 for data display, support dynamic column and form rendering via API hooks, include search and pagination, and feature multi-language support through the i18n system.
app/resources/js/react/components/Customer · high confidence
New dashboard overview components for business metrics and summaries
The dashboard now includes new React components to display business analytics and summary data. BusinessChart.jsx renders a multi-line chart visualizing revenue, customers, products, orders, inventory, and suppliers, with support for dark/light themes and internationalization. DashboardSummary.jsx displays a grid of summary cards showing current values, percentage changes, and icons. TabSummary.jsx and its child TabSummaryContent.jsx provide a tabbed interface (Today, This week, This month, This year) to view currency-formatted summary data with change indicators.
app/resources/js/react/components/Dashboard · high confidence
New extension examples for SSL, thumbnails, business roles, and home page customization
Added several new extension examples in the extension-examples directory to demonstrate core extension capabilities. The AppSSL extension enforces HTTPS by forcing the URL scheme. The CategoryProductThumbnail extension adds a thumbnail field to CategoryProduct records, including database migrations, hooks for data persistence, and UI fields for listing and searching. The CustomBusinessRole extension allows custom roles to be attached to business roles via hooks. The CustomHomePage extension demonstrates how to override the Home Page UI using hooks, views, and frontend assets.
extension-examples · high confidence
New inventory management and adjustment interfaces
The application introduces dedicated React components for managing inventory records and processing inventory adjustments. The new IndexInventory component provides a searchable, paginated table view of current stock levels, including name, quantity, SKU, unit, warehouse, and category details. Additionally, the IndexInventoryAdjustment component enables users to create and view stock adjustments, allowing selection of specific purchases and stock movements, with visual indicators for quantity increases or decreases and audit trails showing who created the adjustment and when.
app/resources/js/react/components/Inventory · high confidence
New invoice and stock list views with dynamic column rendering
Added new React components for listing invoices and stock movements, including IndexInvoiceIns, IndexInvoiceOuts, IndexCustomInvoiceIns, IndexCustomInvoiceOuts, IndexStockIns, and IndexStockOuts. These views utilize the CommonDataTableV2 component to display data with dynamic columns and search capabilities, allowing users to view and navigate to detailed records for invoices and stock items.
app/resources/js/react/components/Invoice, app/resources/js/react/components/Stock/StockList · high confidence
New invoice-in detail view with approval workflow and item listing
A new InvoiceInDetail component has been added to display the details of a specific purchase invoice. This view allows users to see invoice metadata (document number, purchase ID, approval status) and a table of associated purchase items, including quantities, costs, and taxes formatted with currency support. The component implements an approval workflow where users can approve an invoice, triggering an automatic update and a navigation prompt to the stock-ins list if they have the necessary permissions. It also supports internationalization for labels and messages.
app/resources/js/react/components/Invoice/InvoiceIns · high confidence
New middleware suite for authentication, localization, and request locking
This change introduces five new HTTP middleware components to the application. RequestLockMiddleware prevents double-submission of identical requests by acquiring a distributed cache lock based on the request method, path, and sorted body hash. BusinessToken validates the 'business-access' header using JWT parsing, extracts business and user identity, and merges these details into the request. IsLogged and IsAdmin enforce Sanctum authentication, with IsAdmin optionally restricting business creation to administrators via the ONLY\_ADMIN\_CREATE\_BUSINESS environment variable. AppLanguage sets the application locale based on the 'App-Language' header, supporting English, Vietnamese, and Japanese.
app/app/Http/Middleware · high confidence
New mobile navigation menu component
A new \MenuMobile\ component has been added to the Topbar section, providing a dedicated mobile navigation interface. This component renders a hamburger button that toggles an overlay grid displaying navigation items with icons and labels, supporting both internal routing via \NavLink\ and external links. It integrates with the application's Redux store for navigation data and uses i18n for label translation, ensuring a consistent mobile user experience.
app/resources/js/react/components/Topbar · high confidence
New order editing interface with customer, product, and shipping management
The order editing workflow now includes dedicated UI components for managing order details. Users can select a customer and define order type (retail/wholesale) via the CustomerInformation form, which also supports custom fields. The Products component allows adding, updating, and deleting order items, displaying prices in the configured currency and updating the order summary in real-time. Shipping information can be entered, including receiver details and a selected shipping provider, with an estimated fee field. A Summary component displays the final order totals, including discounts, taxes, and shipping fees.
app/resources/js/react/components/Order/EditOrder · high confidence
New permission management API endpoints
The system now exposes a new RESTful API for managing permissions under the /api/business-access/permissions route. This includes endpoints to create, list, and view specific permissions, with validation rules that enforce a strict naming convention (erp.\<module\>.\<action\>) and require a valid group ID. The implementation uses a hook-based validation system to allow for extensible permission checks during request processing.
app/core/Permission/Http, app/core/Permission/Infrastructure/routes · high confidence
New permission management forms with internationalization support
The permission management interface now includes dedicated React components for editing permissions: GroupPermissionForm for basic group details and PermissionForm for granular role-based access control. These components integrate with the i18n system to display labels and permission actions in the user's preferred language, and PermissionForm dynamically loads and manages checkbox selections for specific features and actions based on the permission ID.
app/resources/js/react/components/Permission · high confidence
New permission-aware UI button components
Added five new React components (ApproveButton, CancelButton, CreateButton, DeleteButton, UpdateButton) to the PermissionButtons library. These components automatically disable themselves based on the user's roles from the Redux store, checking for specific permissions like 'erp.{type}.create' or custom permission strings, ensuring users only see actionable buttons when they have the necessary rights.
app/resources/js/react/components/UI/PermissionButtons · high confidence
New product list and management interface for purchase orders
The AddProduct section now includes a dedicated ListProduct component that displays a paginated table of items associated with a specific purchase order. Users can view existing items, create new line items via a form, edit existing entries, and delete items with a confirmation prompt. The interface integrates with product search functionality to assist in selecting items and updates the global purchase state upon changes.
app/resources/js/react/components/Purchases/AddProduct · high confidence
New product selection and management tables in order editing
The EditOrder interface now includes dedicated components for handling products: ListProduct displays available inventory items (including purchase ID, name, quantity, category, price, warehouse, and purchase date) with search and sorting capabilities, allowing users to add items to the order; ProductAdded shows the items currently included in the order, displaying details such as buy, gift, compensation, and conversion quantities, along with discount and tax information, and enables editing or removing those items.
app/resources/js/react/components/Order/EditOrder/Products · high confidence
New purchase management interface with multi-step workflow and cancellation tracking
The Purchases module now features a complete set of new React components for managing purchase orders. Users can create new purchases via a multi-step form (AddPurchase) and edit existing orders through a detailed view (EditPurchase) that supports status transitions including draft, requested, approved, and cancelled. The list view (ListPurchases) has been updated to use CommonDataTableV2 and displays key financial metrics like shipping fees, subtotal, tax, and total using the Currencies component. Additionally, the system now tracks and displays cancellation reasons for cancelled purchases.
app/resources/js/react/components/Purchases · high confidence
New request DTOs for Order Item lifecycle operations
Added a set of new Data Transfer Objects in the Order Item application layer to support specific order item operations. These include \CreateOrderItemRequest\ for adding items with detailed quantity and pricing fields, \DeleteOrderItemRequest\ for removals, \CancelledOrderItemRequest\ and \CompletedOrderItemRequest\ for status transitions (the latter including stock-out tracking), \CheckExistsOrderItemRequest\ for validation, \GetSummaryOrderItemRequest\ for overview data, and \IndexOrderItemRequest\ which introduces custom pagination support for listing items.
app/core/OrderItem/Application/DTOs · high confidence
Order module API and web route definitions added
The application now includes route definitions for the Order module. The API routes are registered under the /api/business-access prefix with business middleware, exposing a standard resource controller for orders and a specific endpoint for viewing orders. Web routes for the Order module have also been initialized.
app/core/Order/Infrastructure/routes · high confidence
Order module infrastructure initialization
The Order module's infrastructure layer has been initialized with a service provider that registers the order repository and service implementations, loads module-specific routes, translations, and configuration, and wires up an event listener to trigger business logic checks for order items, shipping updates, and order cancellation status based on ERP events.
app/core/Order/Infrastructure/Providers · high confidence
Purchase Item module infrastructure layer added
This change introduces the infrastructure implementation for the Purchase Item feature, including the Eloquent repository for database operations, service layer for business logic (create, update, delete, validation), and a service provider that registers dependencies and loads module routes, translations, and configuration. It also adds event listeners to handle stock movement and purchase request events, and defines API routes for managing purchase items under the business-access scope.
app/core/PurchaseItem/Infrastructure · high confidence
Purchase module HTTP layer with extensible validation
The HTTP layer for the Purchase module has been implemented, introducing controllers to handle standard CRUD operations (store, index, show, update) and a separate controller for viewing purchase data. Validation logic is now centralized in dedicated request classes that integrate a hook system, allowing external modules to inject custom validation rules during the creation, indexing, showing, and updating of purchases.
app/core/Purchase/Http · high confidence
Purchase module application logic and hooks
This change introduces the application-layer use cases for the new Purchase module, enabling users to create, view, update, and cancel purchase records. It includes validation logic to prevent updates to non-draft items and cancellations of already-cancelled records. The implementation integrates a hook system for extensibility during create, update, and view operations, and automatically triggers notifications and activity logs upon purchase creation or status changes (approved, requested, cancelled).
app/core/Purchase/Application/UseCases · high confidence
Shipping module infrastructure layer added
This change introduces the infrastructure implementation for the Shipping module, providing the backend foundation for managing shipping providers. It registers the Eloquent repository and service implementations via a new service provider, defines API routes for CRUD operations on shipping providers under the /api/business-access/shippings endpoint, and includes localized validation messages in English, Japanese, and Vietnamese for errors like duplicate names or missing data.
app/core/Shipping/Infrastructure · high confidence
Shipping module introduces extensible validation via hooks
The Shipping module now supports dynamic validation rules through a hook system. The HTTP request classes (Create, Update, Index, Show, Delete) inject a HookDispatcher to merge additional validation rules based on the specific action (CREATE, UPDATE, INDEX, etc.) and phase (VALIDATE). This allows external modules or plugins to extend the validation logic for shipping operations without modifying the core request classes directly.
app/core/Shipping/Http · high confidence
Sidebar navigation now supports internationalization
The sidebar navigation component has been updated to support multiple languages. The new RenderNav.jsx component integrates the i18n hook to translate both group labels and individual menu item labels, ensuring that the navigation menu displays text in the user's selected language.
app/resources/js/react/components/Sidebar · high confidence
StockOut application logic and hook integration
The StockOut application layer now includes dedicated use cases for creating, updating, viewing, and cancelling stock-out orders, along with retrieval by ID. These use cases enforce business rules (e.g., preventing cancellation of completed or shipped orders) and integrate a hook system to allow UI and response modifications before and after core operations. Additionally, they automatically trigger permission-based events and generate in-app notifications for stock-out lifecycle changes, while also dispatching activity log events to track user actions.
app/core/StockOut/Application/UseCases · high confidence
User management API now supports deletion and validates input via hooks
The User HTTP layer now exposes a destroy endpoint in UserController, allowing users to be deleted via the API. All user-related HTTP requests (create, read, update, delete) now utilize dedicated FormRequest classes that integrate a hook system during validation, enabling custom validation rules to be injected dynamically based on the action (create, index, update, delete).
app/core/User/Http · high confidence
User management use cases now enforce hooks and permission events
The user management use cases (Create, Update, Delete, and List) have been implemented to integrate with the system's hook and permission infrastructure. Creating, updating, or deleting a user now triggers specific hooks (BEFORE/AFTER phases) and dispatches permission events (USER\_CREATE, USER\_UPDATE, USER\_DELETE), allowing other modules to react to these actions. Additionally, business rules are enforced: users cannot delete their own accounts, and users cannot change their own roles.
app/core/User/Application/UseCases · high confidence
Behavioural changes
Added authentication message translations for English, Japanese, and Vietnamese
The authentication module now includes localized message files for English (en), Japanese (ja), and Vietnamese (vi). These translations cover key user-facing strings such as account verification, login status, password requirements, and security notifications, ensuring that users see appropriate messages in their preferred language during authentication flows.
app/core/Authencation/Infrastructure/lang · high confidence
Added customer validation error messages for national ID and phone number conflicts
The Customer module now includes localized error messages for three specific validation scenarios: customer not found, phone number already in use, and national ID already in use. These messages are provided in English, Japanese, and Vietnamese, ensuring users receive clear feedback when attempting to create or update a customer record with duplicate contact or identification details.
app/core/Customer/Infrastructure/lang · high confidence
Added localized messages for Invoice Out notifications
Added English, Japanese, and Vietnamese language files for the Invoice Out module, providing localized strings for error messages (such as 'Invoice not found' and 'partial payment' warnings) and notification titles that now include the username of the user who created, updated, or approved the invoice.
app/core/InvoiceOut/Infrastructure/lang · high confidence
Added localized messages for the InvoiceIn module
Added English, Japanese, and Vietnamese translation files for the InvoiceIn module, providing user-facing text for creation, deletion, stock-related restrictions, partial payment prompts, and notification titles.
app/core/InvoiceIn/Infrastructure/lang · high confidence
Category product listing now supports keyword search and extensible hooks
The category product index query has been updated to allow filtering results by keywords (searching name and description) and integrates a hook system that allows other modules to modify the query or data before pagination. This replaces the previous permission-checking event dispatch with a more flexible hook-based approach, enabling extensions to intercept and alter the listing logic without modifying core code.
app/core/CategoryProduct/Application/Queries · high confidence
Category product use cases now integrate hooks and activity logging
The application layer for category products (Create, Update, Delete, Show, and View) has been updated to support a new hook system and automatic activity logging. Create, Update, and Delete operations now dispatch hooks before and after the core service execution, wrap operations in database transactions, and trigger specific activity log events (e.g., 'erp.activitylog.create') to record user actions. The Show operation no longer dispatches a permission event, and the View operation uses hooks to assemble form, index, and search UI data.
app/core/CategoryProduct/Application/UseCases · high confidence
Centralized navigation and permission configuration
The permission system now uses a dedicated configuration file to define the application's navigation structure, mapping menu groups (Dashboard, Sales, Purchasing, Inventory, Organization, System) to specific routes and permission abilities. This change consolidates UI routing definitions alongside permission logic, ensuring that navigation items are explicitly tied to required access rights (e.g., 'erp.order.index' for Orders). Additionally, a new event listener was introduced to automatically handle permission creation and checking for specific events like 'erp.permissiongroup.create', streamlining the setup of permissions for new groups.
app/core/Permission/Infrastructure/config · high confidence
Centralized permission definitions via new Permission enum
The application now defines all access-control permissions in a single, centralized \Permission\ enum located at \App\\Supports\\Permissions\\Enums\\Permission.php\. This change consolidates permission keys for core modules—including users, customers, suppliers, orders, inventory, invoices, purchases, stock movements, warehouses, business settings, extensions, and permission groups—into one source of truth. By moving these definitions to this specific support location, the system ensures consistent permission naming and simplifies the management of role-based access across the ERP.
app/app/Supports/Permissions · high confidence
Custom Invoice In index query now supports hook-based extensibility
The IndexQuery for Custom Invoice In has been refactored to integrate with the system's hook mechanism. When retrieving the list of invoices, the query builder is now dispatched through the HookDispatcher with the INDEX action and QUERY phase, allowing other modules or plugins to modify the query or data before pagination. This replaces the previous hardcoded permission event dispatch, simplifying permission logic for this feature while enabling dynamic query customization via hooks.
app/core/CustomInvoiceIn/Application/Queries · high confidence
Custom Invoice Out index query now supports extensible hooks
The IndexQuery for Custom Invoice Out now dispatches a hook during the query phase, allowing other modules to intercept and modify the data or query builder before results are returned. This replaces the previous hardcoded permission event dispatch with a more flexible hook-based approach, enabling third-party extensions to filter or enhance the invoice list without modifying core logic.
app/core/CustomInvoiceOut/Application/Queries · high confidence
Customer request validation now supports extensible hooks
The Customer module's HTTP request classes (Create, Update, Delete, Index, Show) now integrate a hook system into their validation rules. When validating customer data, the system dispatches a 'VALIDATE' phase hook for the specific action (e.g., CREATE, UPDATE), allowing external modules to inject additional validation rules dynamically. This enables third-party extensions or internal features to enforce custom constraints on customer fields without modifying the core request classes directly.
app/core/Customer/Http/Requests · high confidence
Customer service implementation with national ID validation and upsert capability
The Customer service implementation now enforces uniqueness checks for both phone numbers and national IDs during creation and updates, throwing specific errors if duplicates are detected. It also introduces a createOrUpdate method that updates an existing customer record if a matching phone number is found, or creates a new one otherwise, streamlining customer data management.
app/core/Customer/Infrastructure/Services · high confidence
Index queries now support extensible hook-based filtering
The IndexQuery handlers for CustomerGroup and PurchaseItem have been refactored to integrate a HookDispatcher. This allows external modules to intercept and modify the database query or request data during the list retrieval process (specifically at the QUERY phase), enabling dynamic filtering or data transformation without altering the core query logic. The previous permission-checking event dispatches have been removed from these handlers.
app/core/CustomerGroup/Application/Queries, app/core/PurchaseItem/Application/Queries · high confidence
Introduce hook-based rendering for Home and Dashboard controllers
The application now uses a hook system to render the Home and Dashboard pages. New controllers (HomeController and DashboardController) dispatch UI-phase hooks before returning their respective views, allowing external modules to inject or modify content via the HookDispatcher. The base Controller class is also introduced as an abstract parent for these controllers.
app/app/Http/Controllers · high confidence
Introduce structured permission use cases with hook and event integration
The permission application layer now uses dedicated use-case classes (CheckPermission, CreatePermission, CreateFullPermission, GetPermission, GetUsersByPermission, IndexPermission, ShowPermission) that delegate to the PermissionService. Create and list operations are wrapped in database transactions and integrate with the hook system (dispatching BEFORE/AFTER hooks on the Permission module) and emit domain events (e.g., PERMISSION\_CREATE, PERMISSION\_INDEX, PERMISSION\_SHOW). CreateFullPermission additionally uses PermissionBuilder to assemble a full permission list before persisting. These changes standardize how permissions are created, retrieved, and listed, and make permission operations extensible via hooks and events.
app/core/Permission/Application/UseCases · high confidence
Introduces database-backed extension management with installation workflows
The extension module has been refactored from a file-based system to a database-driven architecture, introducing a full set of application use cases (All, Create, Delete, Index, Make, Update) to manage extensions. This change enables users to create, update, and delete extensions via a service layer that handles database transactions and dispatches permission events. Additionally, the Create and Make workflows now automatically execute extension installation plans through dedicated install services, ensuring that extensions are properly installed and their assets are published upon creation.
app/core/Extension/Application/UseCases · high confidence
Introduction of a new domain-driven permission model
The permission system has been restructured to use a new domain model, introducing a \Permission\ entity, a \PermissionType\ enum covering specific business areas (such as Orders, Inventory, and Products), and dedicated repository and service interfaces. This change establishes the foundational structure for managing permissions and their associated types within the application's core.
app/core/Permission/Domain · high confidence
Introduction of structured permission request DTOs
The permission application layer now uses dedicated Data Transfer Objects (DTOs) to handle permission-related inputs, replacing ad-hoc data passing. New classes including CheckPermissionRequest, CreatePermissionRequest, CreateFullPermissionRequest, GetPermissionRequest, GetUsersByPermissionRequest, IndexPermissionRequest, and ShowPermissionRequest standardize how permission checks, creations, retrievals, and user lookups are structured, ensuring consistent validation and serialization for business and user context.
app/core/Permission/Application/DTOs · high confidence
Inventory request validation now supports hooks and search parameters
The inventory module's HTTP request validation has been updated to support extensible validation rules and search filtering. The CreateInventoryRequest now integrates with the system's hook dispatcher during the validation phase, allowing external modules to inject custom validation rules for inventory creation. Additionally, the new IndexInventoryRequest introduces support for keyword-based search and configurable sort ordering (ASC/DESC) when listing inventory items.
app/core/Inventory/Http/Requests · high confidence
Inventory view rendering now integrates with the hook system
The Inventory module's view rendering logic has been refactored to dispatch UI-phase hooks for the SHOW, INDEX, and SEARCH actions. This change allows external extensions to inject or modify the form, index, and search data structures before they are returned to the user interface, providing a standardized extension point for customizing the inventory display experience.
app/core/Inventory/Application/UseCases · high confidence
Invoice In list query now supports extensible filtering via hooks
The Invoice In index query has been refactored to integrate a hook system, allowing external modules to modify the database query and request data before results are returned. This enables third-party features to inject custom filters (such as active status checks for customers, suppliers, or shipping providers) or adjust the search logic without altering core code. The query now joins supplier and purchase data, supports keyword search across document number and supplier details, and remains paginated.
app/core/InvoiceIn/Application/Queries · high confidence
Invoice Out index query now supports keyword search and hook-based extensibility
The Invoice Out list view now allows users to filter results by keywords matching the document number, customer name, or customer email. The underlying query logic has been refactored to integrate a hook system, enabling external features to intercept and modify the data retrieval process before pagination. Additionally, the query now correctly calculates adjusted totals and shipping fees by joining related orders and shipping records.
app/core/InvoiceOut/Application/Queries · high confidence
InvoiceOut service implementation with payment validation and shipping fee logic
The InvoiceOut service now enforces business rules during invoice updates, specifically validating that partial payments do not exceed the total amount and automatically marking invoices as fully paid when the amount paid matches the total. It also introduces logic to adjust the invoice total based on actual versus estimated shipping fees, and prevents modifications to invoices that have already been approved.
app/core/InvoiceOut/Infrastructure/Services · high confidence
New Eloquent-based Permission Repository Implementation
The system now uses a new Eloquent-based repository (EloquentPermissionRepository) to handle permission data access, implementing the PermissionRepositoryInterface. This change introduces specific methods for managing permissions: 'create' handles bulk insertion by deleting existing permissions for a group first; 'show' retrieves specific permission names for a group within a business; 'findByPermission' checks if a specific user has a specific permission; 'index' lists all permissions for a user within a business; and 'getUsersByPermission' identifies other users in the same business who share certain permissions, excluding the requesting user. This replaces previous implementations or direct model usage with a structured repository pattern for permission queries.
app/core/Permission/Infrastructure/Repositories · high confidence
New Order Item index query with filtering, pagination, and hook integration
The application now uses a dedicated IndexQuery handler for retrieving order items, which supports keyword search on product name and SKU, custom ordering, and pagination. The query joins related tables to include product details, warehouse names, and calculated fields for discount, tax, subtotal, and total. It integrates with the system's hook mechanism to allow extensions during the query phase and uses a DTO for request validation, replacing previous hardcoded or less structured approaches.
app/core/OrderItem/Application/Queries · high confidence
New React-based Order management interface
The Order module now uses a new React frontend implementation, replacing the previous UI. This introduces a multi-step wizard for creating and editing orders (AddOrder, EditOrder) with dedicated steps for customer information, products, shipping, and completion. The order list view (ListOrder) has been updated to use CommonDataTableV2 for improved table rendering and search capabilities. Additionally, the edit flow now supports order approval, cancellation with reason tracking, and integrates with Redux for order summary data.
app/resources/js/react/components/Order · high confidence
New inventory index query with hook extensibility and search filters
The inventory listing now uses a dedicated IndexQuery that calculates available stock by subtracting ordered quantities and adding adjustments, while supporting keyword search across product name, SKU, and category. The query is extensible via a hook system that allows external modules to modify the data or query before pagination, and it respects business context and sorting preferences.
app/core/Inventory/Application/Queries · high confidence
New permission configuration and UI navigation helpers
The permission system now uses a new \PermissionBuilder\ class to define role-based permissions (such as Employee, Customer, Order, and Inventory) using centralized enum values, alongside \PermissionNode\ to support custom permission compilation and list generation. Additionally, \SupportUINav\ and \UINavGroup\ have been introduced to manage UI navigation structures, allowing menus to be filtered by user roles and organized into standard groups like Sales, Purchasing, and System. Localization strings for permission errors and success messages have also been added for English, Japanese, and Vietnamese.
app/core/Permission/Infrastructure/Helpers · high confidence
New purchase approval workflow and status-specific UI components
The EditPurchase module now includes dedicated UI components for different purchase statuses: ApproveContent, ApprovedContent, CancelledContent, and RequestContent, which display specific messages and actions based on the current state. Additionally, the PurchaseInformation form has been updated to include a supplier search select that filters for active suppliers, date fields for purchase and expected dates, a payment method selector, shipping fee input, and a note field, all of which are disabled once the purchase status is no longer 'draft' to prevent changes after approval or cancellation.
app/resources/js/react/components/Purchases/EditPurchase · high confidence
New request DTO for inventory listing with pagination and sorting
A new IndexInventoryRequest DTO has been introduced to standardize the input parameters for inventory listing operations. This change allows users to filter inventory items by keywords, specify sorting order (defaulting to DESC), and control pagination. The DTO also captures business and user context (business\_id, created\_by) required for scoped inventory queries, replacing ad-hoc parameter handling with a structured data transfer object.
app/core/Inventory/Application/DTOs · high confidence
Order index query now supports extensible hooks
The Order index query has been refactored to integrate a new Hook module, allowing external systems to intercept and modify the query execution via the HookDispatcher. This change replaces the previous permission-checking logic with a hook-based approach, enabling features like custom filtering or data modification without altering the core query logic. The query now dispatches a HookContext with the current data and query builder, facilitating extensibility for future features.
app/core/Order/Application/Queries · high confidence
Order service implementation with status validation and duplicate order number checks
The OrderServiceImpl class now provides the concrete implementation for order management, enforcing business rules during creation and updates. When creating an order, the system validates that the order number is unique to prevent duplicates. During updates, the service validates status transitions (e.g., only pending orders can be marked as approved) and checks for order number uniqueness if the number is being changed, throwing specific error messages for invalid states or conflicts.
app/core/Order/Infrastructure/Services · high confidence
Order shipping index query now supports keyword filtering and hook integration
The OrderShipping index query has been refactored to support filtering by keywords (tracking number or shipping provider name) and integrates with the application's hook system to allow extensibility during the query phase. Permission checks for this endpoint have been removed to simplify permission management across other features, as they do not affect the core logic.
app/core/OrderShipping/Application/Queries · high confidence
Order use cases now enforce state checks and integrate hooks, notifications, and activity logging
The Order application layer has been refactored to include explicit validation use cases (CheckOrderCancelled, CheckReadyForOrderItem, CheckUpdateShippingOrder) that prevent modifications to orders in invalid states. Core operations (Create, Update, Show) now utilize a HookDispatcher to allow external modules to intercept and modify data before and after business logic execution. Additionally, order creation and updates automatically trigger permission-based notifications and activity logs, ensuring users are informed of status changes and actions are audited.
app/core/Order/Application/UseCases · high confidence
Price list index query now supports keyword search and category tax data
The Price List index query has been refactored to join the \category\_product\ table, allowing the returned data to include the \tax\ field from the product category. Additionally, a keyword search feature has been added, enabling users to filter price list entries by matching keywords against the product name or customer group name. The query logic now utilizes a hook system to allow for extensibility during the query phase.
app/core/PriceList/Application/Queries · high confidence
Product index query now joins category and price list tables and supports hook-based customization
The product index query has been refactored to explicitly join the \category\_product\ and \price\_list\ tables, allowing the index view to display category names and associated prices alongside product details. The query now supports filtering by keywords across product name, SKU, and category name, and includes a hook system (\HookDispatcher\) that allows other modules to modify the query or data during the index process. Additionally, a permission event is dispatched before executing the query to ensure proper access control.
app/core/Product/Application/Queries · high confidence
Product use cases now integrate hooks and activity logging
The Product application layer (Create, Update, Delete, Show, and ViewRender use cases) has been updated to integrate a new hook system and activity logging. Create, Update, and Delete operations now dispatch hooks before and after service execution, trigger specific permission events, and log activities via 'erp.activitylog.\*' events. The Show use case dispatches hooks but has permission event dispatching commented out. The ViewRender use case now dispatches hooks for UI rendering (form, index, search).
app/core/Product/Application/UseCases, app/core/Warehouse/Application/UseCases · high confidence
Purchase index query now supports inventory adjustment filtering and hook extensibility
The purchase list view now includes an option to filter results to show only completed purchases that have associated inventory adjustments (stock receipts). Additionally, the query logic has been refactored to integrate with a hook system, allowing external modules to intercept and modify the query execution phase for the purchase index.
app/core/Purchase/Application/Queries · high confidence
Refactored customer index query to support flexible filtering and hooks
The customer list view now uses a new IndexQuery class that replaces the previous index use-case/service pattern. This change introduces support for filtering customers by active status and searching by name, email, or phone number. It also integrates a hook system to allow other features to modify the query logic dynamically, while removing hardcoded permission checks in favor of a cleaner, extensible architecture.
app/core/Customer/Application/Queries · high confidence
Shipping provider index query now supports hook-based extensibility and search filters
The shipping provider listing logic has been refactored to integrate with the application's hook system, allowing other modules to intercept and modify the query execution phase. Additionally, the index query now supports filtering by active status and keyword search (matching name or code), replacing previous hardcoded or permission-based checks with a more flexible, extensible approach for retrieving shipping providers.
app/core/Shipping/Application/Queries · high confidence
Shipping use cases now emit activity logs and support UI hooks
The Shipping module's application layer has been updated to integrate with the system's activity logging and hook infrastructure. Create, Update, and Delete operations now automatically dispatch specific activity log events (e.g., 'erp.activitylog.create') to record user actions, while the View use case has been refactored to dispatch UI-phase hooks for form, index, and search components, enabling extensibility in the user interface.
app/core/Shipping/Application/UseCases · high confidence
Stock In index query now supports extensible hook-based filtering
The Stock In index query has been refactored to integrate a hook system, allowing external modules to intercept and modify the query execution at the 'QUERY' phase. This change enables dynamic filtering and data manipulation for the Stock In list without hardcoding logic into the core query class. The query now joins related tables (invoices, purchases, suppliers, products) and applies keyword search on document number, approver name, and supplier name, while the hook dispatcher allows for additional custom logic to be applied before pagination.
app/core/StockIn/Application/Queries · high confidence
Stock In use cases now enforce state checks, emit notifications, and support hooks
The Stock In application layer has been updated to include stricter validation and richer event handling. The new CancelledStockIn use case allows cancelling stock entries and triggers specific notifications for relevant permissions. CheckForStockMovementIn prevents updates to stock items that are already received or cancelled. CreateStockIn and UpdateStockIn now dispatch permission-based notifications and activity logs upon creation and updates. Additionally, ShowStockIn, UpdateStockIn, and ViewStockIn integrate with the hook system to allow external modifications before responses are sent or UI components are rendered.
app/core/StockIn/Application/UseCases · high confidence
Stock Out index query now supports keyword search and hook extensibility
The Stock Out list view now allows users to filter results by keywords matching the document number, customer name, or product name. The underlying query has been refactored to join additional tables (orders, invoice\_outs, shippings, order\_items, products) to expose these fields, and it now integrates a hook system that allows other modules to modify the query or data before pagination.
app/core/StockOut/Application/Queries · high confidence
Supplier index query now supports extensible hooks and specific filtering
The Supplier index query has been refactored to integrate a hook system, allowing external modules to intercept and modify the query execution phase via the HookDispatcher. Additionally, the query now explicitly supports filtering by active status and keyword search (unit name, email, phone), replacing previous hardcoded logic and removing direct permission checks from this layer to simplify permission handling for other features.
app/core/Supplier/Application/Queries · high confidence
User index query now supports keyword search and hook-based extensibility
The user listing endpoint now allows filtering by name or email via a keywords parameter, in addition to the existing business\_id scope. The query logic has been refactored to dispatch a hook before execution, enabling external modules to modify the query or data, and fires a Permission::USER\_INDEX event upon completion. Pagination defaults to 15 records and supports custom ordering.
app/core/User/Application/Queries · high confidence
Warehouse index query now supports active status filtering
The warehouse listing endpoint now allows filtering results by the active status of a warehouse. Users can pass an 'active' parameter to the index query to retrieve only warehouses that match the specified active state, in addition to existing keyword search capabilities.
app/core/Warehouse/Application/Queries · high confidence
Test coverage
Initial test suite for core ERP modules
Added a comprehensive set of unit and feature tests in app/tests to verify the initial implementation of the ERP system. The new tests cover entity serialization (fromArray/toArray) and service-layer logic for ActivityLog, Business, Customer, CustomerGroup, InvoiceIn, Product, Purchase, Shipping, Supplier, User, and Warehouse modules, ensuring correct data handling and error states for these core capabilities.
app/tests · high confidence
Dependencies
Initial project scaffolding with Laravel, React, and Azure dependencies
The application is initialized with a new Laravel 12 backend and a React frontend, establishing the core technology stack. Backend dependencies include the Laravel framework, Sanctum for authentication, Socialite for OAuth, Pusher for real-time broadcasting, Laravel AI, and the Azure OSS Storage Blob SDK for cloud storage. The frontend is built with React 19, Redux Toolkit, Vite, Tailwind CSS, and includes the Firebase SDK, TinyMCE, and Bootstrap. This change sets up the foundational package manifests and lock files for the project.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 41.
Lenses
- Code Health 56
- Architecture 90
- Maturity 61
- Readiness 28
- Security 70
- Accessibility 40
Changes since last survey
- 300 commits — 222 feature/other, 78 fixes
By area
- app/core — 102 commits
- app/resources — 69 commits
- (root) — 29 commits
- (repo) — 24 commits
- app/app — 13 commits
- .github/workflows — 12 commits
- app/database — 8 commits
- app/.env.example — 6 commits
- app/tests — 4 commits
- docs/Ext.md — 3 commits
- extension-examples/FastMode — 3 commits
- extension-examples/Hrm — 3 commits
- extension-examples/Smtp — 3 commits
- app/composer.json — 2 commits
- docs/Hook.md — 2 commits
- extension-examples/InvoiceInPDF — 2 commits
- extension-examples/InvoiceOutPDF — 2 commits
- app/.gitignore — 1 commit
- app/composer.lock — 1 commit
- app/config — 1 commit
Notable commits
- fix: Add language key, common data table v2, fix label of search select component, add translate for VerticalCommonTable
- fix: Fix: install file of smtp extension
- fix: Merge pull request #46 from diusazzad/fix/purchase-date-default
- fix: fix(purchase): fix default date error when creating new purchase
- fix: fix: Add autoload for invoiceinpdf extension
- fix: fix: Add permission for extension. refactor: change solution check permission for Frontend
- fix: fix: Fix HookTiming of create Customer
- fix: fix: Fix UI
- fix: fix: Fix ui business list
- fix: fix: UI button common
- fix: fix: add business query for permission group
- fix: fix: add condition with field active for index query warehouse
- fix: fix: add group_id for event from permission group
- fix: fix: add hook, fix bug, clean code. refactor: index query, adapter, optimizer query db
- fix: fix: add method update inventory on step stock in of purchase, clean code, update ui
- fix: fix: add role for create admin
- fix: fix: add translate. refactor input label for order
- fix: fix: add translate. refactor: implement label input input form
- fix: fix: add translate. refactor: implement label into common component input form
- fix: fix: add translate. refactor: implement label into input form
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
liteerp-oss/liteerp was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 3bbb6fef7067489c3f85081821bdb1fad42115cb — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.