LiteERP
Lightweight Open-Source ERP for internal business use.
π’ LiteERP β A Pure Core ERP, Built for Extension, Not Complexity
LiteERP is an open-source ERP built with ReactJS, Laravel, and MySQL 8, designed as a pure, minimal core with an unlimited extension model.
Unlike traditional ERP systems such as Odoo or SAP, which bundle everything into a single, ever-growing core, LiteERP follows a fundamentally different philosophy:
Keep the core small, stable, and predictable β push complexity outward into extensions.
LiteERP is built on Clean Architecture, Domain-Driven Design (DDD), and Domain Events, with extremely low framework coupling and long-term maintainability as first-class goals.
βοΈ LiteERP vs Odoo β¦
LiteERP
Lightweight Open-Source ERP for internal business use.
π’ LiteERP β A Pure Core ERP, Built for Extension, Not Complexity
LiteERP is an open-source ERP built with ReactJS, Laravel, and MySQL 8, designed as a pure, minimal core with an unlimited extension model.
Unlike traditional ERP systems such as Odoo or SAP, which bundle everything into a single, ever-growing core, LiteERP follows a fundamentally different philosophy:
Keep the core small, stable, and predictable β push complexity outward into extensions.
LiteERP is built on Clean Architecture, Domain-Driven Design (DDD), and Domain Events, with extremely low framework coupling and long-term maintainability as first-class goals.
βοΈ LiteERP vs Odoo vs SAP
| Aspect | LiteERP | Odoo | SAP |
|---|---|---|---|
| Core size | Small & pure | Large, feature-heavy | Very large |
| Customization | Extensions & hooks | Core overrides & modules | Consultants & customization layers |
| Infrastructure | Low-resource friendly | MediumβHigh | HighβVery High |
| Upgrade safety | High | Medium | LowβMedium |
| Target users | SMEs & developers | SMEsβEnterprises | Large enterprises |
Odoo and SAP aim to cover every possible business scenario inside the core. This makes them powerful, but also heavy, expensive, and difficult to evolve safely.
LiteERP deliberately chooses a different path.
π§ A Pure and Minimal Core
LiteERP is built around a small, clean, and stable core.
The core intentionally focuses only on:
- Essential operational workflows
- Clear and predictable business rules
- Strong domain boundaries
- Long-term architectural stability
Instead of absorbing complexity, LiteERP treats complexity as an external concern handled by extensions.
This makes the core:
- Easy to understand
- Safe to evolve
- Fast to deploy
- Suitable even for low-resource environments
π§© Extensions β Where Real Power Lives
All complex, domain-specific, and evolving business logic lives in Extensions.
Extensions are:
- Fully decoupled from the core
- Loaded dynamically only when needed
- Able to hook into domain events, validation, workflows, and APIs
- Safe to develop, replace, or remove without touching core logic
Through extensions, LiteERP can grow into:
- Industry-specific ERP systems
- Highly customized internal platforms
- Complex enterprise workflows β without bloating the core
The extension system is the true engine of scalability in LiteERP.
π Built for Laravel Developers and SMEs
LiteERP opens a new path for:
- Laravel developers who want to build real ERP systems with clean architecture
- SMEs that need flexibility without enterprise-level complexity and cost
Developers can:
- Understand the core quickly
- Build extensions using familiar Laravel patterns
- Deliver complex ERP features incrementally and safely
Businesses can:
- Start with a clean operational core
- Enable only what they need
- Scale functionality as operations grow
π Lightweight by Design
LiteERP intentionally stays lightweight.
Compared to all-in-one ERP platforms like Odoo or SAP, this results in:
- Lower infrastructure costs
- Faster onboarding
- Easier customization
- Better long-term control over complexity
LiteERP invoices are operational invoices, not tax invoices. The system focuses on operations, not replacing accounting software or government e-invoicing platforms.
β¨ Philosophy
Keep the core pure. Move complexity to extensions. Scale functionality without scaling chaos.
What LiteERP is NOT
β Not an accounting software
β Not a tax-compliant invoicing system
β Not a replacement for government e-invoice providers
Extensions
List extension example
π¦ Document
π Features
β Completed Features
- Purchase
- Invoice In
- Stock In
- Warehouse
- Product
- Product Category
- Customer
- Customer Group
- Inventory
- Order Shipping
- Shipping Provider
- Authentication
- Multiple Business
- Log
- Order
- Invoice Out
- Stock Out
- Notification
- Overview Dashboard
- Employee Role
- Storage
- Extension
β³ In Progress
- Reports
- Multiple Language
π§ͺ Testing
- Global Testing
- Unit Tests
- Clean Code Standard (ReactJS & Laravel)
π οΈ Technologies Used
- ReactJS
- Laravel 12
- MySQL 8
- Clean Architecture
- Domain Driven Design
- Domain Events
- PHP 8.3 or greater than
ποΈ System Architecture
Clean Architecture Layers
/core
βββ Domain
β βββ Entities
β βββ ValueObjects
β βββ Events
β βββ Services
β βββ Repository Interfaces
β
βββ Application
β βββ UseCases
β βββ DTOs
β βββ Handlers
β
βββ Infrastructure
β βββ Persistence (Eloquent, DB)
β βββ Event Handlers
β βββ Providers
β
βββ Resources
βββ js
βββ ReactJS UI
π§© Domain Driven Design (DDD)
Core Concepts
- Entity β domain objects with identity
- Value Object β objects compared by value
- Aggregate & Aggregate Root β consistent clusters of domain logic
- Domain Service β domain logic not tied to a specific entity
- Repository Interface β abstracted persistence
- Event β communication between domain modules
Example Domain Events:
Event::dispatch("erp.user.create", $data);
Event::listener("erp.user.*", function(string $eventName, array $data));
π Module Communication
Modules communicate via Domain Events, enabling:
- Loose coupling
- High scalability
- Easier testing
- Event-driven workflow
π¦ Multiple Business Support
- A user can belong to multiple businesses
- Each request is processed under the selected
current_business - Fully isolated business data
- Managed through middleware + Redux
π Authentication
- JWT authentication
- Refresh token
- Multi-business session
- Role & Permission per business
π Coding Standards
- PSR-12 (Laravel)
- Event-driven communication
- Clear domain separation
- Consistent folder structure
π§ Roadmap
- Notification Center
- Reporting Engine
- Overview Dashboard
- Extended test coverage
- Realtime event streaming (WebSocket)
- Reports
- Multiple Language
- Extensions
π Diagram Event
I will continue update to easy to understand
https://drive.google.com/file/d/1acR1X12C4dLYNyK7w4grxWdTnfyswQDi/view?usp=sharing
π¦ Setup by Docker
Setup basic information for business, you need change information like business information working for.
APP_TIMEZONE="Asia/Ho_Chi_Minh"
APP_CURRENCY="USD"
APP_CURRENCY_LOCALE="en-US"
You also need config SMTP mail, timezone, pusher at ./app/.env before start.
- First go to root folder and run
docker compose build && docker compose up -d - Next login in to docker container
docker exec -it erpsoft-8.3 bash - Next run
composer install,cp -r ./.env.example .env - Next run
php artisan generate:key - Next run
php artisan migrate - Next run
php artisan storage:link - Next run
chmod -R 777 ./storage - Next run
chmod -R 777 ./extensions - Next run
php artisan jwt:generate-keysto generate private key and public key for Json Web Token - Next run
php artisan app:create-admin {email} {password} {name}to create admin account - Next run
php artisan queue:work --queue=low,default,high - Next run
php artisan schedule:work - Last step exit docker container and go to
./appand runnpm run devornpm run buildfor production.
Visit: http://localhost:8001/dashboard/login
Note: You can change password for mysql account at docker-compose.yml
π¨βπ» Author
Stevelee
LiteERP
π Contact
Contact email: hoang.le.tn91@gmail.com
β€οΈ Support LiteERP
If this project helps you, consider sponsoring via GitHub Sponsors.