explaingit

ikantkode/examath

Analysis updated 2026-05-18

2TypeScriptAudience · pm founderComplexity · 4/5Setup · moderate

TLDR

A self-hosted web app for construction contractors to manage projects, track expenses and timesheets, run payroll for office and field staff, and generate Schedules of Values.

Mindmap

mindmap
  root((exaMath))
    Projects
      Budget categories
      Expenses
      Timesheets
    Payroll
      Office employees
      Field workers
      Union, Prevailing, Private
    Billing
      Schedule of Values
      CSI codes
      Excel export
    Admin
      Role-based access
      Audit logs
      Team management
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Track all expenses, timesheets, and payroll for a construction project from one dashboard.

USE CASE 2

Create and manage a Schedule of Values for billing a construction contract, with status workflow and Excel export.

USE CASE 3

Run payroll for both office staff and field workers, handling union, prevailing wage, and private wage types correctly.

USE CASE 4

Manage a team with role-based access so crew members, managers, and owners each see appropriate data.

What is it built with?

TypeScriptReactExpress.jsPostgreSQLPrismaDockerTailwind CSS

How does it compare?

ikantkode/examatharashthr/hugo-flowargeneau12e/kairos-tx
Stars222
LanguageTypeScriptTypeScriptTypeScript
Setup difficultymoderatemoderatehard
Complexity4/53/54/5
Audiencepm founderdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires Docker and Docker Compose, a single `docker compose up --build` command starts the frontend, backend, and database together.

In plain English

ExaMath is a web application designed to handle the financial and administrative side of running a construction contracting business. It runs as a web server with a dashboard you access through a browser, and it stores everything in a database on your own server. The core areas it covers are project management, expense tracking, timesheets, payroll, and billing. For payroll, it handles three wage types common in construction: union wages, prevailing wage (a rate set by regulation for public projects), and private projects. Union projects calculate wages and benefits separately because union benefits are typically paid at the end of the month rather than with each paycheck. You can manage both office employees and field workers, with payroll records linked to each. A feature called Schedule of Values is included for billing on construction contracts. This is a standard construction document that breaks a project into line items using industry cost codes and tracks the status of each through draft, submitted, and locked stages. The inline editing lets you update cells directly in the table, and the whole document can be exported to Excel. The application includes role-based access with three levels: Owner, Manager, and Crew. The first account created becomes the Owner automatically. Team members can be added by managers or owners, with auto-generated passwords displayed once at creation. An audit log records all user actions for accountability on shared projects. Deployment runs through Docker Compose with a single command that starts the frontend, backend, and database together. The frontend is built with React and styled with Tailwind CSS. The backend uses Express on Node.js with a PostgreSQL database accessed through a tool called Prisma. An Nginx deployment option is documented for production servers.

Copy-paste prompts

Prompt 1
Deploy exaMath on my server using Docker Compose. Walk me through the steps from cloning the repo to accessing the dashboard in a browser.
Prompt 2
How does exaMath handle union wage payroll differently from prevailing wage projects, including how benefit rates are calculated?
Prompt 3
Walk me through creating a Schedule of Values in exaMath for a construction contract, including the inline editing and how to submit and lock it.
Prompt 4
I want to add a new user role to exaMath. Where in the codebase do I find the JWT authorization middleware to add a new role?
Prompt 5
Show me how to configure exaMath behind Nginx in production, including the nginx.conf settings needed.

Frequently asked questions

What is examath?

A self-hosted web app for construction contractors to manage projects, track expenses and timesheets, run payroll for office and field staff, and generate Schedules of Values.

What language is examath written in?

Mainly TypeScript. The stack also includes TypeScript, React, Express.js.

How hard is examath to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is examath for?

Mainly pm founder.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub ikantkode on gitmyhub

Verify against the repo before relying on details.