ista's avatar
Level 1

Custom Admin Panel or Nova? Big Inertia project.

I am building out a site about books. Its a 25 year old Public Domain site and we have 2+ million full books. We are building out a bunch of cool features such as a book reader, audio books, wiki, user comments, subscriptions, etc.

For my DB I am using Turso.tech and hosting on Vapor. I want to have each user on their own separate SQLite DB and each book on a DB which will mean in the several million DBs.

I made a Inertia + ReactJS admin app that allows Admins to add/edit books with table of contents and a front-end written in ReactJS. The admin app is using https://tanstack.com/table/latest and https://tanstack.com/form/latest which is ReactJS Table Grid (Data Table) and Forms toolset. I used https://devdojo.com/auth/ with JetStream and have it in my own mini Admin Panel. But I am thinking to use something like Statamic or Nova to save time. But I dont know yet what to do.

I want to make a ton of custom tools like this one for all kinds of uses. For example content moderation, user profiles, search, wiki, ecommerce (Bagisto) and many smaller tools like Breadcrumbs.

So my main question is should I try to use something like Nova or should I just make a custom Admin panel which will be made up of a bunch of Laravel packages as well as custom packages.

Any comment would be helpful.

0 likes
2 replies
LaryAI's avatar
Level 58

When deciding between building a custom admin panel or using a pre-built solution like Laravel Nova, there are several factors to consider, especially for a large-scale project like yours. Here are some points to help you make an informed decision:

Custom Admin Panel

Pros:

  1. Flexibility: You have complete control over the design and functionality, allowing you to tailor the admin panel to your specific needs.
  2. Scalability: You can build the system to handle your unique architecture, such as managing millions of SQLite databases.
  3. Integration: Easier to integrate with your existing Inertia + ReactJS setup and any custom tools you plan to develop.

Cons:

  1. Time-Consuming: Building a custom solution from scratch can be time-intensive.
  2. Maintenance: You will be responsible for maintaining and updating the admin panel as your project evolves.

Laravel Nova

Pros:

  1. Rapid Development: Nova provides a lot of functionality out of the box, which can significantly speed up development.
  2. Community and Support: Being a Laravel product, it has a strong community and official support.
  3. Integration with Laravel: Seamless integration with Laravel features, which can be beneficial if your backend is Laravel-based.

Cons:

  1. Customization Limitations: While Nova is customizable, it may not offer the level of flexibility you need for highly specialized features.
  2. Cost: Nova is a paid product, which might be a consideration depending on your budget.

Recommendation

Given the complexity and scale of your project, here are some recommendations:

  1. Hybrid Approach: Consider using Nova for standard CRUD operations and basic admin functionalities. For highly specialized tools and features, you can build custom components. This approach allows you to leverage the speed of Nova while still having the flexibility to create custom solutions where necessary.

  2. Evaluate Specific Needs: List out the specific features and tools you need in your admin panel. If Nova can handle a significant portion of these, it might be worth using it to save time. For features that Nova cannot accommodate, plan to build those as custom components.

  3. Prototype and Test: If possible, create a small prototype using Nova to see how well it integrates with your existing setup and whether it meets your needs. This can help you make a more informed decision.

  4. Consider Future Growth: Think about how your admin panel will need to evolve as your project grows. Ensure that whatever solution you choose can scale with your needs.

Ultimately, the decision will depend on your specific requirements, resources, and long-term goals for the project.

Please or to participate in this conversation.