Skip to content

Latest commit

 

History

History
61 lines (46 loc) · 2.33 KB

File metadata and controls

61 lines (46 loc) · 2.33 KB

Workbench-RBAC

Admin panel for managing roles, permissions, and user access in a workspace.

📺 Video Demo

Features

  • Create custom roles with granular permissions across projects, tasks, members, billing, and settings.
  • Edit permissions through a visual matrix. Toggle individual actions per resource.
  • Assign one or more roles to users and manage their activation status.
  • Preview any user's effective permissions, resolved across all assigned roles.

Tech Stack

Technology Purpose
Next.js 14 App Router, API route handlers, server rendering
TypeScript Type safety across components, API, and data layer
Tailwind CSS Utility-first styling, no CSS modules
lucide-react Icon set for UI controls and status indicators

Getting Started

No database and no environment variables required. All data lives in memory.

  1. Clone the repo
    git clone https://github.com/ksploitx/workbench-rbac.git
    cd workbench-rbac
    
  2. Install dependencies
    npm install
    
  3. Start the dev server
    npm run dev
    
  4. Open http://localhost:3000

Project Structure

app/            # Pages (roles, users, permissions) and API route handlers
components/     # Shared UI — sidebar, header, search context
lib/            # Types, permission definitions, in-memory data store
README.md       # This file

How Permissions Work

When a user has multiple roles, their effective permissions are the union of all permissions from every assigned role. If any role grants a permission, the user has it. Permissions are additive, never subtracted.

For example, if a user has the Member role (which grants projects.view, projects.create, projects.edit, tasks.view, tasks.create, tasks.edit, tasks.assign, and members.view) and the Contractor role (which grants projects.view, tasks.view, tasks.edit, and tasks.assign), their effective permissions include the combined set of both. The overlap is merged, not duplicated.