All case studies

DEV3 Technologies · own product

WorkPro: one workspace for projects, people, clients and finance, with customer-designed roles

Our own product: a multi-tenant company management platform where nine modules plug into one Next.js shell through typed registries, and each organisation designs its own security roles with record-level scopes.

Industry
Business operations SaaS

Live project preview

DEV3 Technologies · own product — screenshots
Open live demo
Public website with the animated 3D hero and a glass Kanban board

Public website with the animated 3D hero and a glass Kanban board

The challenge

Growing companies run projects, HR, CRM, invoicing, hiring and email in separate tools; data is copied between them and each tool has its own idea of who may see what. We set out to build one multi-tenant system that removes those silos, with a role matrix that organisations can edit themselves and data boundaries that hold on every list, search and record — without the modules stepping on each other as the product grows.

Our solution

WorkPro is a Next.js 15 App Router application on MongoDB with path-based tenancy (/[org]/…) and a two-layer access model.

Key design decisions

  • Personas decide the area; roles decide the data. Six personas route users to the admin console, the workspace or the client portal. Per-organisation security roles grant permissions from a compile-time-checked set of 104, each at an Own, Team, Department or All scope.
  • Scopes as data filters. The held scope is turned into a MongoDB filter for lists, search and single-record checks; an empty match means nothing is visible, never everything.
  • Modules as plug-ins. Provisioning hooks, demo seeders, dashboard widgets, search providers and import adapters are contributed by each module through typed registries, so the nine modules could be built in parallel against fixed contracts.
  • Fail-closed tenancy. A Mongoose plugin throws on any query without a tenant filter, and cross-tenant IDs return “not found”.
  • Uniform entry points. Six action wrappers and five route wrappers handle auth, permissions, validation, read-only mode, audit and revalidation; repo scripts fail the build when an action skips them or a client file imports server code.
  • AI as an assistant, not an actor. Every AI call is availability-checked, rate-limited and logged; results are reviewed and applied through the normal permission-checked actions.

Architecture

Server components call module services through thin server actions; versioned JSON APIs under /api/v1/[org] feed server-driven tables, uploads, search and exports. Mongoose 9 on a MongoDB replica set stores 62 models, files go to Cloudinary, optional Upstash Redis backs rate limits, and five protected cron routes run recurring work. The public site, careers boards, hosted inquiry forms and invoice tracking links sit beside the workspace.

Results

WorkPro ships as a complete product with a public read-only demo. By the numbers, counted from the source:

  • 9 modules, 7 of which each organisation can switch on or off
  • 6 personas and 104 permissions (22 resources × 7 actions) with 4 scopes
  • 4 languages, 2 of them right-to-left
  • 105 pages, 63 route handlers and 62 Mongoose models
  • 260 automated test cases in 19 Vitest files

Available on the DEV3 marketplace.

Related case studies