fluentpos - Open Source Point Of Sales / Inventory Management Solution
Built with ASP.NET Core 5.0 WebAPI & Angular 12 Material
Having quite a lot of experience with POS & Inventory Management system, we set out to build out a full fledged open source system using our favorite tech stack and tools. Modular development was a prime requirement for us when we got started. Adapting to a Microservice architecture was the first choice we had. But given the complexities with the mentioned architecture, we decided to stay away from it atleast for the starting.
There actually was no real need to implement microservices. fluentpos was meant to help businesses in their day-to-day activities. For this, a well designed monolith application would also do the trick. We were clear to have the API and UI seperated, to give oppurtunities to multiple client apps in the future.
For API, ASP.NET Core 5.0 was our obvious choice. As for the UI, we decided to go with Angular 12 Material UI.
The WebAPI application had to be highly modular to improve development experience. This needed breaking down the application to logical modules like Identity, Catalog, Sales, Inventory. Each of these modules has its own controllers / interfaces / dbContext. As for the DB providers, postgres / mssql will be used. One module cannot directly talk to the other module nor modify its table. CrossCutting concerns would use interfaces/ events. And yes, domain events are also included in the project using mediatr Handler. Each of the module follows a clean architecture design / Onion / Hex.
fluentpos was meant for retail businesses. The modular monolith architecture would help us to extend fluentpos to support other business modules like cafe, restaurant, warehouses and so.
- API - ASP.NET Core 5.0 WebAPI
- Client - Angular 12 Material
- Data Access - Entity Framework Core 5.0
- DB Providers - Postgres, MSSQL
- API -
- Angular Project -
Not Yet Started
- Seperate Website to maintain documentation -
- Docker Container -
fluentpos is in it's early development stage.
Clone this repository to your local machine.
Prerequisites to run API
- Install the latest .NET 5 SDK
- Install the latest DOTNET & EF CLI Tools by using this command
dotnet tool install --global dotnet-ef
- Install the latest version of Visual Studio IDE 2019 (v16.8 and above)
- It's recommended to use Postgres DB as it comes by default with fluentpos. Install PostgreSQL.
- As for quick DB Management, we love Azure Data Studio
Running the API
- Open up
FluentPOS.slnin Visual Studio 2019.
- Navigate to appSettings.json under
- Add you PostgreSQL connection string under
PersistenceSettings. The default connection string is
- That's everything you need to setup the API. Just build and run the API project.
- By default, the database is migrated and latest changes are applied.
- Some default data is also seeded to this database like roles, users, brands, products etc.
Not interested with PostgreSQL? You can easily switch to MSSQL by following this guide.
You can use these credentials to generate jwt tokens in the
Since fluentpos is in it's early development stage, I have not been able to write detailed documentation about the implementation. You can expect quite a lot of content around this architecture on my blog @codewithmukesh in the upcoming days.
- Discord @fluentpos
This project is licensed with the MIT license.