![Shipment Tracker dashboard in dark mode. Left sidebar shows user email and navigation options. Main area displays tracked packages (Elephant, Air Pods, Shoes) with delivery status and location maps centered on Eugene, Oregon.](/_next/image?url=%2Fprojects%2Fshipment-tracker%2Fdashboard.webp&w=3840&q=75)
![Shipment Tracker detailed view for 'iPhone' package. Shows US map with package route from California to Oregon. Transit history timeline indicates completed delivery, with updates listing delivery steps in Eugene, OR on 04/09/2024.](/_next/image?url=%2Fprojects%2Fshipment-tracker%2Fmap.webp&w=3840&q=75)
![Shipment Tracker detail view for 'Shoes' package. Shows expected delivery date of 08/02/2024 and transit history timeline. FedEx tracking updates listed, including current status 'On FedEx vehicle for delivery' in Eugene, OR.](/_next/image?url=%2Fprojects%2Fshipment-tracker%2Ftracking.webp&w=3840&q=75)
![Shipment Tracker 'Add Package' modal. Form includes fields for package name, tracking number, and courier selection. 'Add' and 'Cancel' buttons at the bottom.](/_next/image?url=%2Fprojects%2Fshipment-tracker%2Fadd.webp&w=3840&q=75)
Project Overview
Shipment Tracker was created as part of my coursework in CS361 to address the challenges of tracking multiple shipments from different couriers.
ItItprovidesprovidesaaunifiedunifiedplatformplatformtotomonitormonitorthethestatusstatusandandjourneyjourneyofofpackages,packages,offeringofferingfeaturesfeaturessuchsuchasasreal-timereal-timeupdatesupdatesandandaauser-friendlyuser-friendlyinterface.interface.
Development
The development process involved extensive use of React for the frontend and Node.js for the backend, incorporating various state management techniques to handle asynchronous data fetching and UI updates. The project emphasized clean code practices, although some functions were necessarily lengthy due to complex logic for handling HTTP requests and state updates.
Challenges and Solutions
During development, one of the main challenges was managing asynchronous state updates in React, which led to issues with state desynchronization. To address this, I opted to keep some functions longer for better control over state management. Additionally, the CSS codebase grew large due to the custom styling required for the application's unique components.
Lessons Learned
Through this project, I gained valuable experience in handling asynchronous operations in React and managing complex state changes. I also learned the importance of modularizing CSS for maintainability and the challenges associated with handling large codebases.
Future Improvements
Future improvements for Shipment Tracker include modularizing the SCSS for better maintainability, optimizing the state management logic to reduce function lengths, and enhancing the mobile responsiveness of the application.
Reflection on Agile Development
Agile methodology was instrumental in the development of Shipment Tracker, allowing for quick pivots and iterative improvements. This approach was particularly beneficial given the project's dynamic requirements and the need for rapid adjustments.
frontend
React
Framer Motion
Google Maps
backend
Node
Express
MongoDB
testing
Jest
tools
VS Code
GitHub
NPM
ESLint
Prettier
Analytics
- 00