Basically the main application without any of the UI. May need to integrate with a remote terminal or something for control, or just run in the command line.
Will require Database Synchronization to be implemented.
Server application should basically be identical to the client application but without UI. Controls that would normally be handled by the UI should be wrapped through a connection to a client instance over the internet, likely through GRPC.
NB: Recursive/looped server connections should be explicitly prohibited! If a LOKI instance is operating as a server, it should reject any attempts to connect to another server as a client! Similarly, if a LOKI instance is operating as a client, it should reject any attempts to operate as a server as well!
This will require an extensive refactor of how commands are constructed and implemented right now. Any behavior currently implemented within WPF XAML files and their associated C# classes will need to be reimplemented in a UI-agnostic format.
Spawning the UI on application start should create a sort of "Command Wrapper" object that connects the UI to these commands.
Connecting to an external database should hijack this wrapper and feed commands into the remote server instance
NOT spawning the UI on start should create another type of Wrapper that connects to clients and processes commands from them
If the server is configured with admin accounts, the wrapper should restrict certain commands to ONLY those admin accounts, authenticated via password
Broad scope of changes that need to happen for the dedicated server application to work
Add Command Wrapper classes
One with UI support that can switch into a Network Client, or couple into a server hosted on the same instance
When operating locally (or as a UI-enabled server), all commands are available locally
When connected to a server, only certain commands are allowed unless the user is authenticated
Connecting to local server e.g. self-hosted should break the local command connection and behave like a remote client over the network
One with NO UI support that behaves as a Network Server
This can be accessed by starting LOKI with an argument like "-nographics" or by setting external database to "Host" in UI
Maybe this should be created and handled by default honestly... tbd
Needs to have a way to authenticate within its own instance. Something like a randomly-generated username/password that a self-hosted, UI-enabled server can use to self-administrate
Add account settings class
Add "server/client" settings, maybe alongside the Data Sources settings
These should include a dropdown menu in some piece of UI that lets a user choose whether their LOKI instance is a server, a client, or solely operating locally
Starting LOKI from command line should include a flag like "-server" to tell LOKI that it's going to be running as a server
Server instance settings should be saved to a file with fields for values like port number et al.
Basically the main application without any of the UI. May need to integrate with a remote terminal or something for control, or just run in the command line.
Will require Database Synchronization to be implemented.
Server application should basically be identical to the client application but without UI. Controls that would normally be handled by the UI should be wrapped through a connection to a client instance over the internet, likely through GRPC.
NB: Recursive/looped server connections should be explicitly prohibited! If a LOKI instance is operating as a server, it should reject any attempts to connect to another server as a client! Similarly, if a LOKI instance is operating as a client, it should reject any attempts to operate as a server as well!
This will require an extensive refactor of how commands are constructed and implemented right now. Any behavior currently implemented within WPF XAML files and their associated C# classes will need to be reimplemented in a UI-agnostic format.
Broad scope of changes that need to happen for the dedicated server application to work