Works/ERP-Lite
ERP-Lite
Multi-company ERP with a FastAPI backend and Nuxt front end: sales, purchasing, warehouse and transport in a single system.
- The challenge
- Several companies, one ERP: sales, purchasing, warehouse and transport without mixing data between legal entities.
- The solution
- FastAPI API with SQLAlchemy and JWT, Nuxt front end with Pinia and i18n. Docker Compose for development and versioned migrations.
- The outcome
- Multi-company base with separate modules and a single front end for sales, purchasing and stock operations.
Context
A lightweight ERP for groups with several companies. Each company has its own catalogue, customers and stock, but they share the same application and deployment.
Decision
The backend exposes resources per company and isolation is enforced in the data layer, not in the interface. The front end does not know the database: it consumes the API and represents state.
Technical details
- JWT authentication and role-based permissions.
- SQLAlchemy with per-request sessions.
- Versioned migrations and sample data.
docker-composeto start API and front end with one command.
What I learned
Multi-company is not a tenant_id field on every table. It is a design decision that has to be in the queries, the indexes and the tests.
[10] let's talk
Is your operation falling apart?
Tell me where it hurts: parallel spreadsheets, stock that never matches, processes that depend on one person. You get a diagnosis, not a blind proposal.