Skip to main content

Schema Overview

Tonnex uses Drizzle ORM for type-safe database access. All schemas live in packages/db/src/schema/.

Schema Files

FileEntities
auth.tsprofiles, organizations, org_memberships
locations.tsregions, locations, godowns, warehouse_tenancy
vehicles.tsvehicles, vehicle_leases, vehicle_loans, vehicle_transfers
trips.tstrips, trip_crew, sub_contracted_trips
clients.tsclients, client_delivery_points, client_pricing
hr.tspersons, person_designations, attendance
payroll.tspay_structures, payroll_entries
invoicing.tsinvoices, invoice_line_items, credit_notes
rbac.tspermissions, roles, role_permissions, user_role_assignments
audit.tsaudit_logs

Conventions

  • Table names: snake_case (plural)
  • Column names: snake_case in DB, camelCase in TypeScript
  • Every table has org_id (except system tables)
  • Primary keys: UUID with defaultRandom()
  • Timestamps: created_at and updated_at with timezone

Running Migrations

pnpm db:generate   # Generate SQL from schema changes
pnpm db:push       # Push schema directly (development)
pnpm db:migrate    # Apply migrations (production)
pnpm db:studio     # Open Drizzle Studio