Skip to the article
Aniq-UI

TicketoryThe organiser dashboard

The organiser dashboard

What the organiser's back office does: the pages in the sidebar and who sees them, the overview, reports and CSV exports, the workspace 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 member's role holds its permission.

Sidebar itemPathPermissionWhat it does
Overview/en/dashboardoverview.viewSales for the chosen period, the live door and the next events.
Events/en/dashboard/eventsevents.viewAll, Published, Draft and Ended tabs, search and filters, the event editor and each event's attendees.
Orders/en/dashboard/ordersorders.viewOrders with status totals and filters, each order's detail, refunds, and CSV export.
Check-in/en/dashboard/check-incheckin.scanThe door: camera or typed code, recent scans and alerts.
Venues/en/dashboard/venuesvenues.viewVenues on a map, the venue editor and the seat layout editor.
Reports/en/dashboard/reportsreports.viewPaid sales by period, event, payment provider and category, with CSV export.
Team/en/dashboard/teamadmins.viewWorkspace members, invitations, roles and check-in sessions.
AI assistant/en/dashboard/ai-assistantai_chat.useAnswers about sales and doors, draws charts and drafts reminders for approval.
Venue studio/en/dashboard/studiostudio.useTurns a photo of an empty venue into an AI event concept.
Settings/en/dashboard/settingssettings.viewGeneral, Payments, Team and Notifications for the workspace; Profile and Security for every member.

Roles opens from the Team page, and Inquiries (/en/dashboard/leads, leads.view) and Notifications open from the account menu, which also holds the member's own Profile and "View website" (NEXT_PUBLIC_SITE_URL). A search palette in the top bar finds pages. A page opened by its address without the permission shows that it is not part of the member's role, the same refusal the API gives. Each member lands on the first page their role opens: the overview for most, the door for the Check-in role.

The overview

  • The ticket subtotal, paid tickets, check-ins and fees for the last 7 days, the last 30 days, this month or all time, with a ticket sales chart that has a point for every day of the period.
  • The live door: the session with doors open, how many are in, how many are expected and how many remain, with a link to its check-in.
  • The next five published events with sold against capacity and check-ins, and how many check-ins need attention (door alerts not yet looked at, plus orders waiting in review).
  • Days are the workspace's days, in its time zone. Only paid orders count, on the day they were paid; free orders count as orders and add nothing to any amount.

Reports and exports

Reports shows the ticket subtotal, fees, what was collected and what was refunded for a period (the same four, or two dates of your choice) and one event or all, then the sales by event with each one's share, by payment provider (Stripe, PayPal, test payment and free) and by category.

  • Export CSV on Reports and on Orders queues a file in the background and offers Download the file once it is ready. It holds the orders the current filters show, with reference, date, status, event, customer, email, tickets, subtotal, fee, total, refunded, currency and provider.
  • The download link is the permission, works for one hour and only for the member who asked. The files hold buyers' names and email addresses and are kept in EXPORT_DIR (./exports without Docker, the data volume with Docker).
  • Exporting needs reports.export. The seeded Owner, Manager and Finance roles hold it.

Settings

Settings has six tabs. The four workspace tabs need settings.view to see and settings.edit to save; Profile and Security belong to the signed-in member, whatever their role.

TabWhat it sets
GeneralThe workspace's name, support email, currency (USD, EUR, GBP, SAR or AED), time zone and booking fee in percent (0 to 20, up to two decimals; 3 as seeded), which the attendee pays at checkout. The currency locks once the first ticket is paid for. The seat hold time and the per-order limit are not here: they are workspace columns seeded from the API's settings.json.
PaymentsShows whether Stripe, PayPal and the test payment are connected, in test mode or not configured, with the variables to set in the API's .env and each provider's webhook address. Keys are never typed or shown here.
TeamWhat each role may do with events, refunds, scanning and reports, with links to the team and the roles.
NotificationsThree switches for the team's notification bell: paid orders, refund requests and check-in alerts. They change only what the team is told: tickets, receipts and refund emails to buyers are always sent.
ProfileThe member's photo, name, email and phone.
SecurityThe member's password.

Someone who saved the settings after the page loaded wins: the page then shows their version and asks to check and save again. The brand logo is not uploaded here: it comes from the project's brand files.

Notifications

NotificationWho gets it
An order is paidEvery member who can view orders, while the paid orders switch is on
A refund is requestedEvery other member who can refund, while the refund requests switch is on
A ticket is refused at the door (shown twice, at the wrong event, or void)Every member who can publish events, while the check-in alerts switch is on
A message arrives through the website's contact formEvery member who can read inquiries
A venue studio concept finishes or failsThe member who started it
  • They arrive live, and the bell lists the newest 30. Each is kept for 30 days.
  • The live connection uses NEXT_PUBLIC_WEBSOCKET_BASE_URL, the API's address without /api, and the API's FRONTEND_URL must be the dashboard's address. A reload always shows the latest rows; only the live updates depend on the connection.

Signing in

  • Team members sign in here; attendees sign in on the website, never here. The seeded staff accounts are listed in the installation guide.
  • Remember me keeps the session after the browser closes, until the API's token expires (seven days by default, JWT_EXPIRATION); untick it and the session ends with the browser or the tab.
  • A wrong email and a wrong password read the same, so the form never tells anyone which addresses have an account. After ten failed attempts in fifteen minutes from one address, the API refuses for a while.
  • When the API refuses a session (an expired or revoked token), the dashboard signs out and opens the sign-in page. A change to a member'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.