-
-
Client A has 3 unscheduled orders
-
Client A picks a store
-
Client A then schedules the order from the available times
-
Client A finally choose an available parking lot
-
Client A's package is scheduled, new dashboard view
-
Client B cannot schedule at same store/time/parking lot, so no conflict!
-
Login: enter email
-
Multifactor auth : code received
! Presentation !
Note Our demo video is a bit long, so we provided pictures that illustrate a step by step of the user story "Client A wants to schedule a package pickup".
We worked really hard on this project! Please reach us out if you have more questions!
Teammates
- Shadi (Shadi#5883 on discord and shadijiha on github)
- Noah (eyeshield2110 on github)
User and System functionalities
We have implemented a(n):
- Multi-factor authentication feature that allow a user (customer or administrator) to login and view/edit their orders
- Authentication is saved in cookies (expires after 24h), so that user can stay logged in after closing and reopening tabs/browser.
- Scheduler that displays available time and pickup locations, and takes in account other scheduling to avoid conflicts and the package size.
- Administrator dashboard (accessible with admin email and verification code) that displays orders from every customers, as fetched from the SAP api
- A database running on our server that caches previously accessed data from the SAP api. This allows for faster lookup time and improves performance of the service.
Challenges we ran into
Although the user interface looks deceptively minimalistic, the implementation of the backend was no easy feat! For instance:
- As the SAP api provided did not include a way to filter out the orders by client, we needed to process all the orders and write our own API (which queries the live SAP api and caches it) to return only the orders of the specific customer logged in. We achieve this by using cookies to identify the correct user requesting the see our orders route.
- As mentioned in the first point, our frontend needed to data to be organized certain ways that was not provided by the SAP api, so we had to model new entities with our database and api: users, orders, employees, stores, pickup locations, and schedules! The modelling of many-to-many relationship and entities like schedules was very difficult but necessary to solve the problem of employees scheduling conflicts.
- The cookie authentication was especially tricky: during development, we have a live server running for every team members, but the CORS policies prevented cookies to be properly sent to some of us and blocked us from viewing items as a logged in user
- We also wanted to use a map api like Google Maps to enhance the pickup location function, however, we did not find an API that was both free nor easy to use in time.
Accomplishments
In 24h, we created a completely functional eCommerce Web Service that would normally take a team of engineers weeks to deliver, let prototype. We are very proud!
What's next for eCommerce Pickup Service Scheduler
Nice features to add:
- Sending a confirmation of pickup by SMS when the package has been "delivered"
- Adding more items to the administrator board, such as a list employees and stores lists
- Adding a map api to suggest pickup location near the customer physical address
- Solve race condition when 2+ people selects a same time/location option at the same time
Built With
- chakra
- mysql
- nestjs
- nextjs
- react
- sap
- swaggerui
- twilio
- typescript
Log in or sign up for Devpost to join the conversation.