This repository contains the instruction and codebase for an interview task at flowkey.
If anything is unclear, don’t hesitate to ask - we’re here to help!
Please copy this codebase to a private repo on your Github account by clicking Use this template on GitHub, or by cloning it manually (don't create a fork!)
- Record a sequence of keys played on the Piano
- Ideally recording would be started/stopped via button in the UI
- Play back the sequence you recorded
- Consider correct timing
- Consider polyphony (recording and playing back chords should work, e.g. via hotkeys on the computer's keyboard)
- Save the recorded sequence to the server (which persists the data in the DB)
- Prompt the user for the recorded song's title before saving.
- Retrieve a list of recordings from the server, and allow them to be played back on the client.
- Add a Play button for each recording
Since our pair programming session is limited in time, don't be discouraged if you don't get to finish everything. That's normal!
If you get totally stuck, consider moving on to a part you feel more familiar with. We're most interested in how you think (and how you communicate your thoughts), and how comfortable you are with the tech stack.
Here is a simple example of what the UI could look like:
IMPORTANT: The above is not a design blueprint, just an example!
- Focus on simplicity as much as possible
- Storing the recordings in an appropriate data structure will help you a lot
- Use the server to store and retrieve songs
The codebase consists of:
- a server based on Apollo
- a minimal React client based on the react-piano package
- a minimal Swift UI client
Basic info and instructions to run can be found in the respective READMEs for each of the parts.