DashboardSupportWelcome

👤 USER DOCS

Getting Started

Daily Operations

Shift Workspace & TasksPre-Shift SetupLine-Up CardsShift ReportsForms

Staff & Locations

Staff SchedulingManaging Locations

Oversight

Manager ReportsAnalyticsPre-Shift & Compliance

Incidents & Feedback

Incident ReportingAnonymous FeedbackMessages & Announcements

AI & Settings

AI ChatgearApp Settings

Administration

Dashboard & OnboardingAdmin

⚙️ DEVELOPER DOCS

Getting Started

Getting StartedDevelopmentDeployment Guide

Architecture

Architecture OverviewData FlowArchitecture Decision Records

Core Domain

Core DomainDatabase ReferenceLocations DomainAuth & RBACScheduling DomainReports DomainIncidents DomainNotifications DomainAudit Log & OptimizationDesign Audit Findings

Frontend

Frontend ArchitectureFormsLoading SkeletonsComponentsPWA & NotificationsimageScreenshots

API Reference

API Reference

Endpoints

POS Sales APIOptimization Data APISchedule Shifts APIEmployee Export APIReports APIIncidents APIAI Chat APIPush Notifications APIWebhooks APICron API

Contributing

ContributingcodeCode Examples

Security

Security & Compliance
Danvas IconDanvas
Danvas IconDanvas

Admin

User management, roles, and access control

Danvas admin tools provide comprehensive user management for restaurant group administrators. Only users with the admin role can access admin functionality.

User Management

Admins can view, invite, update, and remove team members:

User List

Navigate to Admin → Users to see all members:

ColumnDescription
NameUser's display name and photo
EmailUser's email address
Roleadmin or member
LocationsAssigned locations
StatusActive or deactivated
ActionsBan, impersonate, edit

User Schema

Dashboard & Onboarding

Role-based dashboards and first-time user setup

Getting Started

Set up Danvas for local development in minutes

On this page

User ManagementUser ListUser SchemaRolesAdminMemberUser ActionsInvite UserUpdate RoleBan/Unban MemberRemove MemberImpersonationCSV ImportLocation AssignmentAudit LoggingOther Admin PagesLocations ManagementBrand ColorsLocation SettingsServer ActionsRelated FilesRelated Files
interface User {
  id: string;
  clerkId: string;           // Clerk auth ID
  email: string;
  firstName: string;
  lastName: string;
  imageUrl?: string;
  teamId: string;             // Organization scope
  role: 'admin' | 'member';
  locationIds: string[];       



Roles

Admin

  • Full access to all features
  • Can manage users (invite, ban, change roles)
  • Can view analytics and compliance dashboards
  • Can send push notifications
  • Can manage forms and view all submissions

Member

  • Can submit forms, reports, incidents
  • Can participate in chat
  • Cannot access admin features
  • Limited to assigned locations

User Actions

Invite User

Admins can invite new users by email:

  1. Click "Invite User" button
  2. Enter email address
  3. Select role (admin or member)
  4. Optionally assign locations
  5. System creates pending user record

Invited users receive an email (via Clerk's invitation system) to join the organization.

Update Role

Admins can change a user's role:

  1. Click edit icon on user row
  2. Select new role (admin or member)
  3. Confirm change
  4. Audit log entry created (user.role_changed)

Ban/Unban Member

Banning deactivates a user:

  1. Click ban icon on user row
  2. Confirm action
  3. User's isActive set to false
  4. Audit log entry created (user.deactivated)

Banned users cannot sign in. Admins can reverse this with "Unban".

Remove Member

Removing deletes the user record:

  1. Click remove icon on user row
  2. Confirm action (destructive)
  3. User record deleted from database
  4. Audit log entry created (user.removed)

Impersonation

Admins can impersonate any user for debugging:

  1. Click impersonate icon on user row
  2. System creates Clerk sign-in token
  3. Admin redirected as the target user
  4. Banner displays "Impersonating [Name]"
  5. Click "Exit Impersonation" to return

Audit log entry created (user.impersonated).

CSV Import

Admins can import users in bulk via CSV:

  1. Admin → Users → Import
  2. Upload CSV with columns: firstName, lastName, email, role, locationIds
  3. System validates and creates users
  4. Results summary shown (created, skipped, errors)
  5. Audit log entries created for each import

Location Assignment

Users can be assigned to multiple locations:

// Example: User assigned to 3 locations
{
  "id": "user_123",
  "name": "John Doe",
  "role": "member",
  "locationIds": ["loc_abc", "loc_def", "loc_ghi"]
}

This restricts their view to only assigned locations. Admins see all locations.

Audit Logging

All user management actions are logged:

ActionWhen
user.role_changedAdmin changes user role
user.invitedAdmin invites new user
user.deactivatedAdmin bans user
user.reactivatedAdmin unbans user
user.removedAdmin deletes user
user.impersonatedAdmin impersonates user

Audit logs viewable at Admin → Audit Log.

Other Admin Pages

PagePurpose
/admin/analyticsOrganization-wide metrics
/admin/audit-logAll audit events
/admin/complianceReport filing compliance
/admin/formsForm builder and management
/admin/submissionsView all form submissions
/admin/notifications/slackSlack webhook configuration
/admin/optimizationSales & labor optimization targets
/admin/schedule-builderDrag-and-drop schedule editor
/admin/shift-tasksShift task definitions
/locationsLocation management and brand colors

Locations Management

The Locations page (/locations) shows all restaurant locations in your organization.

Each location card displays:

  • Location name and address
  • Timezone

Brand Colors

Admins can set a per-location brand color via the color picker on each location card or in the settings page. Preset colors include Amber, Copper, Deep Red, Charcoal, Emerald, and Indigo, with support for custom hex values.

Location Settings

Each location has a dedicated settings page for editing name, address, timezone, brand color, and avatar URL. Access it by clicking Edit on any location card.

Server Actions

ActionAuthDescription
updateLocationSettingsAdminUpdate location name, address, timezone, brand color, or avatar URL

Related Files

FilePurpose
apps/app/(authenticated)/locations/page.tsxLocations listing page
apps/app/(authenticated)/locations/[id]/page.tsxLocation settings page
apps/app/(authenticated)/locations/actions.tsLocation server actions
apps/app/(authenticated)/locations/schemas.tsLocation validation schema
apps/app/(authenticated)/locations/components/location-settings-form.tsxLocation settings form
apps/app/(authenticated)/locations/components/brand-color-picker.tsxBrand color picker component

Related Files

FilePurpose
apps/app/app/(authenticated)/admin/users/page.tsxUsers list page
apps/app/app/(authenticated)/admin/users/users-client.tsxUsers table UI
apps/app/app/(authenticated)/admin/users/actions.tsUser management actions
apps/app/app/(authenticated)/admin/users/columns.tsxTable column definitions
apps/app/app/(authenticated)/components/impersonation-banner.tsxImpersonation indicator
packages/database/src/schema/Domain-split schema modules
packages/database/src/audit.tsAudit log definitions
// Assigned locations
isActive: boolean;
createdAt: Date;
updatedAt: Date;
}