alaadahmed

alaadahmed

Is LiveView suitable for big dashboard with many users?

Hello everybody,
I will start to work on a relatively big project “E-learning platform”, it is some kind of school that provide online school service. The platform consists of many users (Student, Teacher, Visor, Supervisor, Admin, Manager) and many other services included like (Reports, Messages between different users, Complains in the form of tickets to support, staff directory, notifications, notes board and many more). As I said it is big project, I used Phoenix LiveView and I am comfortable using it but I am not sure if it will fit here as I can’t imagine such such work only on websockets between all of these different users and server. Each user has his/her own portal of the dashboard. Is it feasible to use LiveView for such project, or better to use separate frontend (react, nextjs) and link it to phoenix api with graphql? what about Surface?

Marked As Solved

quatermain

quatermain

When I’m reading this I think go with LiveView. Yes, there is possibility that you can have performance issue with 10k users but I’m pretty sure it can be fixed.If not you, community will help you, if not community, contact me and I will give you hand. I think 7 months is plenty of time with LV but not in case you will do JS Client and API. But it depends on your skills.

So for example project which I mentioned couple of time was:
Users can create account and company, company can have multiple users with multiple roles. There is administration part where can be invited multiple people. Administrators can create competitions(LV) and invite another administrators, other don’t see it. Competition has huge form with questions in multiple format(text, checkboxes, …). Competition can be arrange to companies by some specification or invitation. Users from company with specific roles can fill the form. Mostly it’s long form so multiple people can answering at same time for long time (hours, days). So we use LiveView for collaboration and autosaving. Administration dashboard has some LV too. After they submit their application form it has to be validated by another administrator so there is another set of questions in validation form. These questions are hardcoded with some point calculation etc…this part is very complicated. So there is another LiveView for human validation process. There is also another persona, superadmin which have access to everywhere(almost) to help with issues and questions. Some notifications, validations, user profiles, dashboards, etc… Not big, not small project.
Our resoureces:

  • time: 6 weeks from first commit to first registration
  • manpower:
  1. me(5y elixir, 15y web) 2w 120%, 4w 30% of fulltime
  2. senior dev(2y elixir, 5y web) 6w 100%
  3. junior dev(2 weeks elixir, 6m web) 6w 100%
    We did it pretty well. We delivered it, both developers were working on it for next 1-2 months with some small upgrades and some small fixes. How I mentioned it’s running on Heroku and we event didn’t know when they invited about 100k people to the platform for some competition.

So this example can show you how LiveView is powerful when you use Elixir, Phoenix and LiveView and you don’t have enough resources (manpower, time, hw resources)

Also Liked

chrismccord

chrismccord

Creator of Phoenix
derek-zhou

derek-zhou

I cringe every time when a user requests a mobile app. For the 99% of all cases, users don’t really want mobile apps, a web app is good enough. It is the platforms that want the users to use mobile apps, to keep them hooked, or worse, to steal their privacy.

Notifications can be done with plain old emails, or slack/discord webhooks if you really need the realtime delivery (most people don’t)

chrismccord

chrismccord

Creator of Phoenix

Just like phoenix channels (or genservers) consume only the memory you carry in your state, same story w/ LiveView. Check the docs for temporary_assigns to only hold onto the LiveView state you want to truly be stateful.

Where Next?

Popular in Discussions Top

Other popular topics Top

chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 39247 209
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 47849 226
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
hariharasudhan94
Lets say i have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => "XX...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New

We're in Beta

About us Mission Statement