Context
On several occasions whilst shopping, I find myself with buying items that I already have in stock at home, or even forgetting to buy things I needed for reasons like "it's fine I've got another one" or "I still have enough left". To avoid these situations, I decided to create this stock management software. I’m aware that such apps already exist on the market, but, as with every idea I’ve ever had, I like to get into the whys and hows, and I love building things.
Description and goals
Storet is a play on words combining the verb "store it" and the noun "store". It is a web-based stock management application comprising two main modules:
- Item catalogue: contains a list of the items I have purchased
- Inventory: provides an overview of stock levels, showing which items need restocking and which are in sufficient quantities
with further modules planned, such as:
- Recipes: Defining recipes and creating shopping lists for ingredients in short supply
The following features are also requested:
- The ability to scan product barcodes and add them to the catalogue
- The ability to scan receipts and update the stock
Tech Stack
Angular.NETAdditional librairies :Entity Framework CoreMediatRMoq
PostgreSQL
Implementation
Backend
The database is a PostgreSQL database hosted by Supabase.
The backend is a modular .NET web API. Each module is an independent project connected to a schema in the database, due to the limitation in the number of projects that could be created on Supabase. Each module adopts a 3-tier architecture with the following layers:
- Presentation layer: the external layer that interacts with the outside world and handles
HTTPrequests. - Service layer: the layer that houses the business logic, the rules, and how data should be processed.
- Data persistenc layer: the layer that interacts with the databe to execute CRUD operations.
A central module calls the other modules to pass the requests to the targeted one, as well as inter-module messages.
Frontend
The frontend is an Angular client with scss styles. It is organised by page and component.
Tests
Test Driven Development (TDD) is adopted in this project. Failure and success cases are designed before coding each functionnality. They are not accepted unless the tests pass.
Demo
The app is still in development, but it will be deployed on Netlify and Render. A demo account is planned.
Code
The code is available on this GitHub repository. The app being in development, the link points to the dev branch.