Stacker
Save your time
The problem Stacker solves
In places like small barbershops, beauty parlors, and OPD clinics, people often have to sit and wait for a long time to get their turn. The situation becomes even more chaotic during rush hours and festivals.
We introduce Stacker—an app for booking appointments. Any user on the app can create a "stack," which represents an entity or shop on the app. It can take bookings from other users who join the stack. The app assigns a token to the user and, based on the average duration of one booking (provided by the creator of the stack), suggests a time when the least amount of crowd is expected. This essentially digitizes the token system commonly used by OPD clinics and creates a standardized way for other service-based businesses (like barbershops and boutiques) to take bookings uniformly, reducing chaos in shops.
The app can also be extended to highway-side restaurants and dhabas, which often experience large crowds. Features like live location tracking can be added, allowing users to find stacks near them and join them. This way, if a user decides to book a restaurant or dhaba while traveling, they can book it in advance—say, 30 minutes before arriving—so they can walk in and get seated easily.
Challenges I ran into
Creating the 'book-now' function
This function essentially creates a booking within a stack. It required multiple validations, such as checking if the stack is open or closed, whether there are other tokens for the day, or if it's the first token of the day. Additionally, the function needed to provide users with an estimated time when the stack/shop is expected to have the least crowd. The calculation for this was complex, and I encountered many bugs. The most frustrating part was converting between Postgres database datetime objects and TypeScript date objects.
Updating local stack values along with online records
Whenever a change occurred in any stack (such as opening/closing the stack or changing the current token), both its local object and database record had to be updated accordingly and displayed to the user. A recurring widget error kept surfacing, which was difficult to debug.
Tracks Applied (3)
Open Track - Development
Freshman
Open Track - App Development
Technologies used
