Storet

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:

  1. Item catalogue: contains a list of the items I have purchased
  2. Inventory: provides an overview of stock levels, showing which items need restocking and which are in sufficient quantities

with further modules planned, such as:

  1. Recipes: Defining recipes and creating shopping lists for ingredients in short supply

The following features are also requested:

  1. The ability to scan product barcodes and add them to the catalogue
  2. The ability to scan receipts and update the stock

Tech Stack

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:

  1. Presentation layer: the external layer that interacts with the outside world and handles HTTP requests.
  2. Service layer: the layer that houses the business logic, the rules, and how data should be processed.
  3. 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.