> For the complete documentation index, see [llms.txt](https://gdgaddis.gitbook.io/mobile-development-reference-tce-c01/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gdgaddis.gitbook.io/mobile-development-reference-tce-c01/introduction/project-description.md).

# Project Description

What are we building?

The project that we are going to build for this tech camp is a simple shopping app with the following features:

* Get my profile
* Get all products&#x20;
* Filter products by category
* Add products to the cart
* Increment or decrement products on the cart

The purpose of the project and its limited features is to introduce you basics of coding a standard app in a way that is scalable and easy to manage in the future.&#x20;

These are what the screens of the application we are going to build would look like

<div align="left"><img src="https://399680232-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MPDvRuCdUm-r5AYLsp-%2F-MXrv4829k4EvSSM3Ucy%2F-MXrvuiXkHqLGFuSu-ie%2Fphoto_2021-04-09_21-40-14.jpg?alt=media&amp;token=ac844b75-cc13-455c-9bd1-9ad6de4cc0dd" alt="Products screen"></div>

<div align="left"><img src="https://399680232-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MPDvRuCdUm-r5AYLsp-%2F-MXrv4829k4EvSSM3Ucy%2F-MXrw4HKs0lVdqxpt23y%2Fphoto_2021-04-09_21-40-11.jpg?alt=media&amp;token=7090fa10-9887-41ee-97ed-3445702fbe75" alt="Cart screen"></div>

<div align="left"><img src="https://399680232-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MPDvRuCdUm-r5AYLsp-%2F-MY9Y7fHIqTQPofyu2aZ%2F-MY9Z0ijcDAEfu3yE-05%2Fphoto_2021-04-13_12-28-52.jpg?alt=media&amp;token=2c966f08-3603-4a68-b44d-ee4eb6648ac9" alt="Profile screen"></div>

That being said here's a couple of things to expect to learn with this project:

* Bloc (Cubit) state management
* Local state caching using hydrated cubit
* Using DIO for Rest-API requests
* Freezed for sealed class generation
* JSON annotation for model generation
* Unit testing with mockito&#x20;
* Widget testing
* Auto Route for route management
* Dependency injection using GetIt

&#x20;
