Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

danielcoimbra's avatar

Modular: Laravel, Inertia, Vue and Tailwind. First impressions?

Hi! I'm working on a proof of concept project, using Laravel, Inertia, Vue and Tailwind to build projects (like Admin Panels) using a Modular approach. I've used this concept in some projects before, and will dedicate some time in the next days to improve/refactor some parts of it. Today it's using the Prime Vue UI library but even with the new Prime Vue's unstyled mode (that we could use since days ago), it's harder to customize than regular UI Vue/Tailwind Components. I'm thinking about change the UI layer to use something like Flowbite or Tailwind Elements and wrap it in standard Vue/Tailwind SFC. This way, we can have the better of both worlds: consistent UI and easier customization, the natural Tailwind way...

The proof of concept can be found here: https://docs.ismodular.com

I'll really appreciate suggestions to improve the project from the actual starting point. Please let me know if this type of project makes sense for you :)

Thanks! Daniel

0 likes
2 replies
LaryAI's avatar
Level 58

Based on the question description, the user is looking for suggestions to improve their proof of concept project using Laravel, Inertia, Vue, and Tailwind in a modular approach. They are currently using the Prime Vue UI library but find it difficult to customize. They are considering switching to either Flowbite or Tailwind Elements for a more consistent UI and easier customization.

Here are some suggestions to improve the project:

  1. Evaluate Flowbite and Tailwind Elements: Research and compare the features, customization options, and community support of both Flowbite and Tailwind Elements. Consider their compatibility with Laravel, Inertia, Vue, and Tailwind. Choose the one that best fits your project requirements.

  2. Refactor UI Layer: If you decide to switch to Flowbite or Tailwind Elements, refactor the UI layer of your project to use the chosen library. This may involve replacing the Prime Vue components with the new library's components. Make sure to update any necessary dependencies and configurations.

  3. Create Standard Vue/Tailwind SFC: Wrap the chosen library's components in standard Vue single-file components (SFC) using Tailwind CSS classes. This will allow you to have a consistent UI and easier customization, following the natural Tailwind way. Use the documentation of the chosen library to understand how to integrate it with Vue and Tailwind.

  4. Test and Iterate: After implementing the changes, thoroughly test your project to ensure everything is working as expected. Pay attention to any compatibility issues or conflicts that may arise. Iterate on your implementation based on user feedback and your own observations.

Remember to document your changes and keep track of any modifications made to the project. This will help you and others understand the evolution of the project and troubleshoot any issues that may arise in the future.

// Example code for wrapping Flowbite components in a standard Vue/Tailwind SFC

<template>
  <div>
    <FlowbiteButton class="bg-blue-500 text-white">Click me</FlowbiteButton>
  </div>
</template>

<script>
import { FlowbiteButton } from 'flowbite';

export default {
  components: {
    FlowbiteButton,
  },
};
</script>

<style>
/* Tailwind CSS classes can be used here */
</style>
// Example code for wrapping Tailwind Elements components in a standard Vue/Tailwind SFC

<template>
  <div>
    <TailwindElementsButton class="bg-blue-500 text-white">Click me</TailwindElementsButton>
  </div>
</template>

<script>
import { TailwindElementsButton } from 'tailwind-elements';

export default {
  components: {
    TailwindElementsButton,
  },
};
</script>

<style>
/* Tailwind CSS classes can be used here */
</style>

Remember to replace FlowbiteButton and TailwindElementsButton with the actual component names provided by the chosen library.

danielcoimbra's avatar

Worked with Vuetify 2 and Prime Vue (in the past, I used these in real apps), and tested Naive UI (some time ago). Now, I'm exploring Flowbite, Tailwind Elements, and shadcn-vue. After this research, I'm currently replacing the complete UI libraries approach in favor of a small set of custom made, very simple/light Vue Components (with the help of Flowbite for Drawers, Modals, all the interactive components). They have minimal styles, are fully customizable, have fewer dependencies, and are 100% integrated with the rest of the system. It's always a trade-off: less ready-to-use advanced UI Toolkits, but way more control for customization and behavior. It's a tough decision, but it feels like the right one to achieve the expected results in this particular case :)

Please or to participate in this conversation.