PickMeUp is a delivery tracking web-app meant to help users easily track their parcels.
This delivery app comes with the following features:
- Authentication: From a list of 5 customers and 10 delivery personnel. The username and passwords are as below:
Username | Password | Role |
---|---|---|
customer1 | 123456789 | Customer |
customer3 | 123456789 | Customer |
customer4 | 123456789 | Customer |
customer5 | 123456789 | Customer |
customer6 | 123456789 | Customer |
delivery1 | 123456789 | Delivery Guy |
delivery2 | 123456789 | Delivery Guy |
delivery3 | 123456789 | Delivery Guy |
delivery4 | 123456789 | Delivery Guy |
delivery5 | 123456789 | Delivery Guy |
delivery6 | 123456789 | Delivery Guy |
delivery7 | 123456789 | Delivery Guy |
delivery8 | 123456789 | Delivery Guy |
delivery9 | 123456789 | Delivery Guy |
delivery10 | 123456789 | Delivery Guy |
-
Create a Pickup Request: When logged in as a customer, user can schedule a pickup request. The only desired inputs are the source and destination address.
-
Self-assigning a pickup request: When logged in as a delivery guy, the scheduled pickups from customer awaiting assignee can be viewed and the user can self-assign a parcel by a simple click.
-
Live-Tracking: The status of the parcel can be tracked with real time status updates by users - both customer and delivery guy. The key point worth noting is that live updates are provided until the parcel is in-transit. Once delivered, the request is removed from the dashboard and the sae can be viewed in completed orders/ order history.
-
History: Both delivery folks and customers can view their successfully delivered orders.
-
Logout: Logs users out of the app
-
Responsive Design: The app can be used on bith mobile devices and desktops alike.
The lifecycle of a parcel can be summed up as:
- Pending: The nascent state of a parcel request
- Assigned: When a delivery executive assigns a request to him/herself
- In-Transit: WHen the parcel has been collected from pickupAddress and moves towards destination
- Delivered: Has reached the final destination.
To get started with the application, follow these simple steps:
- Checkout this repository
git clone https://github.com/this-is-pankaj/pickMeUp.git
- Install all of the package dependencies
npm install
- Run the application
npm run start
This should spin up a server on port 3000 and even bundle the front-end. Open up http://localhost:3000
to experience the app.
The application is just a POC and the scope of implementations are limited.
- Data is not persistent. So you will lose all sample pickups and updates once you restart the server.
- Token exchange is done as a POC to make authentication applicable on APIs and not with JWT or Bearer tokens. These tokens don't expire as long as you don't restart the server.
- Validations on form fields have not been implemented. All text fields are free flowing but expects inputs for smooth operation.
- Some URL's like About, Contact, Help, etc won't work and have been put in place to showcase the use of 404 pages.
- Real time feed is only available on dashboard for now. For all other sections refresh the page to see updated values.
The web-app is build using:
- ReactJS: Client side
- Express: Server Side Routes