Skip to content
master
Switch branches/tags
Code

fluentpos

fluentpos - Open Source Point Of Sales / Inventory Management Solution

Built with ASP.NET Core 5.0 WebAPI & Angular 12 Material

About fluentpos

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.

Technology Stack 💪

  • API - ASP.NET Core 5.0 WebAPI
  • Client - Angular 12 Material
  • Data Access - Entity Framework Core 5.0
  • DB Providers - Postgres, MSSQL

Project Status

  • API - In Progress
  • Angular Project - Not Yet Started
  • Seperate Website to maintain documentation - Coming Soon!
  • Docker Container - Coming Soon!

Getting Started

fluentpos is in it's early development stage.

Clone this repository to your local machine.

Prerequisites to run API

  1. Install the latest .NET 5 SDK
  2. Install the latest DOTNET & EF CLI Tools by using this command dotnet tool install --global dotnet-ef
  3. Install the latest version of Visual Studio IDE 2019 (v16.8 and above) 🚀
  4. It's recommended to use Postgres DB as it comes by default with fluentpos. Install PostgreSQL.
  5. As for quick DB Management, we love Azure Data Studio

Running the API

  1. Open up FluentPOS.sln in Visual Studio 2019.
  2. Navigate to appSettings.json under src/Api/Bootstrapper/appsettings.json
  3. Add you PostgreSQL connection string under PersistenceSettings. The default connection string is "postgres": "Host=localhost;Database=fluentpos;Username=postgres;Password=root"
  4. That's everything you need to setup the API. Just build and run the API project.
  5. By default, the database is migrated and latest changes are applied.
  6. 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.

Default Credentials

You can use these credentials to generate jwt tokens in the api/identity/tokens endpoint.

Note

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.

The Team

Community

License

This project is licensed with the MIT license.

About

Open Source Point Of Sales and Inventory Management Solution built with ASP.NET Core 5.0 WebAPI and Angular 12 Material.

Resources

License

Releases

No releases published

Packages

No packages published