Skip to content
CAI
Software that uses CAICheck a score

liteerp-oss/liteerp

40.7

Weak · 21 September 2026

49.8k

lines of production code

PHP

with JavaScript

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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

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.