I want to create a cross platform desktop application which will sync with a web application if an internet connection is found. I don't want you to develop the application, I will develop it myself with my [url removed, login to view] demo application will have only One Form to perform basic CRUD operations. The work is more regarding setting up the installers and decising what technology is perfect for the use case.
Here are the requirements and preliminary use cases
-- The application will be a school management system. It will have a desktop application which will be used by teachers and students.
-- The teachers and the students will download the application from the internet, run the installer file and install the desktop application in their system. They can have a Windows system or a MAC, so we have to develop installers for both platforms
-- The principal of the school will download the same application from the internet, run the installer file and install it on his computer. He can have a windows system or a mac, so we have to develop installers for both platforms.
-- THe teachers, the students and the principal will all use the same database which will be installed in the principal's computer.
-- All the computers are connected via LAN or School's Wi-Fi connection.
-- So basically, you have to develop one installer which will be common to everyone. Only one computer in the network can be a master and rest of them will be slaves. Slaves will read and write data to the database saved in the master computer. The master will also read and write data to the local database of Master computer.
-- The master computer is supposed to be ON all the time and if it's OFF, the slave systems cannot work or read and write data to the master. We are assuming that the Master system is always ON.
-- When master computer is connected to the internet, the local database in the master computer will sync all data to a MYSQL database stored in the cloud.
The technology stack of the cloud application is PHP, MYSQL.
Now you need to figure out the technology and methodology of the desktop application to achieve this. Pleaes note that we do not want to develop the application with .NET. Anything other than .NET is fine by me. You can use Electron or other technologies to develop the desktop app but not .NET
So what you will be delivering to me is this
-- A simple installer file for windows and mac.
-- I will run the installer file and the application will be installed in my windows and mac computer.
-- The installer will ask if this is a master system or a slave system. If it's the master system, it will install the database server and the database in my master computer and setup the server so that the slave system can access it. The installer will setup everything needed and the user will not setup anything at all. All dependencies have to installed by the installer and not the user, so the installer has to be built that way.
-- If it's the slave system, the installer will simply install the application on the computer and request the user to connect to a Master system in the same network, so that it can access the data.
-- Once the master and the slave systems are up and running, there will be a simple form on the application which will perform CRUD operations on the database. I will first use the slave to perform CRUD operations and then the master to perform CRUD operations.
-- Once CRUD operations are done, I will click a button on the master application to sync all the data to the cloud database.
-- The sync has to be two way in nature. THe master computer will sync data from the local database to the cloud and it will also pull new data from the cloud to the local DB.
Once all of this is done, you will need to provide me a video tutorial on how this is done, how to create the installer and other documentation so that I can replicate it myself with my team.