Case studies/One platform for payroll, billing, projects and AI-assisted development
Enterprise ERPFastAPIReact 19AI automation

One platform for payroll, billing, projects and AI-assisted development

Itqaan

A multi-tenant enterprise management platform: a FastAPI backend and React 19 workspace covering attendance, payroll, expenses, invoicing, project profitability and an AI coding-agent dashboard behind granular role-based access.

The workspace

One daily workspace, with the controls behind it.

Employees start their day, take breaks and see who is online from a single home screen; finance and administration work from the same platform.

Employee workspace

Attendance, availability and team presence at a glance.

The home screen tracks the working day, breaks and remaining availability, and shows which colleagues are currently online.

Itqaan home screen showing the day timer, break history, availability and a list of colleagues currently online
Administration

Finance and access control

Payroll, expenses, invoices and role permissions share one data model and one access system.

Payrollslips to expenses
ReportsP&L + bank statement
Accessrole permission matrix
01 / OVERVIEW

One platform where four tools used to be.

Itqaan brings attendance, payroll, invoicing and project profitability into a single multi-tenant system, with an AI coding-agent dashboard beside them.

Every route is guarded by the same permission engine, and money only moves through records that cannot be quietly edited afterwards.

02 / THE CHALLENGE

Four systems, one source of truth.

Payroll, access control, billing and developer tooling each had rules that could not be allowed to disagree.

01

Payroll integrity

Salary payments must produce matching, tamper-proof expense records.

02

Granular access

Roles, departments and hierarchy all limit what a person can see or change.

03

Multi-company billing

Several companies, clients, tax rates and purchase orders in one system.

04

Auditable time

Attendance carries enough context to be reviewed after the fact.

03 / ARCHITECTURE

Architecture

A layered FastAPI backend, a permission engine shared by every route, and a separate FastMCP service for AI tooling.

Decision 01

Access rules had to be enforced identically on every endpoint.

Register permissions using decorators on each route when the application starts. A shared dependency checks access in this order: god-mode access, registered permissions, department restrictions, and role hierarchy. Users cannot modify records owned by users with higher roles.

The React app follows the same permission rules through a centralized route-to-permission map and route guards.

Access rules had to be enforced identically on every endpoint. An API request is authenticated with a JWT or personal access token. A hierarchy-zero role bypasses checks. Other requests go through a permission registry lookup, then a department access check, then a hierarchy protection check. API request JWT or PAT authentication Hierarchy zero bypass Permission registry lookup Department access check Hierarchy protection check
Access rules had to be enforced identically on every endpoint. An API request is authenticated with a JWT or personal access token. A hierarchy-zero role bypasses checks. Other requests go through a permission registry lookup, then a department access check, then a hierarchy protection check. API request JWT or PAT authentication Hierarchy zero bypass Permission registry lookup Department access check Hierarchy protection check

Architecture Narrative

An API request is authenticated with a JWT or personal access token. A hierarchy-zero role bypasses checks. Other requests go through a permission registry lookup, then a department access check, then a hierarchy protection check.

Payroll records and the expense ledger could not be allowed to drift apart. A draft salary slip is finalized and then paid. Payment creates a locked salary expense, which feeds both the bank statement report and the profit and loss report. Draft salary slip Finalized slip Paid slip Locked salary expense Bank statement Profit and loss
Payroll records and the expense ledger could not be allowed to drift apart. A draft salary slip is finalized and then paid. Payment creates a locked salary expense, which feeds both the bank statement report and the profit and loss report. Draft salary slip Finalized slip Paid slip Locked salary expense Bank statement Profit and loss

Architecture Narrative

A draft salary slip is finalized and then paid. Payment creates a locked salary expense, which feeds both the bank statement report and the profit and loss report.

Decision 02

Payroll records and the expense ledger could not be allowed to drift apart.

Make payment the only way a salary expense can exist. Paying a slip creates the linked expense automatically, the expense is frozen against edits and deletion, and the financial reports read from the same records.

Decision 03

Developer automation had to be usable from AI editors and from the web app.

Developer automation had to be usable from AI editors and from the web app. An AI editor calls a standalone FastMCP server, and the React Jules dashboard calls the FastAPI backend directly. Both reach the Jules service, which works against connected GitHub repositories. AI editor FastMCP server FastAPI backend React Jules dashboard Jules service GitHub repositories
Developer automation had to be usable from AI editors and from the web app. An AI editor calls a standalone FastMCP server, and the React Jules dashboard calls the FastAPI backend directly. Both reach the Jules service, which works against connected GitHub repositories. AI editor FastMCP server FastAPI backend Jules service GitHub repositories React Jules dashboard

Architecture Narrative

An AI editor calls a standalone FastMCP server, and the React Jules dashboard calls the FastAPI backend directly. Both reach the Jules service, which works against connected GitHub repositories.

Run a standalone FastMCP server on its own port that exposes the Jules coding-agent operations as tools, authenticated with personal access tokens, while the React dashboard uses the same backend over JWT.

04 / OUTCOMES

What the platform makes possible.

Immutable

Salary expenses cannot be edited or deleted

Payroll-linked expense records are locked once created.

Role-based

Permissions enforced on every route

Department isolation and hierarchy protection apply on top of role checks.

Auditable

Attendance records client context

Punch events capture the client IP address and user agent.

Real time

Profit and loss on demand

Revenue, expenses and categorical breakdowns read from live records.

Isolated

Project financials stay hidden

Budget and income figures are removed unless the requester is permitted.

8 tools

AI agent control from the editor

Jules session tools are exposed through a FastMCP server.

05 / EXECUTION

One workspace for everyone, one console for finance.

The same platform serves the employee on a normal day and the administrator closing the month.

FOR EMPLOYEES

Daily workspace

Punch in and out, take breaks, request leave, review time summaries and see who is online.

Itqaan home screen showing the day timer, break history, availability and a list of colleagues currently online
  • Timepunch clock with audit data
  • Leaverequests + balances
  • Projectstimesheet entries
FOR ADMINISTRATORS

Finance and control

Generate and pay salary slips, review expenses and reports, manage billing and assign permissions by role.

  • Payrollmulti-component slips + PDF
  • ReportsP&L, bank statement
  • Billinginvoices, POs, payments
  • Accessrole permission matrix
06 / STACK

Mainstream tools, carefully layered.

Each layer uses well-understood technology that the team can maintain.

Backend

Layered API with migrations and document generation.

  • FastAPI
  • SQLAlchemy
  • Pydantic v2
  • Alembic
  • ReportLab

Frontend

Component-driven single-page application.

  • React 19
  • Vite 7
  • React Router v7
  • Tailwind CSS v4

Data and state

Relational storage and server-state caching.

  • PostgreSQL
  • TanStack Query v5
  • Recharts

AI and delivery

Agent tooling, media storage and hosting.

  • FastMCP
  • AWS S3
  • Docker
  • Netlify
Next

Consolidating internal tools into one governed platform?

Payroll, billing, time tracking and access control can share one data model, with AI tooling added behind the same permissions.