Skip to content
OnlyProjects
MCA · Web DevelopmentFor educational purposes only
Code included

Consignment Tracking and COD Remittance System for a Courier Franchise (React, Node.js, PostgreSQL)

Booking, zone-weight rating, AWB tracking, delivery run sheets and cash-on-delivery reconciliation for a tier-2 courier franchise

Mapped to your syllabusJNTUH MCA R22 · Project Work Review-III + Project Viva-Voce · Semester 4

Overview

1 min read

TrackParcel is a web application built for a fictional courier booking franchise in Suryapet, Telangana — an agent of a national courier network booking 120–180 consignments a day: documents, e-commerce returns and cash-on-delivery (COD) parcels. Today the work runs on a paper counterfoil book, a laminated rate card, a calculator and three Excel sheets — and the sheets are where the money leaks.

The system has four roles: the franchise manager, the counter clerk, the delivery agent and the accounts staff. The clerk books consignments with shipper, consignee, weight and dimensions, and the built-in rate engine computes freight automatically — service type, zone pair, 500-gram weight slabs, volumetric weight (L×B×H ÷ 5000), fuel surcharge, out-of-delivery-area (ODA) charges and the COD fee. Each booking mints a unique AWB number with a mod-7 check digit, so a mistyped number is caught before a parcel is misrouted.

The workflow side is where it earns its marks: consignments move through a scan-driven status chain (Booked → Picked up → In transit → Out for delivery → Delivered / Attempted → Returned to shipper), agents work from a daily delivery run sheet and record structured undelivered reasons, and every rupee of COD is tracked from collection to bank remittance with a daily shortage report — the reconciliation the franchise does nightly by hand. Account customers are billed monthly against their rate contracts. Built with React, Node.js/Express and PostgreSQL, it is a workflow-heavy JNTUH MCA R22 Semester-4 project with a defensible reason for every table.

Relevant for
Telangana
Level
Intermediate · 14 weeks · team of 2
Common at
Jawaharlal Nehru Technological University Hyderabad, Osmania University, IGNOU
Updated
Nov 2026

Syllabus alignment

JNTUH · MCA R22

Project Work Review-III + Project Viva-Voce · Semester 4 · 2 credits

Subjects this project applies
  • Full Stack Development (React front end, Node.js/Express API)
  • DBMS (relational design, SQL, transactions)
  • JavaScript (language across client and server)
  • Enterprise Cloud (deployment considerations)
How it is evaluated

See your department's project guidelines.

Also fits: Anna University MCA Regulation 2021, Osmania University 2-year MCA 2022-23, IGNOU MCA_NEW — MCSP-232 guidelines (2025).

What's in the box

11 parts · 5 free · 2 previewed · 4 unlock for ₹2,000

Problem & synopsis

6 min read

Problem statement

A tier-2 courier franchise books and delivers hundreds of consignments daily, but its own operations run on counterfoil books, a laminated rate card, phone calls to the hub and night-time cash tallies. Rating arithmetic — weight slabs, volumetric weight, zone pairs, fuel and ODA surcharges, COD fees — is done by hand, so quotes are inconsistent and undercharging is common. Consignment status is invisible locally, so the counter absorbs every customer call. The sharpest problem is cash: COD amounts collected by delivery agents are tallied against a notebook, and remittances are recorded as lump-sum bank deposits with no link to specific consignments, so a shortage surfaces days late, disputed and unproven. Account-customer bills are compiled manually from paper. There is a need for a role-based web application that rates bookings from a versioned rate table, issues check-digited AWB numbers, keeps an immutable scan history per consignment, structures delivery attempts and proofs of delivery, and reconciles every rupee of COD from collection to bank remittance — while storing no government identity numbers.

Synopsis

Abstract

