DataGrid was already injecting displayMode='cards' on small viewports via useMobile() and leaving it undefined (default 'table') everywhere else. The user had no way to override either side: someone on a wide screen who preferred a denser card list could not get there, and someone on a tablet with a tall narrow window could not force the table view to keep their layout consistent. Add a small icon toggle in the DataGrid header row that flips between table and cards, and persist the choice in localStorage under umami.datagrid.displayMode. The user choice wins; if there is none, the existing useMobile-driven default applies. Every DataGrid consumer (sessions, websites, links, pixels, boards, team admin, etc.) gets the toggle automatically with no caller-side change. Verified in playwright on the sessions page: at 1400 viewport the default is table; clicking the toggle switches to cards and a reload keeps cards. At 800 viewport the default is cards; clicking the toggle switches to table even though useMobile would otherwise force cards. Round trip in both directions works and the choice survives navigation away and back.
Umami
Umami is a simple, fast, privacy-focused alternative to Google Analytics.
🚀 Getting Started
A detailed getting started guide can be found at umami.is/docs.
🛠 Installing from Source
Requirements
- A server with Node.js version 18.18+.
- A PostgreSQL database version v12.14+.
Get the source code and install packages
git clone https://github.com/umami-software/umami.git
cd umami
pnpm install
Configure Umami
Create an .env file with the following:
DATABASE_URL=connection-url
The connection URL format:
postgresql://username:mypassword@localhost:5432/mydb
Build the Application
pnpm run build
The build step will create tables in your database if you are installing for the first time. It will also create a login user with username admin and password umami.
Start the Application
pnpm run start
By default, this will launch the application on http://localhost:3000. You will need to either proxy requests from your web server or change the port to serve the application directly.
🐳 Installing with Docker
Umami provides Docker images as well as a Docker compose file for easy deployment.
Docker image:
docker pull docker.umami.is/umami-software/umami:latest
Docker compose (Runs Umami with a PostgreSQL database):
docker compose up -d
🔄 Getting Updates
To get the latest features, simply do a pull, install any new dependencies, and rebuild:
git pull
pnpm install
pnpm build
To update the Docker image, simply pull the new images and rebuild:
docker compose pull
docker compose up --force-recreate -d
