Welcome to the frontend challenge! In this task, your goal is to create a simple web page to list metal festivals using React and other libraries that are already set up.
⚠ Important: Make sure you have node v20.18.0 installed and running before start!
⚠ Important: Do not fork this repository. Instead, follow these steps:
-
Clone the repository to your local machine:
git clone [email protected]:hypeIT-GmbH/hypeit-frontend-challenge.git
-
Create a new repository on your own GitHub account.
-
Push your cloned project to your new repository:
git remote remove origin git remote add origin https://github.com/YOUR_USERNAME/NEW_REPOSITORY.git git push -u origin main
-
When finished, share your repository link or send a ZIP file of your solution.
- Before you begin, check out the API response here.
- Create a page that displays a list of metal festivals.
- Include a search bar to filter festivals by name or other details.
- Display the festivals in cards, showing key details like e.g. the name, date, location, and image.
- When you click a card it should show more details for the festival.
- UI Library: Mantine (for UI components)
- Icons: FontAwesome (for icons)
- Testing: Jest & React Testing Library for unit tests
- Translation: React-i18next for multi-language support
- Query: TanStack Query for data fetching
- State Management: Feel free to install Redux Toolkit for managing global state (optional).
- Fetch API: You can find the API types in
src/api/generated/apiSchemas
and a hook (useQueryFestivals
) insrc/api/generated/apiComponents
utilizing TanStack Query set up for you to query the API endpoint for the festival data. - Festival List: Create a page where a list of festivals is displayed in cards. Each card should show:
- Name of the festival
- Date of the festival
- Location of the festival
- Search Bar: Add a search bar that filters the festivals by name or other details dynamically.
- Testing: Write at least one unit test to test a feature of your choice (e.g., component, helper function, custom hook).
- Custom Hook: Write a custom hook that could be used to manage the state of the festival list (e.g., filtering the list or fetching data from an API).
- Helper Function: Write a helper function that does something useful in the context of the festival list (e.g., formatting dates, transforming data, etc.).
This challenge should take about 4 hours to complete. Don't worry if you don’t finish everything—focus on giving us insight into how you work.
Please submit your solution in the form of a GitHub repository link or a ZIP file.
Good luck, and have fun! 🍀
Install the dependencies:
npm ci
Start the dev server:
npm run dev
Run the tests:
npm run test:watch