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.

Last Post!

crova

crova

You have LV generators with mix phx.gen.live (I think this is the syntax as I don’t use generators much) for CRUD.

Where Next?

Popular in Discussions Top

AstonJ
Are there any Elixir or Erlang libraries that help with this? I’ve been thinking how streaming services like twitch have exploded recentl...
New
und0ck3d
Hello everyone! A few days ago I’ve created a topic here about how people were creating CMSs with Elixir and Phoenix. I’ve been studying...
New
PragTob
Hey everyone, this has been brewing in my head some time and it came up again while reading Adopting Elixir. GenServers, supervisors et...
New
PragTob
Hello everyone, I know we had quite some threads (read through lots of them) about background job processing but it remains a hotly deba...
New
lucaong
Hello Elixir and Nerves community, I have been working for a while on an open-source embedded key-value database for Elixir, that I call...
230 14350 124
New
klo
Got a question about when to concat vs. prepending items to list then reversing to achieve appending. So i know lists boil down to [1 | ...
New
fireproofsocks
I’ve been working on an Elixir project that has required a lot of scripting. I usually reach for Elixir because I like it more (and in th...
New

Other popular topics Top

electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
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
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
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New

We're in Beta

About us Mission Statement