Skip to content

Commit 4aaacc5

Browse files
committed
docs: 2024 new challenge
1 parent 98e7c46 commit 4aaacc5

30 files changed

+96
-234
lines changed

README.md

Lines changed: 96 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,122 @@
1-
![Aerolab's Frontend Developer coding challenge](assets/github-cover-aerolab-frontend-developer-coding-challenge.png)
2-
# Aerolab Frontend Developer coding challenge
1+
# Aerolab Coding Challenge (for frontend developers)
32

4-
The challenge is to build a catalog view for a loyalty program app. We’ll provide you with the base UI and API, you can use it as provided or you can make any improvements you deem fit. It’s up to you, your imagination and your skills to come up with new solutions and/or interactions between the components.
3+
> Check out our 2022 coding challenge [here](https://github.com/Aerolab/frontend-developer-coding-challenge/tree/2022)
54
6-
Remember that the product’s main goal is to help users redeem items through a points-based system. We expect your end-product to be both visually attractive and functionally effective.
7-
8-
* [Acceptance Criteria](#Acceptance-Criteria)
5+
* [Overview](#Overview)
96
* [Tech Stack](#Tech-Stack)
7+
* [IGDB API](#IGDB-API)
8+
* [Requirements](#Requirements)
109
* [Design resources](#Design-resources)
11-
* [API Documentation](#API-Documentation)
1210
* [Delivery](#Delivery)
13-
* [Aerolab career opportunities](#Aerolab-careers-opportunities)
14-
15-
## Acceptance Criteria
16-
17-
Users have an undetermined amount of points accumulated, and each product is worth a set amount of points. We’ll test the product you submit, along with the code it is written in, and any additional interactions or layers you’d like to add.
18-
19-
We want to see how your code’s UI interacts with different states and user interactions, so your product should comply with the following guidelines
20-
21-
(Keep in mind that the jury will also take into account the quality of the submitted code. Simply meeting this criteria doesn’t mean your solution will be the best)
22-
23-
Feel free to reach one of the following levels of quality based on your skills. Show us what you can do and what you are an expert at! 💪
24-
25-
### Level 1 - It works! ⚙️
26-
27-
- Make a desktop version
28-
- Each product should have a visible price in points.
29-
- Link to the project GitHub repository (footer)
30-
- The user should be able to sort products by price, from highest to lowest, and vice-versa.
31-
- The user should be able to see how many points they have in their account.
32-
- There should be a clear way for the user to distinguish those products that they can redeem from those they cannot.
33-
- A “Redeem” button should be available for those products that the user has enough points to claim.
34-
- A “Redeem now” option should appear when the user interacts with a product that they have enough points to claim.
35-
- When the user doesn’t have enough points for a product, they should be able to see how many more points they need to claim it.
36-
- The user should not be able to redeem a product for which they don’t have enough points.
37-
- When the user clicks on the Redeem now button, the system should automatically deduct the item’s price from the users’ points.
38-
- The user should be able add points to their account
39-
11+
* [About Aerolab and career opportunities](#Aerolab)
4012

41-
### Level 2 - Eye Candy 💅
13+
## Overview
4214

43-
- *All of above*
44-
- Make a mobile responsive version
45-
- The "view all products" button (on Hero/Header section) should scroll view to listed products
46-
- Make the "Browse, Choose, Enjoy" section
47-
- Put all your effort into making the site look beautiful
48-
- Pay attention to details and the design system we provide you
49-
- The user should be able to filter products by category
50-
- The user should be able to use the pagination to view more listed products
15+
Your task is to create a web application that allows users to search for and digitally collect video games, using the IGDB API and browser/device storage. The project must be built using the Next.js App Router. Styling is flexible, but we recommend using Tailwind CSS or CSS Modules. The final product should be functional, visually appealing, and provide a great user experience. Feel free to add any extra features or custom styling as you see fit.
5116

52-
### Level 3 - Mind-blowing 🤯
17+
> You’re welcome to use any additional libraries you find helpful for the challenge.
5318
54-
- *All of above*
55-
- Make a tablet responsive version
56-
- Make some visual tweaks (animations, micro interactions, etc)
57-
- Put all your effort on website performance (images, web vitals, network optimization, etc)
58-
- Be careful about SEO (metadata, markup semantics, SSR, etc.)
59-
- Be careful about Accesibility (keyboard navigation, narrator, markup semantics, etc.)
60-
- Be careful about environment variables security
61-
- If you want you can make some unit or integration tests
19+
![wireframes](docs/aerolab-coding-challenge-wireframes.png)
6220

6321
## Tech Stack
6422

65-
We recommend that you use the following technologies, which are aligned with the daily work we do at Aerolab 🪁 and which in this case we believe are also adequate to solve the challenge.
66-
67-
### We recommend
68-
69-
- [**NextJS (app router)**](https://nextjs.org/) (SSR framework)
70-
- [**CSS Modules**](https://github.com/css-modules/css-modules) or maybe:
71-
- [**Styled Components**](https://styled-components.com/) (styles)
72-
- [**Styled JSX**](https://github.com/vercel/styled-jsx)
73-
- [**Tailwind CSS**](https://tailwindcss.com/)
74-
- [**Vercel**](https://vercel.com/) (deploy)
75-
76-
### Optionally
77-
78-
- *Typescript (data types)*
79-
- *Jest + React Testing Library (testing)*
80-
81-
> 😎 You can use any additional library you need to carry out the challenge.
82-
83-
> 👍 BTW, we can be flexible if you feel comfortable with any other technology or if you want to combine them in different ways. You can use other stack like *CRA, VueJS, NuxtJS, Remix, Svelte, Angular, React Native, Flutter, Heroku, Digital Ocean, Stitches CSS, Styled JSX, SASS, CSS Modules,* etc...
23+
We recommend using the following technologies to align with the tools we use at Aerolab and to ensure an efficient and scalable solution for this challenge. These tools will help you meet performance, usability, and maintainability standards:
24+
25+
26+
### Recommended Tools
27+
- TypeScript for type safety and data modeling.
28+
- Next.js (App Router) for server-side rendering and routing.
29+
- Tailwind CSS or CSS Modules for styling.
30+
- Radix, shadcn, MUI for UI components.
31+
- Vercel for deployment.
32+
- Postman or HTTPie for API request testing.
33+
- (Optional) React Testing Library for testing.
34+
35+
> Yes, you can use AI to enhance any part of the project, or even integrate it into your solution.
36+
37+
38+
## IGDB API
39+
40+
### API Account Setup
41+
- Sign up at [IGDB](https://www.igdb.com/)
42+
- Review the [IGDB API Documentation](https://api-docs.igdb.com/#getting-started)
43+
44+
### Useful Tips
45+
- To fetch images, use the structure `https://images.igdb.com/igdb/image/upload/t_{size}/{hash}.jpg`
46+
- For available image sizes and details, see [IGDB Image Documentation](https://api-docs.igdb.com/#images).
47+
- The challenge can be solved using only the `/games` endpoint.
48+
- When working with game release dates, just use `first_release_date` property.
49+
- You can filter, exclude and sort data using the API, see [IGDB Filter Documentation](https://api-docs.igdb.com/#filters)
50+
51+
## Requirements
52+
53+
Your project should let users search for video games via the IGDB API and save selected games to a collection using browser or device storage. It must be fully responsive, handle loading states and errors properly, and give clear feedback for user actions like adding or removing games.
54+
55+
The design should look polished, with consistent styling throughout. Remember, code quality matters—simply meeting the criteria isn’t enough. Show off your skills and creativity! 💪
56+
57+
### General
58+
- The website must be fully functional on both desktop and mobile devices.
59+
- (Optional) Open Graph metadata should appear when sharing any URL.
60+
- (Optional) Dynamic Open Graph metadata should be present when sharing a game detail page.
61+
62+
### Home Page
63+
- The logo should be visible and clickable, returning the user to the home screen.
64+
- Users should be able to search for games using a search input.
65+
- If no games have been collected, an empty state should be displayed.
66+
- Collected games should be shown as cover art in a grid layout, with sorting options by release date or date added.
67+
- (Optional) Users should be able to remove collected games.
68+
69+
### Search Feature
70+
- Search results should update dynamically as the user types. Be mindful of IGDB API rate limits, so ensure efficient handling of real-time searches.
71+
- Each result should include the game’s cover art and title.
72+
- (Optional) Clicking on the input before typing should display suggested results.
73+
- Users should be able to browse 5–10 results via the search input (if available).
74+
- (Optional) Up to 50 search results should be shown (if available).
75+
- Clicking a result should navigate the user to the game detail page.
76+
77+
### Game Detail Page
78+
- The logo should be visible and clickable, returning the user to the home screen.
79+
- Users should be able to search for games via an input on this page.
80+
- The page must display the game's cover art, title, rating, release date, platforms, and how many years ago it was released.
81+
- Users should be able to collect the game and see if it's already collected.
82+
- (Optional) Collected games should be removable, with notifications for adding or removing games.
83+
- Screenshots of the game should be displayed, along with a list of similar games.
84+
- (Optional) Users should be able to click on each similar game and navigate to an internal link.
85+
- The URL should use a friendly slug format instead of an ID.
86+
87+
### Extra Considerations
88+
- Incorporate visual enhancements like animations and micro-interactions.
89+
- Prioritize performance (optimize images, web vitals, and network usage).
90+
- Ensure SEO best practices (metadata, semantic markup, SSR).
91+
- Focus on accessibility (keyboard navigation, screen reader support, semantic HTML).
92+
- Protect environment variables and sensitive data.
93+
- (Optional) Implement a login system with Supabase or similar.
94+
- (Optional) Add unit or integration tests.
8495

8596
## Design resources
8697

87-
We've crafted a beautiful design for this coding challenge. We provide your a Figma access to all of resources like, views, design systems, responsive adaptations, typography, styles, and more.
98+
🚧 The design is still in progress, and we’ll share the final Figma file once it’s ready. In the meantime, you can work from [wireframes](https://www.figma.com/design/3O7BxHFnSSawJeny3lXWkE/Aerolab-Frontend-Developer-Coding-Challenge---Public?node-id=16692-3191&t=4j9KGkZuF4bA2zbD-4) to complete the challenge. You’re welcome to use any component library, such as shadcn, or even create your own custom designs.
8899

89-
- [Figma design here](https://www.figma.com/file/3O7BxHFnSSawJeny3lXWkE)
100+
## Delivery
90101

91-
## API Documentation
92-
- Read our [API Documentation](https://aerolabchallenge.docs.apiary.io/)
93-
- [Claim your API token](https://aerolab.co/coding-challenge) and have access to endpoints (type `join` and write your **email**. Then you'll receive some details and the API token)
102+
This needs to ship. You should upload the project to a public link (we recommend [Vercel](https://vercel.com/)). You should also upload it to Github so we can review the code.
94103

95-
## Delivery
104+
In case you need a hand in getting your site to go live, we recommend you read the [Vercel Docs](https://vercel.com/docs/concepts/deployments/overview) to help you out.
96105

97-
This needs to ship. You should upload the project to a public link (we recommend [Vercel](https://vercel.com/)). You should also upload it to Github so we can review the code.
106+
🚀 Once your code is ready send the public link and repository link via email to whoever sent it to you from Aerolab, or you can apply at https://aerolab.co/jobs if you got here some other way.
98107

99-
In case you need a hand in getting your site to go live, we recommend you read the [Vercel Docs](https://vercel.com/docs/concepts/deployments/overview) to help you out.
108+
### Expected Deliverables
100109

101-
🚀 Once your code is ready send the public link and repository link via email to whoever sent it to you from Aerolab, or you can apply at https://aerolab.co/jobs if you got here some other way.
110+
- A live, deployed demo of the project.
111+
- Access to the codebase via a public repository.
112+
- API request collection (using Postman or HTTPie).
102113

103-
> _If you feel uncomfortable building fancy user interfaces then try our [alternative challenge](https://github.com/Aerolab/fullstack-developer-coding-challenge) (Disclaimer: we'll prioritize the original challenge)_
114+
### Evaluation Criteria
104115

105-
---
116+
- Understanding and implementation of API requests, payloads, and documentation.
117+
- Effective data and state management.
118+
- Search functionality and user interaction handling.
119+
- Website performance, including asset optimization, payload size, and loading times.
106120

107121
## Aerolab
108122

Binary file not shown.

assets/icons/Icons.svg

Lines changed: 0 additions & 3 deletions
This file was deleted.

assets/icons/aerolab-logo-1.svg

Lines changed: 0 additions & 44 deletions
This file was deleted.

assets/icons/aerolab-logo-2.svg

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)