This project delivers a consignment-booking, tracking and COD-reconciliation web application for a tier-2 courier franchise. Counter staff book consignments on a database-driven rate engine — weight slabs, volumetric weight, zone pairs, surcharges, COD fees — and every booking receives a check-digited AWB number. Scan events advance each consignment; delivery agents work from daily run sheets and record proof of delivery or structured undelivered reasons; the accounts module tracks COD collections per agent and reconciles them against bank remittances, producing a daily shortage report. Account customers are billed monthly. The stack is React, Node.js/Express and PostgreSQL.

Introduction

A courier franchise sits between two systems it does not control: the national network and its local customers. The network tracks parcels only after the hub; the franchise's own work — booking, rating, cash collection, remittance — happens before that, and that is where the paper lives. An e-commerce pickup of 60 COD parcels means ₹27,000 leaving in an agent's pocket; collected cash is known only by night-time counterfoil tallying. The project digitises precisely this local half of the business.

Existing System and Its Limitations

  • Bookings live in a counterfoil book; no structured copy exists.
  • Rates come from a laminated card; slab, volumetric and ODA arithmetic is manual, so quotes vary.
  • Status is known only by phoning the hub; the counter absorbs every customer call.
  • COD cash is tallied in a notebook; remittances are lump-sum bank deposits with no link to consignments.
  • Account bills are assembled from counterfoils at month-end and provoke disputes.
  • Limitations: no single source of truth, rating errors, untraceable COD leakage, no analytics.

Proposed System

  • Booking and rating: a versioned rate table by service type and zone pair — 500 g slabs, volumetric weight (÷5000), fuel surcharge, ODA flag, COD fee — effective-dated, so past bookings re-compute at their then-current rates.
  • AWB integrity: a sequence-backed generator with a mod-7 check digit and a unique index rejects duplicates and typos at entry.
  • Scan-driven tracking: every status change is a scan-event row with location, actor and timestamp; the tracking page renders this immutable history.
  • Run sheets and POD: the agent gets a daily run sheet; delivery records receiver name and an OTP proof; failed attempts record a structured reason, driving re-attempts and return-to-origin after the third failure.
  • COD ledger and reconciliation: collections accumulate per agent; each bank deposit references the entries it covers; the daily shortage (collected − remitted) is reported.
  • Account billing: per-account rate contracts, monthly invoices and CSV exports.

Feasibility Study

  • Technical: the open-source stack runs on a modest desktop; PostgreSQL transactions and unique indexes provide the AWB and COD guarantees.
  • Economic: zero licence cost; the system replaces nightly tallying and month-end bill assembly.
  • Operational: the clerk's screen mirrors the counterfoil, the run sheet prints A4, and training is a morning. Seed data with one deliberate remittance gap makes the viva demonstration realistic.

Objectives

  1. 01Design a normalised PostgreSQL schema (3NF) for shippers, consignments, rate tables, scan events, run sheets, COD remittances and account invoices with enforcement via constraints and unique indexes.
  2. 02Implement a versioned rate engine: service type, zone pair, 500 g weight slabs, volumetric weight (÷5000), fuel surcharge, ODA charges and COD fees, with effective dates so past bookings re-rate correctly.
  3. 03Generate unique AWB numbers from a transaction-safe sequence with a mod-7 check digit, rejecting mistyped or duplicate numbers at entry.
  4. 04Track consignments through a scan-event chain (booked, picked up, in transit, out for delivery, delivered, attempted, returned) with actor, location and timestamp per scan.
  5. 05Generate daily delivery run sheets per agent and capture proof of delivery (receiver name plus OTP) and structured undelivered reasons driving re-attempts and return-to-origin.
  6. 06Maintain an agent-wise COD ledger reconciled against bank remittances, with a daily shortage report and a full audit trail.
  7. 07Produce monthly account-customer invoices from rate contracts and role-specific dashboards with CSV exports.
  8. 08Enforce JWT-based role control for manager, clerk, agent and accounts staff, with all authorisation checks server-side.

Scope

