Handling lots of users

TL;DR - I’m looking for a way to allow potentially LOTS of users view and use the same functions / buttons of my Coda doc to extract / view different data simultaneously and would appreciate some general guidance on how that might be done.

Background:
I have created a Coda which handles the stock inventory and orders for our not-for-profit plastic recycling hub. This all works great for our team and I’m even able to use timelines to visually track waste plastic from various sources into the products we make using dependency lines. Now, I want to put that part of this tool in the hands of the public, allowing people who bought product to see the plastic which went into it and allow waste depositors to prove we recycled their waste. My issue is that this might result LOTS of people trying to press the same function buttons on the Coda sheet at the same time, to try and view different data.

The only workaround I can think of is to put in some form of buffer e.g. get people to connect something else and have that app connect to Coda. People then click a request button there before having Coda collate the requested data and send it back in the form of a compiled pdf. But, it’s not really what I set out to do. I’d love it if it were ‘live’ data in Coda but that each person had an ‘instance’ of this Coda to play with.

Any bright ideas on how I could set about this issue please?

Hi Nathan,
Have you tried it at scale and found certain things to be slow? What specifically do you think the bottleneck is?
Maybe the problem is that the buttons they are pressing are changing the doc for other users? One trick for this is to have hidden tables that store the “state” of the doc for each user, so that each user can change what is viewed without affecting other users.

Also how many people is “lots”?

Here is a video made by @Paul_Danyliuk illustrating the technique:

Hi @nathan_burley ,

Are the final users only viewing the underlying data or they can also add their own data?
This is the major discriminant for the scalability.
If you publish in play mode, you should be able to get it done.

As @Ed_Liveikis also pointed out, what would be the magnitude order of LOTS?

Hi @Ed_Liveikis first - thanks for the reply! I haven’t tried it yet as the current way I create the timeline visual requires data to be copied into timeline table. So, timeline display changes depending on the table contents and that depends on the user request. All users see the same timeline :frowning:

I’ll have a look through Paul’s demo - thanks very much for posting that :wink:

Hey @Federico_Stefanato. Yeh, sadly they’re effectively editing the data as they’re editing the table which displays the timeline.

Lots for now much be half a dozen users at once but I really want a solution which could be made public via the web as a service. I have no idea how many requests that might run up… Guess it depends how popular we get haha! 20 a minute for a start?

Just a note that the user controls solution (from the Video), involves users editing data, but that data is configured per-user, so it’s ok. I suspect this might be what you want to work towards.

Thanks @Ed_Liveikis quick look seems like it would work and I can imagine how to integrate that approach already with one sticking point - this seems to require Coda knowing who the user is. Do users have to create a login to see / use the Coda? Does it work for a Coda which is just embedded on a site and requires no login - is that even a thing??

So, actually I started by just letting a few people try it once it was published in play mode and seeing if, when they pressed the import button, the timeline visual changed on my end but it does not. So, I think this is a workable solution!

Thanks both @Federico_Stefanato and @Ed_Liveikis for the replies, and to @Paul_Danyliuk because the video was awesome and it still taught me something new!

1 Like

:+1:
Just a note on the new users thing - I suppose you would need to add a Button that the user should press to setup their page. The button would add the current user to the control table (with default control values) if the user isn’t already in the table.

Clunky, but not sure of another way to do that as Automations run hourly at most.

FYI the tutorial on how to do that is the first half of this video:

P.S. And I always present the “no user” row as a fallback if the user haven’t added themselves to the doc yet. Such users will share one row, yeah, and edit each other’s filters (unless they add themselves their own rows), but it’s still better than not seeing any controls at all.

1 Like