Skip to content

smurz/MyLocationTestTask

Repository files navigation

My Location App Test Task

The basic idea behind this app design is to keep it as simple as possible. Eliminating all additional dependencies except the ones required by the task.

MVVM pattern

The app architecture follows the MVVM pattern. App consists of:

  1. View. Borderless Window with single ToggleButton
  2. ViewModel. ToggleButton binds its IsChecked property to ViewModel's IsListening property. ViewModel interacts with the app model depending on the property value received.
  3. Model consuming services and implementing buiseness logic required by the task.
  4. Services, that interact with different APIs: Speech recognition, Location By User IP and Notepad automated manipulation.

Dependency Injection

Is done by applying Composition Root pattern in it's basic variation inside the MainWindow class.

Improvements and considerations

This is a bare to the metal design to fulfill all the requirements in the task and not to exceed the time limit provided. The further improvements for this app, not included:

  1. Make single instance app with tray icon, by utilizing Mutex.
  2. Add DI container.
  3. Test coverage. And remove static dependencies from the code.
  4. Implement Reactive pipeline for the data flow: Speech recognition -> Location -> Notepad Modification

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages