Challenge Overview
We are seeking a strong co-pilot, who can demonstrate a convincing approach to achieve the following Product:
Assumptions:
- Wireframes and Designs would be provided, this Project would begin with Development (Assembly/Code Challenges).
- WSDL for backend Services would be provided, and most are available, will have support if we need mobile optimized services.
Requirements:
We want to build an IOS app (purely built using Swift) to clock in/out time and will be used by Employees and Supervisors (2 types of end users), to execute on the use cases. Following are the requirements :
- (Employee / Supervisor) - Authenticate via MDM - As a user if I am already authenticated on my device via my corporate's email info using MDM, then I shall be auto authenticated using that info on the mobile app such that I don't have to re-enter my authentication credentials.
- (Employee / Supervisor) - Authenticate via Touch ID - As a user, if I have already configured touch ID on the device, then I shall be able to use touch ID to authenticate on the mobile app.
- (Employee / Supervisor) - Touch ID setup - If the mobile app is not able to use the MDM authentication credentials or if the user has not yet set up touch ID, then the user shall be presented with a first time authentication screen where the user is given the option to set up touch ID or login to through the corporate MDM Auth.
- (Employee / Supervisor) - Logout - As a user, I shall have a way to logout of the app.
- (Employee) - Clock IN, Break, Clock OUT based on last state (online or offline) - As an employee, I shall be able to clock in when I begin work, take a break and clock out. Only the actions I can perform next based on my previous action shall be displayed to me. (ex: If I already clocked in, don't show me a clock in button again). I shall be able to clock in even when the device has no network coverage or even if the backend server is down.
- (Employee) - Running total of daily work hours and break hours - As an employee, I shall be able to track the total time I spent working and total time I spent on breaks.
- (Employee) - Elapsed break time - As an employee, when I go on a break, I shall be able to see how much time I have spent so far on the break.
- (Employee) - Handle forgot to punch - As an employee if I forget to clock in or make a mistake when I clock in, I shall have a way to correct my mistake and provide a reason to my Supervisor. Since "I forgot to clock in/out" is a common reason, the app shall pre-fill the comment when I try to add a new punch or correct an existing punch.
- (Employee) -View total hours worked based on pay period - As an employee, I shall be able to view the total hours worked based on my pay period. I shall be able to see a break down of regular hours, overtime hours and break hours along with my gross pay.
- (Employee) - Auto submit timesheet - The timesheets shall be auto-submitted at the end of the pay period based on the settings saved by the Admin on the server.
- (Employee) - Daily Clock out reminder - If the employee has not clocked out Y minutes after the work segment length, send a notification to the user reminding to clock out. "Don't forget to Clock Out. [Clock Out] [Cancel]"
- (Employee) - End of pay period clock out reminder - If the employee has not clocked out X minutes before the auto submission of timesheets, a notification reminding the user to clock out shall be displayed. "Don't forget to Clock Out. [Clock Out] [Cancel]"
- (Employee / Supervisor) -Settings - reset password + settings changes - As a user I shall have a way to reset my password. I shall also be able to change my preference settings for date format, time format etc. The default settings saved for my profile on the server shall be shown in the settings page.
- (Supervisor) - Who's in/out - As a Supervisor, I would like to know the latest status of my employees. Who has clocked in, who is on break and who is out. I would like to see this shown as a productivity trend for the day.
- (Supervisor) - View & correct punches - As a Supervisor, I need to be able to view my employee punches for each pay period along with total times worked based on pay categories (ex: regular time, over time, etc.) and correct punches (add/modify/delete). I shall optionally be able to add a reason why the correction was needed.
- (Supervisor) - Approve timesheets based on pay period. - As a Supervisor, I shall be able to approve my employee work hours for each pay period. If there is any items that requires special attention (ex: Missing punches, edited punches etc.), I shall be able to identify those when approving the hours worked for each pay period.
- (Supervisor) - Notification for approvals - As a Supervisor, I would like to be notified when I have pending approvals.
Submission:
What I want as your submission to this challenge?
- A brief background of what prior Swift IOS experience you have. (Apps built, Challenges/Projects managed or participated with).
- A Gameplan for the above high level requirements
- Any creative suggestions on timelines (Aggressive - What can be done within 1 month, Standard - What is the ideal timeframe to accomplish this given the assumptions shared above.)