On boarding
Context
The current desktop application is generic for all states - and a user has to spend time filtering through a set of boards, mediums, classes, and subjects every time they land on the app to get content that is relevant for them to solve this problem we will ask the user to input the framework preference and location so that we can show the relevant content to the user. The user location is required to pull the reports of usage of the app by location level.
Schema
Users
{ "id": String "name": String // “guest” for first user and unique and lower case "formattedName": String // user entered name "framework": { "board": String, "medium": Array<string>, "gradeLevel": Array<string> } index: [“name”] }
Locations
{ "id": String, "type": String, "code": String, "name": String, "data": Array index: [name] }
location information will be stored in settings DB since each device belongs one location and it will be added to the device registry spec when it is available below is the storage structure of the location data for a device
{ id: String doc: { "state": Object, "city": Object } }
User SDK
getInstance = function(String pluginId) : UserSDK {}; create(user: IUser) { } read = function(name?: String = “guest”) : Promise<IUser>{ }
Telemetry Events
LOG event for locations API
LOG event for user register API
ERROR events on locations or user save
IMPRESSION event for content preference page load
IMPRESSION event for location onboarding page load
INTERACT event for framework submit button click
INTERACT event for location submit button click
Design review comments
We will store the locations and frameworks data in the database and always refer from it, not from the file system we will introduce the reset button. if anything is corrupted in DB to reset the app