Complete project lifecycle from creation through WBS breakdown, activity scheduling, milestones, daily progress reporting, and site diary management.
InfraTraq Project Management provides a hierarchical Work Breakdown Structure (WBS) approach to manage construction projects. Projects are decomposed into WBS elements, activities, and milestones. Daily Progress Reports (DPR) capture manpower, equipment, and activity progress. Site diaries record weather, visitors, and site events. Baselines enable schedule variance tracking.
| Status | Description | Allowed Actions | Next States |
|---|---|---|---|
| Planning | Project created, WBS being defined | Edit WBS, Add Activities | Active |
| Pending Approval | Awaiting management approval | Approve, Reject, Return | Active, Rejected |
| Active | Project in execution phase | Log DPR, Update Progress | On Hold, Completed |
| On Hold | Project temporarily suspended | Resume, Close | Active, Closed |
| Completed | All milestones achieved, handover done | Generate Reports, Archive | Closed |
| Closed | Final closure with documentation | View, Audit | — |
| Cancelled | Project abandoned | View, Audit | — |
Roads, bridges, tunnels, railways — linear construction with chainage-based progress tracking.
Residential, commercial, institutional — floor/zone-based WBS with finishing milestones.
Refineries, power plants, factories — discipline-based WBS with commissioning phases.
Water treatment, pipelines, sewage — network-based tracking with hydraulic testing milestones.
project_id — PK, unique project identifiertenant_id — FK → organization.tenantentity_id — FK → organization.company_entityproject_code, project_name — Unique code and display nameclient_id, contract_id — FK references to client and contractstart_date, end_date, status — Schedule and lifecycle statebudget_amount, currency — Approved budget ceilingwbs_id — PK, WBS element identifierproject_id — FK → project.projectparent_wbs_id — FK → self (hierarchical tree)wbs_code, wbs_name — WBS numbering (e.g., 1.2.3)level, sort_order — Hierarchy depth and display orderplanned_start, planned_end — Scheduled datesweight_pct — Percentage weight for progress rollupactivity_id — PKwbs_id — FK → project.wbsactivity_code, description — Activity identifier and detailsplanned_qty, actual_qty, uom — Quantity trackingduration_days, predecessors — Scheduling with dependenciespercent_complete — Auto-calculated from DPR entriesmilestone_id — PKproject_id — FK → project.projectmilestone_name, planned_date, actual_date — Tracking key datesis_contractual — Marks milestones with LD implicationsstatus — Achieved / Pending / Delayeddpr_id — PK, daily progress report headerproject_id, dpr_date — One DPR per project per dayweather, temperature, rainfall — Site conditionsprepared_by, approved_by — Workflow trackingremarks, safety_incidents — Free-text observationsbaseline_id — PKproject_id — FK → project.projectbaseline_number, baseline_date — Version trackingis_current — Only one active baseline per projectsnapshot_json — Full WBS/activity snapshot for variance analysisProject Manager creates project with basic details, client reference, contract linkage, and budget allocation. System generates unique project code per tenant naming convention.
Break down project scope into hierarchical WBS elements (max 5 levels). Each WBS node gets a weight percentage for progress rollup. Total weight at each level must sum to 100%.
Define activities under leaf WBS nodes with planned quantities, durations, and predecessor dependencies. Link activities to BOQ items for cost tracking.
Create contractual and internal milestones with planned dates. Contractual milestones trigger LD calculations when delayed. Internal milestones drive dashboard alerts.
Site engineers submit DPR daily with manpower deployed, equipment used, activity progress (qty completed), weather conditions, and safety observations. System auto-calculates percent complete.
Freeze current schedule as a numbered baseline. Compare actuals against baseline for SPI/CPI calculations. Re-baseline requires approval from Project Director.
-- Weighted progress rollup from activities to WBS WITH activity_progress AS ( SELECT w.wbs_id, w.parent_wbs_id, w.weight_pct, COALESCE(AVG(a.percent_complete), 0) AS avg_progress FROM project.wbs w LEFT JOIN project.activity a ON a.wbs_id = w.wbs_id GROUP BY w.wbs_id ) SELECT wbs_id, SUM(avg_progress * weight_pct / 100) AS weighted_progress FROM activity_progress GROUP BY parent_wbs_id;
-- Daily progress summary for project dashboard SELECT d.dpr_date, d.weather, COUNT(DISTINCT dm.worker_id) AS manpower_count, COUNT(DISTINCT de.equipment_id) AS equipment_count, SUM(da.qty_today) AS total_qty_done FROM project.dpr d LEFT JOIN project.dpr_manpower dm ON dm.dpr_id = d.dpr_id LEFT JOIN project.dpr_equipment de ON de.dpr_id = d.dpr_id LEFT JOIN project.dpr_activity da ON da.dpr_id = d.dpr_id WHERE d.project_id = :project_id ORDER BY d.dpr_date DESC;