Hey team, I'm looking for guidance on production status approval for my Dropbox app. I'll describe what I built followed by why I need guidance.
My website has endless sub-domains which dynamically map to GitHub repos, for example:
abc.example.com/app > github.com/user1/repo1def.example.com/app > github.com/user2/repo2
These pages all use the same barren skeleton HTML, but load their JS and CSS files from the corresponding repo (which needs to be set up a certain way) which results in a front-end app running on its own origin.
I also expose an authenticated API on my server which the apps can use to GET/LIST/PUT files (typically JSON) which the server passes on to Dropbox. The server keeps the Dropbox tokens private, so apps cannot make direct requests to the Dropbox API. It also ensures each app can only write to its designated folder, which correspond to its GitHub path. So the app loaded from github.com/user2/repo2 can only access the files in ~/Dropbox/Apps/Example/user2/repo2 - as my Dropbox app is "Folder" scoped.
The point of all this is that it lets people easily create apps that only require single-user data, like a personal habit tracker, using any frontend framework, just by pushing to GitHub. They could then share that app with other users, who can rest assured the developer does not see their data as it is stored on their Dropbox only. Users can see the source code of any app they use and contribute to it, or fork the repo, which they can then run on a new sub-domain on my site.
I've deliberately omitted a lot of detail regarding versioning, functionality and security etc, so please refrain from replying just to comment on such aspects, unless relevant to the actual questions below.
The bit on which I need guidance is this page:
https://docs.dropboxapi.com/dropbox-api/docs/developer-resources/developer-guide
which states that when building developer tools that wrap Dropbox each app needs its own key. I believe that may not apply to my scenario, but I would really like to know before I commit further to this idea, and I can't jump ahead and request production status as I don't have 50 users, and don't want 50 users if I have to tell them the platform won't go ahead.
The "apps" that run on this platform are essentially just user interfaces which speak to the platform's own API. They know nothing of Dropbox, which may well end up being just one of several storage options the user can choose from.
So from one viewpoint my platform does "wrap the DBX Platform for other developers" but form a different viewpoint:
- The access to DBX is so restricted and controlled.
- The "apps" are so limited in capacity that they can essentially be considered UIs.
- The "apps" are chosen by users who are free to inspect the source code which is contentiously tantamount to them building their own UIs.
So you could argue that the Dropbox part of my platform only provides a restricted and compartmentalised file API which UIs can use to store their data, which may go to Dropbox, so its not the same thing as a developer tool wrapping Dropbox as described on the linked page.
The two reasons mentioned on that page for wanting each app to have its own key (although there clearly are others) are:
- So we can let users know which apps are accessing their data.
- This makes it much easier for us to debug issues when they arise.
I think I'm good on the first point given that:
- My overall app is folder scoped.
- Each "app" gets its own heuristic sub folder.
- Each "app" has a standard menu that shows exactly which folder it uses (with a link to open it).
So it should be pretty clear to the user, in fact clearer than most Dropbox apps, what the app gets access to (in fact, why doesn't Dropbox stipulate that apps must display, somewhere in their UI, exactly which folder they access?)
As for the second point, the "apps" on my platform don't have their own behaviour as far as Dropbox is concerned, requests to Dropbox will only originate from my server.
Of course there is the issue of "what" data each app stores. I'm happy to make the server restrict it to JSON if that's the only way this gets accepted.
So the question is: is there any chance in ****** that Dropbox would approve of my platform using a single key for all the "apps" it runs, and if not, what concessions would be acceptable? I'm thinking:
- Restrict file types to JSON/CSV etc.
- Allow users to load apps from their own GitHub using the shared key so they can fork apps, but publicly shareable apps need their own key (which I'd still orchestrate through my server).
Thanks for reading :-)