This is a Next.js project bootstrapped with create-next-app.
Welcome to the &why Coding Challenge 👋 To get started:
- Install the packages with
pnpm installornpm install - Run the development server with
pnpm run devornpm run dev - Open http://localhost:3000 with your browser to see the result.
- You can start editing the page by modifying
app/page.tsx. The page auto-updates as you edit the file. - Create a feature branch where you work and commit your changes.
(You can also use other package manager if you like)
Goal of this challenge is to get an impression of how you approach interaction and user experience.
-
The task is open-ended and there's no need to finish everything. Just show us what you achieved within the given time.
-
Usage of AI coding assistants is okay, but make sure to have an understanding of all code you commit.
-
After the coding time there will be a technical interview where we'll ask questions about the code. Being able to understand and explain your code is just as important as the visible result.
💡 Less code that you can explain is better than a lot of code where you are unsure how it works in detail.
When you are done, please create a PR in the repository including a short description
Display a grid of music search results (artists, albums, songs) with the name and an image if available. Feel free to also display other information returned in the API response.
Here is a Figma file with a basic mockup: https://www.figma.com/design/QaAUTjri39HPaSUTEoMfWQ/Cat-Grid?node-id=282-53
The mockup serves as a basic idea of the grid. Feel free to style it in a way that you think makes sense.
-
Fetch data from the iTunes Search API
- Example request:
https://itunes.apple.com/search?media=music&entity=musicArtist,album,song&term={your+search+term} - Fetching should be done in a Next.js server component
- As a first step, you can set the search term to a fixed string, e.g.
&term="focus%20for%20work"
- Example request:
-
Render the items as cards in a grid layout. The layout should be responsive and work on desktop and mobile screen sizes.
-
Style the card and the grid in a way that feels delightful, fun, and useful.
-
For animations, you can use Motion or plain tailwind.
-
Be creative! In this task, we'd like to see flair and creativity rather than extensive functionality.
Pick tasks from the following list that you consider relevant or interesting to you:
- Clicking on a card opens a detail page or detail view with more information. For example, clicking an album shows a page with all its songs. You could render different things depending on the entity type. Think about routing for the detail view.
- This is a next.js/react app, so please write react components and rely on next.js features
- Styling is preferably done in tailwind. If necessary you can fall back to css approaches.
- Feel free to use anything else that helps you. (Maybe shadcn or motion)
- Your code should respect eslint and prettier.
- Commit your changes with git and provide meaningful commit messages.