All projects

Mobile, desktop & console

Stock Management · Flutter mobile app

An offline-first mobile app that lets small businesses know at any time what they have in stock, what is about to run out and what happened.

  • Individual project
questions the app answers
3
business modules
5
layers per module
3
connection needed to use it
0

01Starting point

Context & mission

The problem

A customer asks for an item, the manager turns to the shelf: none left. The problem is not technical, it is about information: the stock exists, but nobody knows exactly what it holds or when to restock.

The mission

Build a tool that fits in the manager’s pocket, works offline and answers three questions: what do I have and what is it worth? what is about to run out? what happened, when and why?

My role

Designed and built on my own.

02Execution

What I did

  1. Catalogue with alert thresholds

    Each product has a name, description, price, quantity and its own alert threshold, and can be linked to a supplier.

  2. Traceable movements

    Every stock-in (delivery, restock) and stock-out (sale, loss, breakage) is recorded with its quantity, date and reason; product quantity updates automatically.

  3. Dashboard

    Product count, in-stock and out-of-stock products, total stock value, a pie chart and the list of products to restock first.

  4. Offline first

    Local data with Hive: the app stays usable without a network. The repository tries the remote source (Dio), then falls back to local data.

  5. Clean Architecture

    Five modules (auth, products, suppliers, stock, dashboard), each in three layers: data, domain, presentation. State managed with BLoC, dependencies injected with get_it.

03Design

Architecture

Clean Architecture organised by feature. Business logic stays independent of the framework, the API and the database: every action follows the same path, from screen to repository, which picks the remote or local source.

The path of an action
  1. ScreenMaterial Design 3
  2. BLoCEvents · states
  3. Use caseDomain
  4. RepositoryRemote then local
  5. HiveOffline
Supported by
  • DioFuture REST API
  • get_itDependency injection

04Impact

Results

  • The manager knows at any time what they have, what it is worth and what is about to run out.
  • Every stock movement is traceable: quantity, date and reason.
  • A network layer already in place for a future API sync.

05Wrap-up

Takeaways

What this project proves

That I structure a mobile app with the same discipline as a backend: clean layers, predictable state, data available without a network.

06Technology

Full stack

  • Flutter
  • Dart
  • flutter_bloc
  • get_it
  • Dio
  • Hive
  • fl_chart
  • Material Design 3
  • Clean Architecture