Sysop Dev Diary, Part 2: Structure
Next up, I need to start laying out exactly what this project is going to do and how it's going to work.
There's two main pieces to this project. The dashboard app and the widget. The dashboard app is what customers will use to provide support, and the widget will integrate into the customer's app and be used by end users to request and receive support.
So here's a decision I just made. For the simple reason that I have limited time to get something going, I'm going to focus this first version on iOS (and Mac) entirely. Meaning, the widget will be an importable Swift package, and the dashboard will be a hybrid iOS/iPadOS/Mac app. Eventually, the next step will have to be a JavaScript widget and a web dashboard, but I'm just not gonna have the time to get a prototype out if I shoot for that first.
So, starting with the dashboard. Basic needs are a way to see a list of support requests, which links into a screen that allows that two way communication. That communication would be text, images, links, and documents at minimum. Also a way to mark a request as completed.
As for the widget. It would need to be a communication screen that can send and receive the same types of content, and a way to complete the request from the end user side. It should provide an SDK call and a standard button widget for the customer to use when integrating.
Finally, there's a third piece I haven't mentioned yet. The backend that ties all this together, facilitates and stores all this communication. Am I insane to do the API in Vapor? Definitely, but I think I'm gonna anyway. All of this should be replaceable or upgradable later on down the line if/when I outgrow what Vapor can do.
Okay. Time to start writing some code. I'm going to start with the backend, because I think it'll take the longest. I'll get started up today with the basics and try to knock out as much as I can tomorrow.