Test assignment for the next key
software engineer in Mobi Lab

We appreciate your interest in becoming a member of the Mobi Lab team, and congratulations on reaching that far. Your next assignment is to make a mobile application according to the following description.

Steps to success

01

Please read the page till the end

02

Make a plan and send us an e-mail with the date

03

Send the results

04

Wait for the invitation

05

Get feedback from senior software developers from Mobi Lab.

06

Join the team!

Be mindful that we will not just evaluate the code and execution of the application but also other parts necessary in a software project (tests, documentation, tool usage, handover ease, packaging, etc).

The goal of the application

Please develop a simple shopping list application. The goal of the application is to make everyday shopping easier by enabling the user to list down items to buy. While shopping, the application should also help track items that are already collected and make sure the user does not forget anything.

Non-functional requirements

Please pick only one of the following options as the platform (If you applied to work specifically on one of these platforms, then please prefer the one your future job is about):

  • Native Android application. Prefer Kotlin. Java is also fantastic, but explain why if you decide to use it.
  • Native iOS application. Please use Swift.
  • Flutter Android and iOS applications. It is great if the application works on both platforms, but let us know if you tested with one platform.
  • React-Native Android and iOS applications. It is great if the application works on both platforms, but let us know if you tested with one platform. Do not use Expo (https://expo.io).
  • Kotlin (or Java) + Spring web application. The front end should be mobile-friendly.

All source code and documentation must be committed to a Git repository from the beginning when you start coding.

The data should be stored in the cloud. RESTful API should be used to access and update it. Use Firebase Database REST API if possible. Or a similar alternative if not.

The code should have test coverage. Use unit tests, instrumentation unit tests and UI tests as you feel is appropriate for your project.

The project should have a readme in Markdown. The readme should contain information on:

  • The goal of the application.
  • How to compile and run the application.
  • How to run tests for the application.
  • A few sentences about the overall architecture of the application.
  • Any other instructions and notes you have

Optional: Feel free to use a CI tool (the likes of Codemagic or BuddyBuild) during development. If you do then please give us access to that as well.

Functional requirements

  • Add items into a list.
  • Delete items from a list.
  • Check and uncheck items within a list.
  • Share the cloud-stored data between application installs/instances.

No need for user account support – just make the same data available for each install/device running the application.
Optional: To make the application more usable, you may add more functionality (e.g. multiple item-list support; item name autocompletion based on previous item names; etc.)

Estimation

Please start by giving us your estimation of how much time it would take to complete the assignment and by what time you can share the source code with us.

If development takes longer than expected, do not put more than five man-days (40 hours) on the test assignment. Just send us what you have achieved so far.

Handover

When sharing the application with us, please give us the link to the Git repository and any specific test accounts (if something like that is required).

Good luck!

Veiko Raime
CEO
veiko.raime@lab.mobi