top of page

PackTrack - A Complete RDBMS System

Developing PackTrack was an intensive journey that tested my technical skills, problem-solving abilities, and perseverance at every step. From setting up the development environment to creating a full-fledged logistics management system, the process was a blend of learning, designing, and overcoming challenges.

The final product, a comprehensive package tracking and routing solution, is a testament to the effort and thought that went into every aspect of its creation.

The project began with setting up the development environment, which was an entirely new experience for me. As the system required integrating Django with MySQL, I had to configure MySQL on macOS using Homebrew. This process was not as straightforward as expected, as it involved resolving compatibility issues between different versions of Homebrew, Python, and Django. Once MySQL was installed, I configured the mysqlclient package to enable Django to communicate with the database, marking the first major milestone of the project.

Designing the database schema was the next critical step. The database needed to accommodate various entities such as customers, packages, warehouses, and transports, each with specific attributes and relationships. The schema also had to support the dynamic nature of package tracking, which required specialized tables like PackagesInSystem, PackagesInTransit, and PackagesDelivered.

These tables allowed clear segregation of package statuses, ensuring efficient data management and accurate tracking. Defining primary and foreign key constraints to maintain referential integrity was a meticulous process that laid a strong foundation for the system.

With the database schema in place, I moved on to the Django backend, where I translated the schema into Django models. This involved creating models for packages, customers, transports, warehouses, and the specialized tables for package tracking. I ensured that each model accurately represented the corresponding database table while supporting CRUD operations and maintaining data integrity.

The backend also included business logic to enforce operational rules, such as ensuring that packages could only be assigned to transports if their load did not exceed the transport's maximum capacity.

Implementing this logic required integrating Django views with MySQL triggers, a combination that automated validations and streamlined workflows.

Building the core features of PackTrack was an iterative process that focused on one user role or function at a time.

For customers, I created a package registration feature that automatically created entries in both the Package table and the PackagesInSystem table. This automation ensured that package data was duplicated across tables without manual intervention, maintaining a clear separation between template data and operational data.

For admins, I developed a route assignment feature that allowed assigning packages to specific routes—dispatch to warehouses, warehouse-to-warehouse transfers, or warehouse-to-delivery routes. The admin interface was designed to dynamically load data such as package lists, warehouse options, and transport details, making it user-friendly and efficient.

For transport drivers, I created a dedicated dashboard that displayed assigned routes and packages. The dashboard also included a "Complete Route" feature that allowed drivers to update the status of each package—delivered, damaged, or lost. Packages marked as delivered were moved to the PackagesDelivered table, while the route entry was archived for record-keeping. This feature ensured that the system maintained a comprehensive history of package movements, providing valuable insights for logistics operations.

The front-end of PackTrack was designed to provide a seamless user experience. Using Bootstrap for responsiveness and CSS for custom styling, I ensured that each page displayed data clearly and provided actionable buttons for transitions.

For example, dropdown menus dynamically populated based on database entries, such as available packages in the system or warehouse options. Success and error messages were displayed prominently to inform users of actions like invalid package assignments or successful route completions, enhancing usability.

Throughout the development process, I encountered several challenges that required innovative solutions. Synchronizing Django models with MySQL tables was a recurring issue, as migrations occasionally conflicted with the database schema.

Debugging errors such as missing columns, incorrect foreign key relationships, and mismatched data types improved my problem-solving skills and deepened my understanding of both Django and MySQL. Implementing real-time validations for transport load limits and ensuring smooth transitions between operational states—system, transit, and delivered—were particularly rewarding achievements.

The final product, PackTrack, offers a wide range of features. Customers can register packages with detailed attributes such as weight, dimensions, and locations. Admins can assign packages to specific routes, ensuring efficient logistics. Transport drivers have access to a dashboard where they can view assigned routes and update package statuses. Packages seamlessly transition between operational states—system, transit, and delivered—without manual updates. Additionally, triggers and validations enforce business rules, ensuring data consistency and operational reliability.

Developing PackTrack was a transformative experience that involved mastering tools and concepts across the software stack—Django, MySQL, and web development. By breaking down complex workflows into manageable modules and iterating on each feature, I built a system that efficiently handles the lifecycle of packages in a logistics ecosystem.

This project not only enhanced my technical skills but also taught me the value of structured design, collaborative feedback, and persistent problem-solving. PackTrack stands as a testament to the power of thoughtful planning and execution in creating a robust, user-friendly solution for logistics management.

You can access the final project report here: 

bottom of page