Zeus Manager mobile application solves the problem of digital organization for employees and managers primarily for restaurants, by offering features such as clocking in and our in specific restaurants, setting tasks for employees, requesting free days and much more.
Mobile application is written using React Native and Redux for state management, while the back end was done in Laravel and PostgreSQL. Our team consisted of React Native developer and Project Manager, while the back end was handled by the team from Spain - our team loved seeing all the española messages!
How it works?
Users are allowed to manage and work in multiple restaurants with their accounts. There are two roles: Managers and Employees. Employees are able to check in or out through an app, but only once they are phisically inside the restaurant where they work. Once checked in, they see a list of tasks that the manager had prepared for them previously.
Managers are able to create lists of tasks such as "Wash the dishes", "Peal the Potatoes" etc. Each of the tasks has status property, so the Manager can check what was done during the employee's shift. They can also organize shifts for employees, which are shown to employees so that they can plan their life according to the shifts.
Employees are also able to see information regarding vacations and days off, like how many days the have left or when were they on a leave. They can also request days off with explanations for their absence. Both sides can also manage contracts between them.
Notifications are included as well, for both managers and employees, both inside the app, and with push notifications, and they are used to notify users about payments, vacation statuses or tasks.
Solving the challenges
Interesting part about this project is that it uses multiple APIs, but not in the conventional micro-service kind of way. That posed unconventional technical challenge from our side where we least expected it - with authentication. Since user's could register into multiple portals within application, different APIs needed to be contacted, where we'd register on one API, then use generated auth token on different API, which then lets user into the system and creates initial data load that is necessary for application to start. Unconventional, but interesting!
Other interesting challenge was creating the clock in/out feature, because it needed a lot of validation during the process. First challenge was organising all the server requests, because the API was structured in such a way that we needed to make multiple calls in order to get all information. Second challenge was checking whether user was on the right location and also within his working hours in order to process check in. But the main challenge - the real one - was when user goes out of application for some time, and then comes back - data went out of sync, requests were made with the wrong data (or no data at all), which was of course breaking the app. Luckily, that was tediously solved with complex structure of promises.
Also, one of the last challenges was converting the time stamps to different time zones. Such checks were not done on the API, so the mobile app was only getting UTC time, which meant we had to convert to the appropriate time zones in order for employee's to see the right time and avoid coming to work at 3am.
Conclusion
Zeus Manager was definitely not among the most challenging apps ever - it's humble set of features is meant to solve specific use cases for specific people, but nonetheless, the project posed some interesting challenges that have made us scratch our heads, while not taking away the fun out of solving them - we're really happy that we've been a part of development journey of this product!