Architecture Overview
Welcome to the Architecture Overview of NetIP!
This part of the documentation is here to help you understand how NetIP is coded.
If you don't understand something or need to ask a specific question regarding the codebase, please search/ask for help on the NetIP Forum Contributors Category.
C4 Model
In order to ease its understanding, the architecture of NetIP is explained using the C4 Model.
If it's your first time discovering the codebase NetIP, we recommended opening and reading both the project solution and the following diagrams:
- [Level 1] System Context Diagram : Provides a starting point, showing how NetIP in scope fits into the world around it.
- [Level 2] Container Diagram : Zooms into the software system in scope, showing the high-level technical building blocks (e.i. NetIP Namespaces).
- [Level 3] Component Diagrams : Zooms into an individual container, showing the components inside it (e.i. NetIP Classes).
The level 4 (Code Diagrams) is not recommended unless for specific use cases. It was therefore omitted from this documentation. You'll have to dig dipper into the code to learn how the sausage is made. 👀
Model-View-ViewModel (MVVM)
NetIP uses the Model-View-ViewModel across its entire codebase. It is heavily reliant on CommunityToolkit.MVVM, which dramatically helps implementing the MVVM model while preserving the maintainer's mental sanity.
For more details on how the ViewModels are structured, see the Classes page.
Dependencies
NetIP relies on several open source projects. Without them, NetIP just wouldn't exist. If you can, please consider donating to these awesome projects/developers:
-
H.NotifyIcon : Made by HavenDV (MIT) - ❤️ Donate
-
Prism : Made by Brian Lagunas & Dan Siegel (MIT) - ❤️ Donate on the authors pages
-
ManagedNativeWifi : Made by emoacht (MIT)
-
TaskScheduler : Made by David Hall (MIT)
-
Newtonsoft.Json : Made by James Newton-King (MIT)
-
CommunityToolkit.MVVM : Made by Microsoft (MIT)
Projects/Authors without donation links means they don't have one or we couldn't find it at the time of writing. Please contact us on the NetIP Forum if you have a link we can add here!