# Empty states

The goal of this RFC is to improve the way GLPI is displayed when no data are available and so the first experience with our application.


## Demo dashboard

Dashboard page is the first page, after login, a new GLPI administrator will see. It’s currently ugly, not pertinent, even with the demo mode where data are filled.


**Current state (11.0):**

 ![](https://outline.teclib.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzFjOTk2NzhkLTIwNTctNGY5MC04MDY4LWFlOGMwYTU0N2YyZi9mMmVjN2M5Ni03NGViLTQ2NzUtYmQwYy1jZDUxOWNjZjliMGEvaW1hZ2UucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTQ1OTY0MDAsImV4cCI6MTc5NDY4MjgwMH0.j6c1rrP-4pZoj9gzanX7RA2g1gAitXS1WCxTi-VKXHQ)

Worse with dark themes

 ![](https://outline.teclib.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzFjOTk2NzhkLTIwNTctNGY5MC04MDY4LWFlOGMwYTU0N2YyZi9mMzA5Mjc4ZC04ZGU1LTRiMjctYWViYS00Mjc1YzlhNGYwYjEvaW1hZ2UucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTQ1OTY0MDAsImV4cCI6MTc5NDY4MjgwMH0.kB5id2ALGdWLyPIFjOL7oqBfXRXZH_fGp0jwiklO3T4)


Possible actions:

* Incorporate “Onboarding” here with some pre-defined actions like:
  * Define entities
  * Import users
  * Install GLPI Agent
  * Create your first ticket categories

    
* Reduce “Fruit salad” effect:
  * neutral colors for not important data (inventory, for example)
  * Helpdesk data should incorporate comprehensive colors that alert that match either the status or the criticality (late ticket should be more visible than others)
  * For dark palette compatibility, we must use color with alpha channel set in our cards’ setup.

    
* Reorganize by “Actionability”.

  What is important should appear at the top

  
  * The helpdesk, and what the user need to work on

    > "My Tickets," "Tickets Waiting for Approval," "Late Tickets."

    
  * Inventory health, instead of displaying a lot of widgets to list every possible assets and their count, maybe we can switch to something more meaningful

    > Computers without Antivirus, Licenses Expiring


* Merge data in summary cards
  * 1 special Inventory card with all types, we may have also a specific display and not try to make the thing work in all widget type
  * 1 for helpdesk also. We currently have, but it’s a bit ugly in 2025:

    ![](https://outline.teclib.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzFjOTk2NzhkLTIwNTctNGY5MC04MDY4LWFlOGMwYTU0N2YyZi9iMGUxNmMzYy02ODZmLTRkMjMtYTgxYS1mNzYwMDVmMmE2ZWEvaW1hZ2UucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTQ1OTY0MDAsImV4cCI6MTc5NDY4MjgwMH0.f7QtVcIsqOcmTka9DxiOglgj4Ag-BHJ3HXvub0ztCE0 " =917x238")We may also here redo a special widget display for this.

    
* Make more personalized widget with static display. Example from [tabler.io](https://tabler.io)

  ![](https://outline.teclib.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzFjOTk2NzhkLTIwNTctNGY5MC04MDY4LWFlOGMwYTU0N2YyZi9jYjhiNzEwNy0zN2RlLTRkNjgtOGEwZC1kNWM5MTUzOGMzYmQvaW1hZ2UucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTQ1OTY0MDAsImV4cCI6MTc5NDY4MjgwMH0.fNU4yqMkOejAoc4MbKCezlKBG6PQuDsEaZJ6TU3ppEU " =664x255")![](https://outline.teclib.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzFjOTk2NzhkLTIwNTctNGY5MC04MDY4LWFlOGMwYTU0N2YyZi8yMzdmMDdjYy1mODMxLTQyYTgtYTYzNS1iYWM0OTgxZTQ5MjkvaW1hZ2UucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTQ1OTY0MDAsImV4cCI6MTc5NDY4MjgwMH0.nveBaViWwMxjCRccsDbD3hStHBQzoYcpSD1bqTkUNFk " =868x421")

  It’s very possible to have illustrations made by our designer if needed to beautify a specific widget.

  


These statements are also valid for other dashboards (Helpdesk one mainly), the default remains the top priority, others dashboard rework may be delayed to another versions.


## Default lists

Empty search pages are very empty :p

 ![](https://outline.teclib.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzFjOTk2NzhkLTIwNTctNGY5MC04MDY4LWFlOGMwYTU0N2YyZi84NzdjZDQ4ZS00ZDEwLTQ2ZTQtOGU4Zi00ODJlMzY0ZjQ4YTYvaW1hZ2UucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTQ1OTY0MDAsImV4cCI6MTc5NDY4MjgwMH0.V-vHpzD05Y-D66uCLONqz7asVrXE1CdUgSSP-pXlVAE)

Note, there are cases where the search result is empty, but the database contains data hidden to the user.  
Because entities, default and used criteria, etc.

So we must have a distinct state of initial empty database from filtered results.  
We still may create a distinct illustration for the filtered state to “embellish” the page.


A few mockups (illustrations are ugly, not the point) done with Gemini, but in the final implementation of the empty database state, we should also get rid entirely of the header.

 ![](https://outline.teclib.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzFjOTk2NzhkLTIwNTctNGY5MC04MDY4LWFlOGMwYTU0N2YyZi9lYjM3ZGQ0Yi0yMzEyLTQ3M2MtYmMwNC1hMzBkNjMzYWY0Y2MvaW1hZ2UucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTQ1OTY0MDAsImV4cCI6MTc5NDY4MjgwMH0.-1_6wQAXgYwhrE4TXpKL3aPSqI1kwkKGtTQW4qZYOvk " =1024x416")

 ![](https://outline.teclib.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzFjOTk2NzhkLTIwNTctNGY5MC04MDY4LWFlOGMwYTU0N2YyZi83ZDI0NWU4ZC1kOWVhLTQyYWEtOTU2ZC1hNGIwZjRmZDBhZjkvaW1hZ2UucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTQ1OTY0MDAsImV4cCI6MTc5NDY4MjgwMH0.y4LLBz0XdbCIn8FAy3U3-rqcQaMihb3-FPZGPhRWx8Q " =1024x412")

 ![](https://outline.teclib.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzFjOTk2NzhkLTIwNTctNGY5MC04MDY4LWFlOGMwYTU0N2YyZi9mNDdmYTIzYi0wNDMxLTQ1NjktOTc1Zi03MDQyMTJlNjZlNmMvaW1hZ2UucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTQ1OTY0MDAsImV4cCI6MTc5NDY4MjgwMH0.ua0tIz7qvR6aJLV8jJPX9VIbgajuYiiUz08f3YyAjuw " =1024x412")

For each major object in GLPI, we may improve the default state.

So we need:

* An illustration for the concept
* A quick test explaining the purpose
* An primary button targeting the action which will permits to fill the page (for example, softwares may be filled by installing the agent)
* A Learn more link targeting an external doc. Caution this means we may have to maintain the link.


The produced illustrations may be re-used later in presentations, webinars, and also in the help center.


By order or priority, we should have:  

**Tickets**

> **Introduction text**: *Tickets allow you to track and resolve user requests efficiently, Keep your helpdesk organized and your users happy.*
>
> **Help url**: <https://help.glpi-project.org/documentation/modules/assistance/tickets/ticketopening>
>
> **Call to action**: “Open a ticket” (front/ticket.form.php)
>
> **Illustration**: Usually help-desk system is represented by a person hearing an headset (headphones + mic) sitting at a desk with a computer in front of him. We can also add a bubble representing the conversation


**Computers**

> **Introduction text**: Inventory the computers of your structure either manually or automatically gather informations by installing the GLPI Agent.
>
> **Help url**: <https://help.glpi-project.org/documentation/modules/assets/computers>
>
> **Call to action**: Primary: “Create a computer” (front/computer.form.php); Secondary: Install GLPI-Agent (==TODO==)
>
> **Illustration**: ==TODO==


**Problems**

> **Introduction text**: *Problems are defined as the underlying cause or potential cause of one or more incidents,* distinct from the incidents themselves which are just the symptoms or interruptions.
>
> **Help url**: <https://help.glpi-project.org/documentation/modules/assistance/problems>
>
> **Call to action**: “Create a problem” (front/problem.form.php)
>
> **Illustration**: ==TODO==


**Changes**

> **Introduction text**: *A Change is any planned update, addition, or removal of an IT component that is managed carefully to avoid disrupting business operations.*
>
> **Help url**: <https://help.glpi-project.org/documentation/modules/assistance/changes>
>
> **Call to action**: “Create a change” (front/change.form.php)
>
> **Illustration**: ==TODO==


**Documents**

> **Introduction text**: *Documents management in GLPI allows to store digital documents or web links sorted under different headings. Uploaded files from tickets are stored here.*
>
> **Help url**: <https://help.glpi-project.org/documentation/modules/management/documents>
>
> **Call to action**: “Send a document” (front/document.form.php)
>
> **Illustration**: We may use a concept of archive where a person puts a files folder inside an archive cabinet.


**Projects**

> **Introduction text**: Project management in GLPI allows to follow entirely a project's progress by creating tasks and building teams
>
> **Help url**: <https://help.glpi-project.org/documentation/modules/tools/projects>
>
> **Call to action**: “Create a project” (front/project.form.php)
>
> **Illustration**: A person in front of a “Kanban” board with a few columns, like “To Do”, “In progress” and “Done”


* Licences
* Data centers
* Webhooks
* Service levels
* Oauth clients
* Assets definitions
* Receivers
* Budgets
* Monitors
* Softwares
* Network devices
* Peripheral
* Printers
* Cartridges
* Consumables
* Phones
* Racks
* Suppliers
* Contacts
* Contracts
* Certificates
* Domains
* Appliances
* Database
* Clusters
* Enclosures
* PDUs
* Passives devices
* Reservations
* Unmanaged assets
* Cables
* Reminders
* External Links
* RSS Feeds
* Recurrent Tickets
* Recurrent Changes
* Fields unicity
* Phone lines
* Reports
* Saved searches


Also, Setup > Asset definition forms should allow the user to upload an illustration for its custom assets.


More, some page, even containing information and data, may be enhanced by the same concept:

* Inventory
* API
* Authentication
* Notifications
* 404 error
* 403 error
* Forgot password
* About modal

---

**Documents**

- [new dashboards](https://outline.teclib.com/s/18ffda2e-901c-4c04-997b-a4fb58be56a1/doc/new-dashboards-6oqTWP6RY2)