🏪App Store
Describes technical specs of App Store and behaviour of Apps available in it.
Persistence-based categorization of Apps
In terms of the ways the apps store their data, apps can currently be categorized in following ways:
Has data specific to the user - UserApp
Data can simply be credentials - Simple
Examples => Stripe with its credentials, Google Calendar with its credentials
Persistence =>
Credentials
table in PG
Data can be more complex and structured in its own tables - Complex
Example - App decides its own schema, with the convention that the tables would be prefixed with
App_{CAMELCASED_APPID}_
e.g.App_RoutingForms_Form
andApp_RoutingForms_FormResponse
Has data specific to an EventType - EventTypeApp
Example => Rainbow, Giphy apps are configured per Event Type and thus every EventType can have its own data for that app.
Persistence =>
EventType.metadata.apps.{APP_ID}
is where the app would store its key-value pairs
Note: Even an EventType App can have its own user-level data e.g. Stripe App has EventType data as well as user-specific data in credentials.
At the time being, every app no matter what has its entry in the Credentials
table, atleast to mark that the app is installed.
UserApps
At the time, UserApps take care of miscellaneous enhancements
Calendar
Messaging
Video
App Uninstallation
Almost all the apps can be uninstalled with the exception of the following 2 apps
Cal Video
Google Meet
When an App is uninstalled, the credential(from the Credential
table) for that user is deleted.
So, SimpleUserApps have their entire data deleted. So, e.g. Google Calendar on uninstallation and reinstallation would require a reconnect with Google(because credentials have been deleted)
Video Apps, Calendar Apps and Stripe have special handling where they delete/reset their respective data as well which is stored in EventTypes.
Video Apps resets involved EventTypes location to Cal Video
Stripe reset price to 0 and even hides the EventType
Calendar Apps - (Needs details)
At the time of writing, ComplexUserApps don't have their complex data deleted. So, the RoutingForms app on uninstallation retains its forms and form responses. After re-installation user would be able to see that data back.
We have plans to make it very clear during installation as to which data would be deleted.
Further Readings
Last updated