Welcome to the Edge & Node Product Engineering Team's Frontend Skills Interview! The interview will be a Pair Programming interview lasting for about 50 minutes. We'll be using the Next.js app in this repository as our starting point and we'll be looking to extend it.
Once the interview starts we expect you to be fully up and running with the app and able to contribute to the code instantly. So make sure you complete all of the steps below. If you get blocked on one of the steps or run into any issues please reach out to us at least a few days before the interview by sending an email to: [email protected]
and [email protected]
.
☑️ 1. Create an API key in Subgraph Studio
The app is querying the Graph Network Arbitrum Sepolia subgraph so we need an API key before running the app.
- Go to Subgraph Studio
- Follow the instructions in this video or written description!
- Optional: It's a good idea to restrict your API key to the Graph Network Arbitrum Sepolia subgraph. You can also set a spending limit of 1 USD on your key. There are 100k free queries per month that you can do with your API key but it's best to protect against racking up a bill due to compromising your key by setting the spend limit.
- Fork the repo under your Github username.
- Clone your forked repo.
- The app is using Node.js
v22.13.1
, so make sure you have that version of Node.js installed. We recommend you to usenvm
,fnm
or similar to manage your Node versions. - The app is also using Bun
v1.1.29
. You can find instructions to install it here. - Install the repo by running:
bun i
- Create a
.env
file in the root of the repository and add your API key like so:
API_KEY=fc...98
- Run the app in development mode by running:
bun dev
- Metamask is preferred, but you can pick whatever you normally use.
- The app is using the
Arbitrum Sepolia
testnet so add it to your preferred wallet. You can follow this guide.
☑️ 4. Have Zoom set up and enable screen-sharing
We'll be using Zoom for the video call and you will be asked to share your screen with your IDE and your browser. So please make sure Zoom is set up correctly and that screen-sharing is enabled properly.
- Try out the app. Click around and make sure you understand the user experience.
- Look around the code and make sure you understand it! You can prepare questions to ask about the parts that don't make sense to you and we can start the interview with that.
- Make sure you are familar with the technologies used in the app. Read up on the docs for Next.js, Wagmi, Viem and Tanstack-Query.
The interview will be a pair programming exercise. You will be asked to complete a task in the app together with the interviewer. You will be the "driver" while the interviewer will be the "navigator". The emphasis is not on knowing exactly what code to write but on your thinking and what questions you ask to solve the problems. You can use any resource you'd like but your best bet is to ask your inteviewer and work with them to complete the task. While solving the task, you might also be asked questions to gauge your understanding of general frontend development concepts, web security aspects and version control best practices.
The interview itself should take approximately 50 minutes and after you will have 10 minutes to ask questions about the role and the company.
This is a Next.js project bootstrapped with create-next-app
.
First, run the development server:
bun 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.
This project uses next/font
to automatically optimize and load Geist, a new font family for Vercel.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The app uses graphql-codegen
to generate types for the GraphQL queries. If you edit the GraphQL queries in any of the lib/queries/**/query.ts
files, you're going to need to run the following command to generate the new types:
bun codegen-gql
Be aware that the development server needs to run before running the command above. So make sure to start the app in dev mode first:
bun dev
The app uses Wagmi CLI to fetch the ABIs and generate code relating to the contract calls that are used in the app. In order to run the code generation, you will need an API key to Arbiscan. Here's a description on how to obtain one. Once you have the key, add it to your .env
file like so:
ARBISCAN_KEY=Q6...EJ
After this, you can run the following command to generate the code:
bun codegen-wagmi
If you need to add new contract calls using different contracts, you will need to edit the wagmi.config.ts
file. You can find more information on how to use the configure the Wagmi CLI in the docs.