Kotlin Developer Bonprix - aacml/Recruiting GitHub Wiki
We have created a small technical challenge for you to showcase how you work.
You are building a Kotlin Multiplatform library for Bonprix's digital wardrobe app. The library should fetch a list of wardrobe items from a JSON-based API and provide a Kotlin API for a hypothetical Android and iOS application. Your library should include the functionality to fetch and filter by color and category.
This challenge is designed to showcase your Kotlin expertise, your understanding of KMP, and your ability to structure code and use the Kotlin ecosystem effectively.
Requirements
You'll build a Kotlin Multiplatform library that:
- Uses Ktor (Client) to fetch wardrobe items from a remote JSON API
- Allows filtering by category and color
- Shows "compatible items" (e.g., "Oversized Hoodie" goes well with "Jeans")
- Figure out a way to test the library without it being integrated into the applications
- e.g., printing the output or using a small Compose Multiplatform app
API Endpoint
The API endpoint for the wardrobe items is https://assets.www.bonprix.com/codingchallenge/wardrobe.json
.
It returns a JSON array with the following structure:
[
{
"id": 1,
"name": "Cotton T-Shirt",
"category": "Top",
"color": "White",
"material": "Cotton",
"compatibleWith": [
"Jeans",
"Shorts",
"Skirt"
]
},
{
"id": 2,
"name": "Denim Jacket",
"category": "Jacket",
"color": "Blue",
"material": "Denim",
"compatibleWith": [
"Top",
"Dress"
]
}
]
Discussion Topics
We also want to discuss in the next interview some of these topics to get a better understanding of your problem-solving approach and to give you better feedback:
- Code architecture decisions
- How the API calls are handled and how data models are structured
- Code testability and maintainability
- How to make the codebase scalable for real-world use
- How would you handle errors in the library?
Additional Information
We like git. So feel free to use commits to show the approach you took and to send us the link to your git repository on GitHub, Bitbucket, etc. or send us the project as a zipped archive.
We understand that you’ve probably got a full-time job and a personal life. Finishing the above challenge should definitely be doable in a couple of hours.
If you have any questions, email us and we can add it to this task.
Good luck!