Skip to main content
Freelance / Full-Stack / Node.js•Aug 2024 — Oct 2024Freelance

Teammates Insurance

Insurance administration and policy management portal with Role-Based Access Control and asynchronous queue-based report exports.

Interactive Preview
T
Teammates Administration Console
Policy Models
Cut & Pay, Monthly, Instant
PostgreSQL Relational Schema
Access Control
Role-Based (RBAC)
Module / Submodule Actions
Background Jobs
Bull + Redis Worker
ExcelJS Report Processing
System Architecture ModulesKnex.js Migrations Active
master_settingcompany, category, segment, product
view, create, update, delete
insurance_managementcut_pay, monthly_pay, instant_pay
policy lifecycle & commissions
employee_managementemployee_role, operation_manager, user
role assignment & hierarchies
reportsbusiness_reports, agent_business, l1_l2_business
ExcelJS spreadsheet exports
Context

Overview

Teammates Insurance is an internal management portal built to handle insurance policies, claims records, and staff access. It features granular Role-Based Access Control (RBAC) across modules and offloads large CSV and PDF report generation to asynchronous Bull queue workers.

Key Features

  • Policy management for Cut & Pay, Monthly, and Instant payment structures
  • Role-Based Access Control (RBAC) checking user roles and allowed actions per module
  • Asynchronous report generation using Redis-backed Bull queue workers
  • Database migrations and relational schema design with Knex.js and PostgreSQL
  • Next.js administration interface with searchable and filterable data tables
Impact

Outcomes

Task QueueRedis BullMQ
Report Exports10K+ rows via queue
Access RulesRole x Module x Action
Process

How It Works

1

Policy & Claims Ingestion

Validates policy forms and records insurance data into structured PostgreSQL tables via Knex.js.

2

Permission Evaluation

Intercepts incoming requests with custom middleware to verify role, module, and action permissions.

3

Background Task Dispatch

Pushes export and report generation jobs to Redis Bull queues, letting background workers generate files without blocking API responses.

Screenshots & Interface

Visual Captures

[Screenshot Placeholder]
Alt: "Teammates Insurance policy administration dashboard"
Suggested capture: Admin table view listing policies with status tags, payment structures, and filter controls.
[Screenshot Placeholder]
Alt: "RBAC permission settings interface"
Suggested capture: User permission configuration screen displaying module-level read, write, and export toggles.
Decisions

Technical Choices & Trade-offs

Role-Based Access Control over hardcoded route checks

Decision: Evaluate permissions as Role-to-Module action mappings in API middleware instead of scattering role checks across route handlers.
Why: Insurance staff responsibilities overlap and shift - an underwriter may approve policies but must never export financials. Centralizing rules in middleware lets permissions be reconfigured without touching business code.

Queued report exports instead of synchronous responses

Decision: Run large CSV and PDF exports through Redis Bull queue workers rather than generating files inside the request cycle.
Why: Month-end exports covered 10K+ rows and reliably timed out when generated inline. Queuing kept API responses fast and made failed jobs retryable instead of surfacing errors to users.
Stack

Technologies Used

Languages & Core
TypeScriptJavaScriptNode.js
Backend & Data
Express 5PostgreSQLKnex.jsRedisBull Queue
Frontend & UI
Next.js 15React 19Tailwind CSS