Solution structure

A quick guide to how the current structure of Drop solution file looks like

Dependencies(folder)

Common dependency: CORE.Library, CORE.Library.UI, and the CORE.MVVM.Template.ViewModels for MVVM reference.

Test(folder)

Contains unit tests, to develop much more powerful in future.

Tools(folder)

CORE.VersionBumper -> Run this file to automatically upgrade Drop version number.

CORE.Drop.Application:

Include the resources to initialize at the beginning of the Application.

CORE.Drop.Interfaces:

Include Interface classes, Enum, Application constants for Model (MVVM) -> at the business logic level. These interfaces are to be injected into Model classes.

  • Authentication

  • Components -> Info of Package and Package Version

  • Container -> generic IoC container wrapper

  • Enums

  • EventArguments -> login & logout user information

  • PackageRepository

  • Serialization -> methods to serialize and de-serialize JSONs

  • Services -> Logging User actions in Drop

  • Settings -> User settings of Drop

  • Utilities

CORE.Drop.Libraries:

In addition to the Classes that implement the CORE.Drop.Interfaces:

  • Exception

  • Installer -> probably more appropriate name is WindsorInstaller, which registers Classes into "Singleton" or "Factory" automatically.

  • DropClient.cs -> Communicate with the Drop backend API

  • DropSetting.json -> contains repository information, and record Drop user settings.

  • RouteControllerSingleton.cs -> Singleton router class to parse the correct backend API endpoint url that responds with the desired data.

CORE.Drop.UI:

In short, this is View (MVVM). This contains the xaml files that altogether compose the Application user interface(UIUX).

  • Controls -> the designs of control components such as Package Card, News Card, Package Grid, and more.

  • Pages -> the designs of how Drop main tabs look and interact with users. Currently, up to the date this documentation is written, there are five tabs: Installed, Update, Explore, Settings, News.

  • ResourceDictionary -> a place where those reusable design templates live.

CORE.Drop.ViewModels:

This is ViewModel (MVVM). VM acts as a bridge to connect both Model and View worlds, transfer data in-between.

  • Enums -> Constant values used in the ViewModels

  • Helpers -> Methods to Convert IPackage, IVersion, IDependencyPackage respectively to packageCardViewModel, VersionViewModel, and PackageDependencyViewModel. A Factory static class.

  • Installer -> WindowInstaller, to register Singleton and Factory classes.

  • Interfaces

  • Resources

  • Services -> Automatic Background Updater lives in this one.

  • TypedFactory -> Create ViewModels

  • ViewModels

CORE.Drop.Installer:

Note: Install the version of Microsoft Visual Studio Installer Projects nuget package that matches with your working Visual Studio version. E.g.(Visual Studio 2019, I installed the Microsoft Visual Studio Installer Projects 1.0.2)

This is to create Drop .msi installer file.

Last updated