CSU-Booking-Platform / application

MIT License
0 stars 9 forks source link

Investigate UI Component packages #57

Closed alexstojda closed 4 years ago

alexstojda commented 4 years ago

Challenge

We need a UI component library (Such as Bootstrap, Jetstream, etc) in order to build out the UI with a uniform look and feel.

Timebox

This experiment is limited to 1 day

Findings

CSS

JS Libraries

These are frameworks that allow you to build ui, and whatever interactivity it needs to have, into small reusable components. A much better approach than simply relying on blade with a css framework and using class tags. Y'all already know the main contenders here so no point in explaining these in detail.

Laravel Specific Scaffolding

Server Driven Single Page Apps

Both of the options below improve communication between back and frontend, allowing you to skip the standard boilerplate code of building an api and consuming it.

Recommendations

I think it would be best to stick to the official Jetstream package. It is currently the recommended way to jumpstart your laravel application. All the assets can be published and modified as we wish. On the backend, it promotes the use of single action controllers. Jetstream allows for either Livewire or Inertia stack and is built up using Tailwind CSS. Between these two, I believe we would be better off working with Inertia/Vue. It is more flexible, will let us rely on any extra Vue.js component libraries we want or we can build them on our own by using bits and pieces from Tailwind CSS / UI.

Some Resources

alecadub commented 4 years ago

Two popular ones for react that I know of :

React bootstrap: https://react-bootstrap.github.io/

Material UI: https://material-ui.com/

Alex-Hayeur commented 4 years ago

I agree with the strengths of using JetStream combined with Inertia. Heavy focus on making a single-paged app will make for an easier and more user-friendly front end and allow more time for additional features and easier integrations.

However, does Inertia also work with React, or only Vue? It might be best to confirm which of these two the team is more familiar with and using that, though I'm not familiar enough to Vue to know if it has unique and helpful application here.

a-drew commented 4 years ago

I agree with the strengths of using JetStream combined with Inertia. Heavy focus on making a single-paged app will make for an easier and more user-friendly front end and allow more time for additional features and easier integrations.

However, does Inertia also work with React, or only Vue? It might be best to confirm which of these two the team is more familiar with and using that, though I'm not familiar enough to Vue to know if it has unique and helpful application here.

Good question!! Inertia does indeed have a React adapter. However Jetstream's Inertia components were built up with Vue.js. I do believe vue is very easy to pick up, even more so if you're familiar with the way react works. To me the only difference is syntax.

Alex-Hayeur commented 4 years ago

Good question!! Inertia does indeed have a React adapter. However Jetstream's Inertia components were built up with Vue.js. I do believe vue is very easy to pick up, even more so if you're familiar with the way react works. To me the only difference is syntax.

Okay that makes a lot of sense, thanks for answering. It would probably end up taking more time and effort properly building everything in react than it would take to adapt to using vue.

jonathanp16 commented 4 years ago

Good question!! Inertia does indeed have a React adapter. However Jetstream's Inertia components were built up with Vue.js. I do believe vue is very easy to pick up, even more so if you're familiar with the way react works. To me the only difference is syntax.

Okay that makes a lot of sense, thanks for answering. It would probably end up taking more time and effort properly building everything in react than it would take to adapt to using vue.

I am personally pretty experienced with Vuejs and I can second @WindOfRussia in saying that it is very easy to pickup, and they have some great documentation. Also yes, it would be extremely difficult using React, from a compatibility point of view as opposed to sticking with Vue.