Skip to the article
Aniq-UI

VelraThe agency dashboard

The agency dashboard

What the back office does: the overview with its map, the pages in the sidebar, the agency's settings, notifications and signing in.

For the Full Stack package

Pages

Every page exists in English under /en and in Arabic under /ar. The dashboard opens at /en/dashboard, after the sign-in at /en/auth/login. Each sidebar item shows only when the signed-in admin holds its permission.

Sidebar itemPathPermissionWhat it does
Overview/en/dashboardoverview.viewProperties, inquiries and viewings in focus, with the properties map.
AI assistant/en/dashboard/ai-assistantai_chat.useA chat that reads and acts on properties, inquiries and viewings, and draws charts.
Properties/en/dashboard/propertiesproperties.viewThe list with status tabs, search and filters, and the property editor.
Leads/en/dashboard/leadsleads.viewInquiries from the website, with a detail panel.
Viewings/en/dashboard/viewingsviewings.viewRequested and confirmed visits.
Staging studio/en/dashboard/studiostaging.viewFurnish empty rooms with AI previews and approve them for the website.
Settings/en/dashboard/settingsNone (each tab has its own)Agency, Homepage, Neighborhoods, Profile and Security.
Admin management/en/dashboard/admins-managementadmins.viewTeam accounts and their roles.
Admin roles/en/dashboard/admins-rolesroles.viewRoles and permissions.

A search palette in the top bar finds pages, properties, inquiries and viewings, the bell holds the notifications, and "View website" opens NEXT_PUBLIC_SITE_URL. A page opened by its address without the permission shows "This page is not part of your role" instead, the same refusal the API gives.

The overview

  • Published properties, for sale and for rent, the inquiries received in the last seven days, the viewings in the next seven days and those still awaiting confirmation.
  • The latest inquiries, the upcoming viewings, the three most recently updated properties and a featured property.
  • A map of the published homes that have coordinates, up to 250, drawn with OpenFreeMap tiles.

Settings

Settings has five tabs. Profile and Security belong to the signed-in admin; the others need a permission to see and another to save.

TabPermissionWhat it sets
Agencysettings.view, settings.edit to saveThe agency's name, contact email and city, and its heading and short description in English and Arabic. The currency is AED and the time zone Asia/Dubai; the website always ships in both languages.
Homepagesettings.view, settings.edit to saveThe three homes the website's home page features, in order (published homes only), and the showcase home whose approved staged room the home page shows.
Neighborhoodsneighborhoods.view, and create, edit or deleteEach area's name in both languages, slug, city, short description, cover photo, sort order, and whether it is featured and shown. Its homes keep existing when an area is deleted.
ProfileNone: every admin saves their ownThe signed-in admin's photo, first and last name, email and phone.
SecurityNoneThe signed-in admin's password.

The brand logo is not uploaded here: it comes from the project's brand files.

Notifications

  • A new inquiry notifies every admin who can view inquiries, and a viewing request every admin who can view viewings. A finished or failed staging preview notifies the admin who started it.
  • They arrive live, with a short message on screen, and the bell lists the newest 30. Each is kept for 30 days, until read or removed.
  • Nothing is sent by email: there is no mail service in the template.
  • The live connection uses NEXT_PUBLIC_WEBSOCKET_BASE_URL, the API's address without /api. A reload always shows the latest rows; only the live updates depend on the connection.

Signing in

  • The sign-in form starts empty. Remember me keeps the session after the browser closes, until the API's token expires (seven days by default); untick it and the session ends with the browser or the tab.
  • A wrong email and a wrong password read the same, "Invalid email or password", so the form never tells anyone which addresses have an account. After ten failed attempts in fifteen minutes from one address, the form says to try again in a few minutes.
  • When the API refuses a session (an expired or revoked token), the dashboard signs out and opens the sign-in page. A change to an admin's roles reaches them while they are signed in.

How the dashboard's code fits together

Included with your purchase. Sign in to read, or open it in your download.

The code's structure, and the recipes for adding a page, a translation and an API service.

Stuck on a step?

Find a fix before you start over.

Troubleshooting

Cookie Preferences

We use cookies to enhance your browsing experience, analyze site traffic, and personalize content. By clicking "Accept All", you consent to our use of cookies for analytics and personalized advertising.