This is Lifeway IT's code challenge given to full stack software engineering candidates! Interested in working with our team? Check out open positions here
The premise of this challenge is to create a "profile page" for various star wars characters in the Star Wars universe.
Create a simple single page application that provides the following features:
- A search bar that takes the characters name as input.
- A profile containing the following sectional information for the searched character:
- About Me (height, weight, hair color, date of birth, species information)
- Films Appeared In
- Starships Flown
Use SWAPI to obtain all the star wars data that you need.
We are looking for clean, testable code that demonstrates usage of common design patterns and best practices above all else.
We will be using the code challenge to evaluate the following:
- A decent understanding of React is demonstrated
- A decent understanding of Next.js is demonstrated
- A decent understanding of TypeScript is demonstrated
- A decent understanding of unit/integration testing is demonstrated
- A basic "gateway" api is created to consolidate and proxy calls to SWAPI
While we make use of many REST API services at Lifeway, we also make use of GraphQL API services, and other technologies such as DynamoDB.
In particular we use AppSync as our GraphQL API Gateway in order to integrate backend services into our Next.js website.
In order to demonstrate skills in this area, we will also evaluate your skills in GraphQL and DynamoDB data modelling:
- Pick at least two Resource types from the SWAPI documentation that have a relationship between them
- Create a GraphQL schema that models how you would expose these Resources via GraphQL Queries and Mutations
- Create a DynamoDB data schema that shows how those models would be persisted in a way that would allow that data to be used to service the GraphQL schema
- Consider access patterns and plan your Partition and Sort keys accordingly. As well as any required secondary indexes.
- If you're familiar with AppSync, bonus points would be given if you also provide designs for any resolvers required to integrate with DynamoDB and transform the data between GraphQL and DynamoDB data formats
- You don't need to implement these schema designs, but you will need to walk us through your designs and the reasons for them, as well as any trade-offs or alternative options you considered.
Please put your submission in a public github repository to share.