In scope

  • One franchise location of a fictional national network, four roles (manager, counter clerk, delivery agent, accounts staff) and one seeded month of operations.
  • Booking with rate computation, AWB generation, scan-event tracking, run sheets, POD, undelivered handling, COD ledger and remittance reconciliation, account-customer billing and CSV reports.
  • Inward handling of hub returns (RTO) so returned parcels close the loop at the counter.

Out of scope (v1)

  • The network's own hub-to-hub linehaul tracking (the franchise records scans it can see; a network API is assumed for hub scans and simulated in the seed).
  • Payment-gateway or UPI collection of freight — payments are recorded with a reference number.
  • GPS tracking of agents and map-based routing; a customer mobile app (the tracking page is responsive instead).
  • Multi-franchise deployment and integration with the network's central billing system.
  • Storage of government identity numbers (Aadhaar, PAN) for KYC — shippers are referenced by name, phone and an internal code.

Methodology

The project follows an iterative and incremental SDLC model over 14 weeks, with a demo to the guide every two weeks. Rating and the COD ledger are built first because they carry the domain risk; the two-member team split the work as Member A (back end: rate engine, AWB, COD ledger, billing) and Member B (front end: booking screens, tracking, run sheets, dashboards), reviewing each other's modules.

PhaseWeeksActivitiesDeliverable
Requirements1–2Interview the franchise manager and a clerk; map the counterfoil, rate card and deposit-book workflow; SRS with functional and non-functional requirementsApproved synopsis + SRS
Design3ER diagram, DFDs, status state machine, rate-table design, REST contract, wireframesDesign document
Increment 14–5Auth and roles, shippers, rate table and engine, AWB generator, booking APIBooking + rating working
Increment 26–7Scan events, tracking page, undelivered reasons, RTO handlingTracking module
Increment 38–9Run sheets, POD (OTP), COD ledger, remittances, shortage reportCOD module
Increment 410Account contracts, monthly invoices, CSV exportsBilling module
Testing11–12Unit + integration tests, concurrency test on AWB, reconciliation edge cases, UATTest report
Hardening & docs13Role-abuse checks, backup/restore rehearsal, screenshotsSecurity + report draft
Review-III & viva prep14Final report, PPT, demo rehearsalFinal submission

Testing approach: Vitest unit tests for the rate engine (slab boundaries at exactly 500 g multiples, volumetric-vs-actual comparison, surcharge stacking), the check digit and the shortage computation; Supertest integration tests for booking, status transitions (illegal transitions rejected), OTP proof and remittance overlap cases; a concurrency test that fires parallel bookings to prove no duplicated AWB; black-box test-case tables per screen; and a user-acceptance walkthrough of one agent's day from run sheet to remittance.

Architecture & tech stack

4 diagrams · 8 technologies · 3 min read

  • React 18 (Vite)
  • Node.js 20 + Express
  • PostgreSQL 16
  • JWT authentication + bcrypt
  • Zod validation
  • Vitest + Supertest
  • Docker Compose
  • CSV exports

TrackParcel is a three-tier application with all business rules on the server.

  1. Presentation tier: a React SPA (Vite, Tailwind CSS) with role-aware routing — the clerk's booking console, the agent's run-sheet screen (mobile-first), the accounts officer's reconciliation view and the manager's dashboard all talk to one REST API. A public tracking page requires no login, only the AWB number.
  2. Application tier: Express routes pass through JWT verification and role middleware into services — the rate engine, the AWB generator, the status-transition guard, the run-sheet builder and the reconciliation job. Zod validates every payload before it touches SQL.
  3. Data tier: PostgreSQL with a strict schema: foreign keys, check constraints on states and amounts, and unique indexes where business rules must hold (one active run-sheet item per consignment, unique AWB, unique remittance-item pair). Rate tables are versioned with effective dates; scan events are append-only.
