|
3 | 3 | ## Purpose and history
|
4 | 4 |
|
5 | 5 | This program is used in small network of fashion stores of one of my
|
6 |
| -clients. It manages items in stock using visual size matrix. It |
7 |
| -supports a few warehouses, movement of goods between them, sells, |
| 6 | +clients. It manages items in stock using visualized size matrices. It |
| 7 | +supports multiple warehouses, movement of goods between them, sells, |
8 | 8 | returns, reports and other typical features.
|
9 | 9 |
|
10 |
| -There were already existed many store automation suites, but main |
11 |
| -motivation force for developing this another one was to be able to be |
| 10 | +Prior to this project, there were already existed many store automation suites, but main |
| 11 | +motivation for developing this another one was to be able to be |
12 | 12 | used by employees without any PC experience, by “non-users”. The UI
|
13 | 13 | should've be as simple and intuitively understandable as possible. And
|
14 | 14 | that consideration has lead to many design constraints, so this software
|
15 | 15 | is essentially tailored to suit that particular client, and maybe not
|
16 |
| -suitable at all for any “generic” fashion store. |
| 16 | +suitable to any “generic” fashion store. |
17 | 17 |
|
18 | 18 | After many years I’m publishing it as an open source (with respective
|
19 | 19 | copyright permissions) as part of **my professional portfolio**.
|
20 | 20 |
|
21 |
| -## Demonstration of my skills |
22 |
| - |
23 |
| -Current development is located inside of [efcore](https://github.com/vkradio/FashionStore/tree/efcore) branch. |
| 21 | +## Demonstration of my current skills |
24 | 22 |
|
25 | 23 | ### 1. Project architecture
|
26 | 24 |
|
27 |
| -The central part of the solution is an [ApplicationCore](https://github.com/vkradio/FashionStore/tree/efcore/src/ApplicationCore) subproject. It contains domain entities (according to DDD), service interfaces (to support DI) and other basic stuff. Entities, according to Single Responsibility principle, are almost 100% decoupled from any persistence storage infrastructure such as EF, JSON etc, they only contain Primary and Foreign Key properties when needed. |
| 25 | +The central part of the solution is an [ApplicationCore](https://github.com/vkradio/FashionStore/src/ApplicationCore) subproject. It contains domain entities (according to DDD), service interfaces (to support DI) and other basic stuff. Entities, according to Single Responsibility principle, are almost 100% decoupled from any persistence storage infrastructure such as EF, JSON etc, they only contain Primary and Foreign Key properties when needed. |
28 | 26 |
|
29 |
| -User Interface (in it's modern WPF Store Selection control) employs MVVM pattern. ViewModels are located in the dedicated project [ViewModels](https://github.com/vkradio/FashionStore/tree/efcore/src/ViewModels), they are totally ignorant of UI infrastructure (they are not coupled to WinForms or WPF or any other such dependencies). ViewModels have dedicated [unit tests](https://github.com/vkradio/FashionStore/tree/efcore/tests/tests/ViewModelsTests). |
| 27 | +User Interface (in it's modern WPF Store Selection control) employs MVVM pattern. ViewModels are located in the dedicated project [ViewModels](https://github.com/vkradio/FashionStore/src/ViewModels), they are totally ignorant of UI infrastructure (they are not coupled to WinForms or WPF or any other such dependencies). ViewModels have dedicated [unit tests](https://github.com/vkradio/FashionStore/tests/tests/ViewModelsTests). |
30 | 28 |
|
31 |
| -I do not use any third-party MVVM libraries here, so there is a simplest [MvvmInfrastructure](https://github.com/vkradio/FashionStore/tree/efcore/src/MvvmInfrastructure) project which contains reusable functionality such as subscription to property change events. Also I have a couple of miscellaneous utilities projects. And the remaining parts are legacy WinForms and custom DAL code which were just renamed to comply with modern practices. |
| 29 | +I do not use any third-party MVVM libraries here, so there is a simplest [MvvmInfrastructure](https://github.com/vkradio/FashionStore/src/MvvmInfrastructure) project which contains reusable functionality such as subscription to property change events. Also I have a couple of miscellaneous utilities projects. And the remaining parts are legacy WinForms and custom DAL code which were just renamed to comply with modern practices. |
32 | 30 |
|
33 |
| -Accordance to Single Responsibility principle in solution structure, where projects are loosely coupled with each other, allow us to relatively easy refactor and and extend functionality. For example, near [FashionStoreWinForms](https://github.com/vkradio/FashionStore/tree/efcore/src/FashionStoreWinForms) I can add FashionStoreWinFormsCore project with migration to .NET Core 3 WinForms, or FashionStoreWpf, if I would need to port it to WPF, or even FashionStoreAngular, if there will be a need to create an Angular SPA. I can add Web API subproject which will be a bridge to storage and other core functionality, and I can even restructure project to a set of different microservices and serverless function groups. For example, one microservice could contain functionality for sales person and another one - for business administrator. |
| 31 | +Accordance to Single Responsibility principle in solution structure, where projects are loosely coupled with each other, allow us to relatively easy refactor and and extend functionality. For example, near [FashionStoreWinForms](https://github.com/vkradio/FashionStore/src/FashionStoreWinForms) I can add FashionStoreWinFormsCore project with migration to .NET Core 3 WinForms, or FashionStoreWpf, if I would need to port it to WPF, or even FashionStoreAngular, if there will be a need to create an Angular SPA. I can add Web API subproject which will be a bridge to storage and other core functionality, and I can even restructure project to a set of different microservices and serverless function groups. For example, one microservice could contain functionality for sales person and another one - for business administrator. |
34 | 32 |
|
35 | 33 | ### 2. Unit tests
|
36 | 34 |
|
|
0 commit comments