Roles overview
Learn about the different user roles in CareNova and how permissions are managed across the platform.
Written By Dev010
Last updated 19 days ago
CareNova uses a Role-Based Access Control (RBAC) system to manage permissions and protect sensitive healthcare data across the entire platform.
Every user account is assigned one of four roles. That role determines which modules appear in the navigation, which actions are available, and which server-side operations are permitted.
Permissions are enforced at two levels simultaneously β the navigation UI and the backend server actions β so users can never access data or perform actions outside their role, even by navigating directly to a URL.
Administrators can customize the default permissions for every role from the Permissions page in the dashboard.
The Four Roles
π‘ Admin
The Admin has full, unrestricted access to every module, setting, and action in CareNova. Admin access cannot be restricted by the permissions matrix.
Full access to:
All patient records, appointments, and medical data
All financial modules β invoices, payments, expenses
Staff management β create, edit, approve, and deactivate accounts
Permissions matrix β configure access rules for all other roles
Landing page settings and clinic branding
Blog management β create, publish, and delete posts
Department, service, and inventory management
Lab vendors and test reports
Financial analytics β revenue, expenses, net income, overdue invoices
Auth audit logs and session activity
Clinic settings β name, type, branding, contact info
Payroll management
Exclusive to Admin:
Approving new user signups (pending approval flow)
Configuring role permissions for Doctor, Receptionist, and Nurse
Accessing landing page settings
Viewing auth audit logs
Admins typically represent clinic owners or system administrators.
π¨ββοΈ Doctor
The Doctor role is focused entirely on clinical workflows and patient care.
Can access:
Patient profiles β view, create, and edit
Appointments β view, create, edit, reschedule, and cancel
Medical records β vitals, clinical notes, diagnoses, attachments
Prescriptions β create, edit, and manage
Test reports β create, edit, and manage
Odontogram charting (dental clinics only)
Services and departments β view only
Blog posts β create and manage
Dashboard analytics summary
Cannot access:
Invoices, payments, or expenses
Staff management
Inventory management
Permissions matrix
Landing page settings
Payroll
π§βπΌ Receptionist
The Receptionist role handles front desk operations β patient registration, appointment scheduling, and billing.
Can access:
Patients β view, create, and edit
Appointments β view, create, edit, reschedule, cancel, and assign
Invoices β view, create, and edit
Payments β view and record
Services and departments β view only
Staff β view only
Dashboard analytics summary
Cannot access:
Medical records
Prescriptions
Test reports
Odontogram
Inventory
Expenses
Permissions matrix
Landing page settings
Blog management
π©ββοΈ Nurse
The Nurse role supports clinical operations β patient monitoring, medical documentation, and supply management.
Can access:
Patients β view and edit
Appointments β view, edit, and reschedule
Medical records β view and create vitals and clinical notes
Prescriptions β view only
Test reports β view only
Inventory β view and manage stock
Services and departments β view only
Cannot access:
Invoices, payments, or expenses
Staff management
Permissions matrix
Landing page settings
Blog management
Payroll
Permissions Matrix
The table below shows the default permissions for each role. These can be customized by an Admin from the Permissions page.
Admin always retains full access to all permissions regardless of any configuration changes.
How Permissions Are Enforced
CareNova enforces permissions at two independent levels:
1. Navigation The sidebar automatically shows or hides menu items based on the user's role and their granted permissions. Users never see modules they are not permitted to access.
2. Backend Server Actions Every server action that performs a mutation β create, update, delete β checks the user's role and permissions before executing. If the check fails, the action throws a permission denied error and the operation does not proceed.
This means that hiding a button in the UI is never the only protection. Even if a user navigates directly to a URL or sends a request manually, the backend will reject it if they do not have the required permission.
User Signup and Approval Flow
New users who sign up through the registration page are not granted dashboard access immediately.
The approval flow works as follows:
User submits signup form with email and password
Confirmation email is sent via Resend
User confirms their email address
Account is placed in pending approval state
Admin receives notification and reviews the request
Admin approves or rejects the account from the dashboard
Approved users can log in and access the dashboard
Rejected users are notified and cannot access the system
Admins can pre-create accounts directly from the Staff management module, bypassing the approval flow.
Customizing Permissions
Administrators can modify the default permissions for Doctor, Receptionist, and Nurse roles at any time.
To customize permissions:
Log in as Admin
Go to Dashboard β Permissions
Select the role to configure
Toggle individual permissions on or off
Save changes β they take effect immediately
Changes to permissions are reflected instantly across navigation, buttons, and server-side enforcement for all users with that role.
The Admin role cannot be restricted. Admin always retains full access to all modules and actions.
Why Role-Based Access Matters
Healthcare systems manage highly sensitive patient data. CareNova enforces RBAC to ensure that:
Users can only access information relevant to their role
Sensitive clinical data is protected from unauthorized access
Financial data is accessible only to billing staff and admins
Patient confidentiality is maintained across all workflows
Responsibilities are clearly separated between staff members
The system remains auditable β every login and action is logged
Demo Accounts
You can explore each role using the demo accounts included with the seed data:
The password can be customized by setting the
DEMO_PASSWORDenvironment variable before runningnpm run db:seed.