alaadahmed

alaadahmed

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?

Showing Posts 1 to 10

chrismccord

chrismccord

Creator of Phoenix
BartOtten

BartOtten

Define: many

Without knowing all the requirements it should be hard for anyone here to know if it is suitable. The amount of users is only a fraction of the requirements.

I think for this project LiveView might not be suitable. I can imagine the customer will request an app for the students so they can receive notifications. When you go the Graphql/API way that won’t be much extra work; when you only have unstructured output you probably have to add the API besides the LiveView.

stevensonmt

stevensonmt

My comment is mostly to sell clarification for myself as I’m certainly not experienced enough with liveview to be offering advice. From the requirements you laid out it seems liveview would work fine. My understanding is that rapid UI updates or latency sensitive interactions are really the things liveview would struggle with.

wanton7

wanton7

Surface uses LiveView and it’s a component based library build top of LiveView.

If app only needs to run in browser and you don’t need offline support it should work fine. My experience with LiveView in a personal project is that LiveView saved me huge amount of development time because I didn’t need to create an API that I needed to secure. Also syncing things between different users views was lot easier with LiveView.

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)

alaadahmed

alaadahmed OP

I meant by many users (roles) and concurrent connections that could reach to few thousands in few months after deployment. I know LiveView and Phoenix in general has no problem in handling such amount of connections, but I speak about feasibility if this is the right way to build such platform. I like so much LiveView but the way it works (socket assigns → big assigns can lead to connection problems, websocket) make me think about performance when few thousands users (students, teachers, visors) connected to the platform each one do his/her own work on it. Such project I must know ahead of time what technology to choose because it is very difficult to go back in the mid road.

I used phoenix liveview in this project (side project) and it was very very good really and the realtime feature is a killing feature for the platform I am about to work on
www.devincave.com/admin for anyone want to have a look can use email: alaadahmed@gmail.com and password: Linuxawy83#

wanton7

wanton7

My understanding is way how LiveView has been created it should be horizontally scalable. What I mean is that reconnects can go to different server instance and everything should just work. About those big assigns, would data that you need send to browser be any smaller without LiveView? You could also use debouncing for some view so you don’t update them too frequently. You could also make data smaller in different means, example I don’t personally like real-time updates that causes layout changes like moving a button into different place when some view is updated. Instead I would like to see there are updates and then I would click to update the view.

BartOtten

BartOtten

As long as you pay yourself, that is not an issue. However, most developers are being paid by their customers :wink:

Using email for notifications clutters mailboxes. It is abusing the medium. Granted, if it’s one notification every week it’s no big deal but schools tend to be busy workplaces. Using Slack or Discord is for other reasons not feasible for many schools / universities.

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.

wanton7

wanton7

I haven’t used them but shouldn’t browser Notification API & Push API work for desktop and phone notifications?

Where Next? Top

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2977 94592 917
New
cblavier
Hey there, It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
heathen
Quite interesting article Google brought me. Didn’t find any mentions about it here. What do you think in general? Would you use togethe...
New
maennchen
:warning: Security advisory: Decimal DoS vulnerability A vulnerability has been published for decimal where very large exponents can cau...
New
marciol
It would be helpful to have a list of companies worldwide that hire engineers without prior experience in Elixir. Often, it can be quite ...
New
durvia
Anyone running long-lived stateful processes on BEAM? We’re building an AI agent runtime and would love to compare notes. We’re a small ...
New

Other Trending Topics Top

marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews