orchidsoftware / platform

Orchid is a @laravel package that allows for rapid application development of back-office applications, admin/user panels, and dashboards.
https://orchid.software
MIT License
4.44k stars 652 forks source link

Goals for 15.0 #2882

Closed tabuna closed 2 months ago

tabuna commented 2 months ago

[!CAUTION] Here are the preliminary goals I’d like to work on. 📋 Please note that this list is subject to change and may be updated as needed. Just a heads-up: what’s listed here doesn’t guarantee that it will be done! ⚠️

Goals for the New Major Version

I have many ideas about changes and additions I would like to make, so I decided to create a discussion thread here. This way, everyone can review the suggestions, contribute their own ideas, or ask questions.

1. Simplify Naming and Unify Terminology

In the current version of the project, there is inconsistency in naming various components. We use names like orchid for the provider, dashboard for the singleton class, and platform for templates and translations. This creates confusion and complicates understanding of the project structure. In the new version, we will adopt a single, consistent name to improve readability and avoid misunderstandings. This will help users navigate the code and documentation more easily.

2. End Support for Laravel 10

With the release of Laravel 11, we need to end support for Laravel 10. This will allow us to focus on using the new features and improvements provided by the latest framework version, and simplify maintenance and development of the project.

3. Automatic ServiceProvider Registration

Laravel 11 introduced a new mechanism for automatically updating bootstrap/providers.php. We will use this mechanism for automatic registration of custom providers, eliminating the need to specify them in configuration files and simplifying setup and extension of functionality.

4. Unified Endpoint for POST Requests

Currently, routes can be defined as GET|POST, which leads to different approaches in handling screens and potential issues with middleware. We will introduce a unified endpoint for POST requests to ensure consistency in data handling. This will improve user experience, make code more predictable, and simplify middleware management.

5. Remove Upload/Image and Introduce Attach

Since the Image field in the current implementation does not offer clear advantages over other fields and duplicates functionality, we propose removing it. Instead, we will introduce the Attach field, which will be more versatile and easier to understand, reducing duplication and simplifying file handling.

6. Improve Data Selection

For PostgreSQL users, it may not be obvious that ilike should be used for case-insensitive searches. We will enhance support for such searches by implementing the modern whereLike method in relationships and filters. This will provide a more intuitive search experience and improve usability.

7. Remove All Deprecated Methods and Constants

The current version contains a few deprecated methods and constants. We will carefully review and remove them to clean up the code from obsolete functionality and reduce potential issues and confusion.

8. Improve Field Handling with Components

Given the changes in project context, we will consider using components for field handling, such as:

<x-orchid-input type="text">

This will improve flexibility and extensibility of fields, avoiding the need to extend all variables.

9. Support for Dark Mode

With the release of Bootstrap 5, which includes dark mode support, we plan to integrate this feature into the project. This will require adapting current variables and deciding on a convenient location for the theme switcher in the user interface. Implementing dark mode will enhance visual appeal and make the interface more modern and user-friendly.

tabuna commented 2 months ago

I would like to replace mix with import-map.

This change will allow the application to load only the JavaScript code that is actually needed. For example, if a feature is not using the Markdown field, the associated code won't be loaded in the browser. Additionally, this will make it much easier to add custom JS controllers without dependencies.

It will also enable the reuse of JS libraries in custom controllers without duplicating code.