Back to Projects2 of 6
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 ConsoleExpress 5 & Next.js 15Policy Models
Cut & Pay, Monthly, Instant
PostgreSQL Relational SchemaAccess Control
Role-Based (RBAC)
Module / Submodule ActionsBackground Jobs
Bull + Redis Worker
ExcelJS Report ProcessingSystem Architecture ModulesKnex.js Migrations Active
master_settingcompany, category, segment, product
view, create, update, deleteinsurance_managementcut_pay, monthly_pay, instant_pay
policy lifecycle & commissionsemployee_managementemployee_role, operation_manager, user
role assignment & hierarchiesreportsbusiness_reports, agent_business, l1_l2_business
ExcelJS spreadsheet exportsContext
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