Lead Senior Mobile Developer

Job ID: 36537066

Budget: $250 – $750 USD

Here at DiviLabs, we’re passionate about bringing about the mass adoption of crypto. In order to accomplish this goal we’re looking to hire a Senior Mobile Developer with ample experience in bringing mobile apps to market, designing domain-driven architectures, and who is passionate about being an architect and leader of the overall infrastructure of our ambitious application! This project is intended to vault you to a lead developer position upon excelling at it. To let me know you read this entire thing, make your first sentence in your response tell me how you feel about bananas. I will reject applications that do not do this. Please DO NOT respond to this project if you are not interested in taking a position at Divi Labs as a Lead Mobile Developer. Also please do NOT respond to the project if you live outside of the GMT-4 to GMT-8 time zone range.

Job Evaluation project description.

Preferred language: Typescript when possible
Target code state: Tested and functional
Scope of work: Basic screen creation, navigation, API interaction, secrets handling,
error handling, themes, globals usage, microservices usage, logic.
Requirements: built in react Native, work in the simulator, show understanding of MVVM design patterns.

We will not be evaluating based on the graphic design of the app. However, it is difficult for us to respect entries that don't follow very basic GUI design practices.

BASIC SCREENS

‘Secret’s screen’
V0: Implement a toggle button that hides text behind ‘*’ when pressed and reveals it when pressed again - the text contents start out in the concealed state

V1: Gets the text content from an API displaying only in the concealed state, the acquired text overwrites any existing text. The request is mediated by pressing a button. (we will supply the API endpoints)
‘Secret guessing screen’: a dark red screen where the letters of the secret are randomly permuted into a false anagram and ask the user guesses it by typing it into a box. The order of the characters should be random but any whitespaces should retain their ordering in the character sequence.

an example:
the API might transmit "em axanelp", and the user would correctly guess "an example"

On a correct guess, the screen turns dark green and the user can only go back to the home screen, not try again

Bonus logic question: if the user’s guess fails to answer correctly, have them guess the secret with the furthest edit-distance to their guess

NAVIGATION
From the ‘Secret’s Screen’ we can navigate to the homescreen where we can save our secrets for the next time we load the application, the secret text should be accessible from all parts of the application and should default to the value last stored by the application - within 200ms of the last update. The value can only be displayed if it has been toggled as visible in the secrets screen.
‘Secret’ texts must be unique when stored.
Secrets texts are encrypted and never visible on startup
Selected secret if hidden, should render an additional button on the homescreen that navigates to the ‘Secret guessing screen’

API INTEGRATION
API returns 200 (with the false anagram in the body), 500, 404, 403, randomly generated 3-digit code below 505, at random. May or may not return valid data alongside it.

ERROR HANDLING
Received errors are responded to gracefully

ERROR LOGGING
The received errors are logged to a backend endpoint for error logs

STATUS HANDLING
Secrets returned come with a status field:
Newly requested, Waiting on randomness engine, Confirming entropy, Selecting random words, Practicing enunciation, Vocals checked, Failed enunciation, Refunding entropy (to the universe), Checking Grammar

THEME
Colors and designs are left open ended but should allow for customization according to requirements from the designer team.

EVALUATION:
The above criteria will be evaluated on the basis of integration with a test API, and any supplied documentation from the developer.