Obsessive placement

After the huge success of our best-ever-pokedex application, in 2019 we have grown from a small startup into a full-blown company! We'd like to handle the working hours, and also people's sitting places in an agile way. It means that no-one has his or her own desk, everyone can choose where he / she wants to sit for a day. Home office is also available for everyone, no restriction there.

For this, we'd need the help of a custom application!

Feature requirements:

Feature 1: The application should support 2 types of users: admin and employee. ( No need for any authentication or authorization, 2 login button would suffice without any validation. )

The admin can...

Feature 2: set the number of work desks with the number of available chairs at each one of them

Feature 3: lock / unlock some places temporarily ( no employee can choose that place until it is open again )

Feature 4: can disable home office for special days ( On that day no employee can choose home office as an option. The app can represent the home office as a separate table . )

Feature 5: set special events for days where we will have a huge meeting. The logged in employee should see a notification with a custom message on that day. ( This doesn't mean any other restrictions. )

The employee user can...

Feature 6: choose a sitting place ( if it is open and not locked ) or home office

Feature 7: see the current state of the office, the current date, and the notification of the day if there is one.

Feature 8: can see the history of he last 3 days of the company ( to test this easily, the app should provide the option to set the current date before logging in with a user )

The app should...

Feature 9: store everything in a permanent way ( You can use any data persistence technology. )

Feature 10: work with multiple clients simultaneously. We'd like to see as 2 employees are logged in, and both can use the app in a deterministic way. We don't want to see the changes in real time, but the backend should prevent conflicting cases.

Feature 11: show the current locked and chosen places in a nice, aesthetic way. A list with a submit form could be enough, but in User Experience point fo view, we would like to see a nice visual representation.

Tech stack:

No restriction there. You can use any framework, any language, any library, and can be run on any platform, as long as your app can provide these features.

( To be able to run on multiple platforms is not a requirement. )

api agile order

Criteria

  • The app exists, I can log in with both users and can see at least a title.
  • 1 point
  • The admin user can log in, see and set the number of desks / chairs, can enable / disable the Home office as an option, and set the message of the day, if there should be any.
  • 1 point
  • The employee users can see the results of these settings, which are stored in a permanent way. ( The settings can be loaded after the app have been completely closed / shut down and started again. )
  • 2 points
  • The logged in employee user can choose his / her chair / HO ( if it is available ).
  • 1 point
  • The app can work with multiple clients simultaneously.
  • 2 points
  • This part is a bit subjective. We want this app to be a huge success in our office. For that the UX design must be on point. The app should have a nice look-and-feel, it should be nicely structured. The available features must be clear and easy to use.
  • 3 points

Submission

Because we do not restrict your API or anything tech related, there will be only manual tests during the feature acceptance by us. You can show your solution on your own device(s), you don't have to deploy it anywhere.