flowchart LR
  CL["Counter clerk"] -->|"booking forms"| API["Express REST API"]
  AG["Delivery agent (phone)"] -->|"run sheet, POD, COD handover"| API
  AC["Accounts staff"] -->|"remittances, billing"| API
  MG["Manager"] -->|"dashboards, rates"| API
  CU(["Customer (public)"]) -->|"AWB number"| TRK["Tracking page"]
  API --> MW["JWT verify + role middleware"]
  MW --> RE["Rate engine (versioned tables)"]
  MW --> AWB["AWB generator: sequence + mod-7 check digit"]
  MW --> SG["Status-transition guard"]
  SG --> SE[("scan_events: append-only")]
  RE --> PG[("PostgreSQL 16")]
  AWB --> PG
  SE --> PG
  MW --> COD["COD ledger + reconciliation job"]
  COD --> PG
  API --> CSV["CSV exports"]
  TRK --> SE

ER diagram (core entities)

erDiagram
  USER ||--o{ SCAN_EVENT : records
  SHIPPER ||--o{ CONSIGNMENT : sends
  CONSIGNMENT ||--o{ SCAN_EVENT : "has"
  CONSIGNMENT ||--o| DELIVERY_PROOF : "ends in"
  RUN_SHEET ||--o{ RUN_SHEET_ITEM : contains
  CONSIGNMENT ||--o| RUN_SHEET_ITEM : "appears on"
  CONSIGNMENT ||--o| COD_ENTRY : "may carry"
  COD_ENTRY ||--o| REMITTANCE_ITEM : "settled by"
  REMITTANCE ||--o{ REMITTANCE_ITEM : contains
  ACCOUNT_CUSTOMER ||--o{ CONSIGNMENT : books
  ACCOUNT_CUSTOMER ||--o{ INVOICE : "is billed"

  USER {
    string id PK
    string email UK
    string passwordHash
    string role
  }
  SHIPPER {
    string id PK
    string name
    string phone
    string internal_code UK
    boolean is_account
  }
  CONSIGNMENT {
    string id PK
    string awb UK
    string shipper_id FK
    string service_type
    string origin_zone
    string dest_zone
    decimal actual_weight_g
    decimal chargeable_weight_g
    decimal freight
    decimal cod_amount
    string status
  }
  SCAN_EVENT {
    string id PK
    string consignment_id FK
    string status
    string location
    datetime scanned_at
    string actor_id FK
  }
  RUN_SHEET {
    string id PK
    string agent_id FK
    date run_date
  }
  DELIVERY_PROOF {
    string consignment_id PK
    string receiver_name
    string otp_reference
    datetime delivered_at
  }
  COD_ENTRY {
    string consignment_id PK
    decimal collected_amount
    string agent_id FK
    string state
  }
  REMITTANCE {
    string id PK
    string agent_id FK
    date deposit_date
    decimal amount
    string bank_reference
  }
  REMITTANCE_ITEM {
    string remittance_id FK
    string cod_entry_id FK
  }
  INVOICE {
    string id PK
    string account_id FK
    string month
    decimal total
  }

Consignment status flow

flowchart TD
  B["Booked"] --> P["Picked up"]
  P --> T["In transit (hub scan)"]
  T --> OFD["Out for delivery"]
  OFD -->|"OTP verified"| D["Delivered + POD"]
  OFD -->|"reason recorded"| A1["Attempted 1"]
  A1 -->|"re-attempt"| OFD
  A1 --> A2["Attempted 2"]
  A2 -->|"re-attempt"| OFD
  A2 -->|"third failure"| RTO["Return to origin"]
  RTO --> RI["Returned to shipper (counter)"]
  D -->|"COD parcel"| CL["COD collected → ledger"]

DFD level 1

flowchart TD
  CL(["Clerk"]) --> P1["1.0 Book & rate consignment"]
  P1 <--> D1[("D1 Rate tables")]
  P1 <--> D2[("D2 Consignments")]
  AG(["Agent"]) --> P2["2.0 Execute run sheet & record POD"]
  P2 <--> D3[("D3 Scan events / proofs")]
  P2 --> P3["3.0 Record COD collection"]
  P3 <--> D4[("D4 COD entries")]
  AC(["Accounts"]) --> P4["4.0 Record bank remittance"]
  P4 <--> D5[("D5 Remittances")]
  D4 --> P5["5.0 Reconcile & report shortage"]
  D5 --> P5
  P5 --> MG(["Manager"])
  D2 --> P6["6.0 Build account invoices"]
  P6 --> D6[("D6 Invoices")]

Privacy is a stated design stance: shippers and consignees are stored by name, address and phone only — no Aadhaar, PAN or other government identity numbers — and the public tracking page exposes status and city, never the full address.

Modules

7 modules

  1. Module 01

    Authentication & Role Control

    JWT login with bcrypt-hashed passwords for manager, clerk, agent and accounts roles. Express middleware verifies the token and role on every protected route; the agent's phone session is scoped to run sheets and delivery actions only. A clerk calling the remittance endpoint gets 403 because enforcement is server-side, not in the React router.

  2. Module 02

    Booking & Rate Engine (Member A)

    The clerk enters shipper, consignee, service type, dimensions and weight; the engine computes chargeable weight as the greater of actual and volumetric weight (L×B×H ÷ 5000), then looks up base freight in the versioned rate table by service type and zone pair, adds 500-gram slabs, the fuel surcharge, ODA charges if flagged, and the COD fee (higher of flat ₹40 or 1.5%). Rates carry effective dates, so a December booking always shows December's rates.

  3. Module 03

    AWB Generator (Member A)

    AWB numbers come from a PostgreSQL sequence inside the same transaction as the booking insert, formatted as a 9-digit body plus a mod-7 check digit — the convention real courier networks use so a mistyped digit is caught on entry. A unique index makes duplicate AWBs impossible even under the parallel-booking concurrency test.

  4. Module 04

    Scan Events & Tracking (Member B)

    Every status change appends a scan-event row with status, location, actor and timestamp; illegal transitions (for example, Delivered straight from Booked) are rejected by a transition guard. The public tracking page and the counter's lookup screen render only this append-only history, which doubles as the audit trail when a customer disputes a delivery date.

  5. Module 05

    Run Sheets & Proof of Delivery (Member B)

    Each morning the agent's screen lists out-for-delivery consignments as a run sheet (printable A4 and mobile view). On delivery the agent enters receiver name plus an OTP shown to the receiver, stored as the POD; on failure a structured reason (not available, address incorrect, refused, COD declined) is recorded, driving re-attempts and automatic return-to-origin after the third attempt.

  6. Module 06

    COD Ledger & Remittance Reconciliation (Member A)

    Every COD delivery creates a collected entry against the agent; the accounts officer records a bank deposit as a remittance and ticks the collected entries it covers, enforced unique so one collection can never be remitted twice. The daily shortage report shows collected minus remitted per agent with item-level drill-down, which is the module the franchise manager cares about most.

  7. Module 07

    Account Billing & Reports (Members A & B)

    Account customers book under a per-account rate contract (fixed discount on the table rate); at month's end the billing job assembles an invoice with a consignment-wise annexure, and CSV exports cover the daily booking register, shortage report and dues. The manager's dashboard charts bookings per service type, delivery success rate per agent and COD ageing.

Slides

12 slides · titles free · bullets, notes and the .pptx unlock

  1. Slide 1

    TrackParcel — Consignment Tracking and COD Remittance System

  2. Slide 2

    Introduction: The Franchise's Half of the Job

  3. Slide 3

    Problem Statement

  4. Slide 4

    Existing vs Proposed System

  5. Slide 5

    Objectives

  6. Slide 6

    Technology Stack and Why

  7. Slide 7

    System Architecture

  8. Slide 8

    Rate Engine (Deep Dive)

  9. Slide 9

    AWB Integrity & Tracking Flow

  10. Slide 10

    COD Reconciliation (Deep Dive)

  11. Slide 11

    Testing

  12. Slide 12

    Conclusion & Future Scope

Bullets, speaker notes and the .pptx · ₹2,000

The titles above are the real outline. The rest is what you present from.

Unlock for ₹2,000

Viva questions & answers

3 of 17 answered free · 14 unlock

Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.

  1. 01Concept

    Why did you choose PostgreSQL over MongoDB for this system?

    The domain's hardest guarantees are relational: a unique AWB, a remittance item that can never be ticked twice, and the COD reconciliation which is a set of joins between collections and deposits. PostgreSQL gives transactions, foreign keys, check constraints and unique indexes for exactly these, whereas in a document store I would be rebuilding those guarantees in application code. The data is also strongly structured — rates, consignments, scans — not schema-flexible.

  2. 02Concept

    What is a check digit and why does your AWB use a mod-7 one?

    A check digit is an extra digit computed from the others so that single-digit typos and most transpositions are caught before the number is used. Real courier AWB formats use a mod-7 scheme: the 9-digit body is divided by 7 and the remainder becomes the tenth digit. Ours mirrors that convention, so a clerk or customer who mistypes an AWB gets an immediate rejection instead of a silent lookup of somebody else's parcel.

  3. 03Concept

    Explain volumetric weight and its role in your rating engine.

    Couriers sell space as much as weight, so light bulky parcels are charged by volume: volumetric weight equals length times breadth times height in centimetres divided by 5000, and the chargeable weight is the greater of actual and volumetric. My engine computes both at entry, uses the larger for slab lookup, and stores both figures on the consignment so the bill can always be justified in a customer dispute.

+14 more questions, with answers

Try the free ones out loud first. Your examiner will not accept “it's in the PPT”.

Source code & how to run

8 steps · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

8 steps · source code zip

Prerequisites, install, seed data and tests, written for demo day. Plus the complete source.

Unlock for ₹2,000

READMEFIRST

301 words · unlocks with the project

What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.

Unlocks with the project · ₹2,000

301 words · ~2 min read

The checklist of things to rename, re-seed and re-think so the project reads as yours.

Unlock for ₹2,000

Instructions

384 words · unlocks with the project

How to study it, adapt it and walk your examiner through it, step by step.

Unlocks with the project · ₹2,000

384 words · ~2 min read

Report structure, formatting rules and the submission checklist your department will grade.

Unlock for ₹2,000

References

8 sources

  1. React Documentation
  2. Express — Node.js web application framework documentation
  3. PostgreSQL 16 Documentation
  4. India Post — official portal with consignment tracking (domain reference for tracking workflows)
  5. OWASP Top 10 — Web Application Security Risks
  6. RFC 7519 — JSON Web Token (JWT), RFC Editor
  7. Ramez Elmasri & Shamkant B. Navathe, Fundamentals of Database Systems, 7th ed., Pearson
  8. Ian Sommerville, Software Engineering, 10th ed., Pearson

Cite this bundle

OnlyProjects. (2026). Consignment Tracking and COD Remittance System for a Courier Franchise (React, Node.js, PostgreSQL): MCA Web Development project bundle [Educational resource]. https://onlyprojects.online/projects/mca-web-courier-consignment-tracking-cod-remittance

Future scope

1 min read

  • UPI collection of freight and COD through a payment-gateway sandbox, collapsing the cash-handling problem the COD ledger manages by hand.
  • Customer self-service portal for account shippers: bulk CSV booking, label printing and invoice download.
  • Network hub API integration (or a queue-based simulator) so hub scans arrive without manual entry.
  • Agent route planning on the run sheet with stop ordering and distance-based ODA validation.
  • Analytics: service-type-wise profitability, delivery-success trends per area, and rate-simulation what-ifs before a network revises its tariff.
  • WhatsApp status notifications triggered by scan events, with delivery OTP sent to the consignee's phone.

Keep browsing

Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.