Skip to content

Commit 11af84c

Browse files
Initial commit
0 parents  commit 11af84c

File tree

3 files changed

+111
-0
lines changed

3 files changed

+111
-0
lines changed

README.md

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
# Superformula Full Stack Developer Test
2+
3+
Be sure to read **all** of this document carefully, and follow the guidelines within.
4+
5+
## Backend Context
6+
7+
Build a GraphQL API that can `create/read/update/delete` user data from a persistence store.
8+
9+
### User Model
10+
11+
```
12+
{
13+
"id": "xxx", // user ID (must be unique)
14+
"name": "backend test", // user name
15+
"dob": "", // date of birth
16+
"address": "", // user address
17+
"description": "", // user description
18+
"createdAt": "" // user created date
19+
"updatedAt": "" // user updated date
20+
}
21+
```
22+
23+
### Functionality
24+
25+
- The API should follow typical GraphQL API design pattern.
26+
- The data should be saved in the DB.
27+
- Proper error handling should be used.
28+
- Paginating and filtering (by name) users list
29+
30+
### Basic Requirements
31+
32+
- Use AWS AppSync (preferred) or AWS Lambda + API Gateway approach
33+
- Use any AWS Database-as-a-Service persistence store. DynamoDB is preferred.
34+
- Add a Query to fetch location information based off the user's address (use [NASA](https://api.nasa.gov/api.html) or [Mapbox](https://www.mapbox.com/api-documentation/) APIs); use AWS Lambda
35+
- Write concise and clear commit messages.
36+
- Write clear **documentation** on how it has been designed and how to run the code.
37+
38+
### Bonus
39+
- Use Infrastructure-as-code tooling that can be used to deploy all resources to an AWS account. Examples: CloudFormation / SAM, Terraform, Serverless Framework, etc.
40+
- Provide proper unit tests.
41+
- Providing an online demo is welcomed, but not required.
42+
- Bundle npm modules into your Lambdas
43+
44+
### Advanced Requirements
45+
46+
These may be used for further challenges. You can freely skip these; feel free to try out if you feel up to it.
47+
- Describe your strategy for Lambda error handling, retries, and DLQs
48+
- Describe your cloud-native logging, monitoring, and alarming strategy across all queries/mutations
49+
50+
## UI context
51+
52+
Use HTML, CSS, and JavaScript (choose one of popular framework) to implement the following mock-up. You are only required to complete the desktop views, unless otherwise instructed. Application should connect to created GraphQL API.
53+
54+
![Superformula-front-end-test-mockup](./mockup1.png)
55+
56+
![Superformula-front-end-test-mockup-2](./mockup2.png)
57+
58+
> [Source Figma file](https://www.figma.com/file/hd7EgdTxJs2fpTzzSKlNxo/Superformula-full-stack-test)
59+
60+
## Requirements
61+
62+
### Functionality
63+
64+
- The search functionality should perform real time filtering on client side data and API side data
65+
- List of users should be updated automatically after single user is updated
66+
- Infinite loading state should be saved in url query
67+
- Appear/Disappear of modal should be animated (feel free with choose how)
68+
- Map with user location should update async - when user changes "location" field
69+
70+
### Tech stack
71+
72+
- JS oriented
73+
- Use **React**, **Angular** or **VUE**.
74+
- Use unsplash.com to show random avatar images
75+
- You don't have to write configuration from scratch (you can use eg. CRA for React application)
76+
- Feel free to use a preprocessor like SASS/SCSS/Less or CSS in JS
77+
- Provide E2E and unit tests
78+
- Feel free to choose MAPS service (GoogleMaps, OpenStreetMap etc)
79+
80+
### Bonus
81+
82+
- Write clear **documentation** on how the app was designed and how to run the code.
83+
- Provide components in [Storybook](https://storybook.js.org) with tests.
84+
- Write concise and clear commit messages.
85+
- Provide an online demo of the application.
86+
- Include subtle animations to focus attention
87+
- Describe optimization opportunities when you conclude
88+
- Handle server erros
89+
- Handle loading states
90+
91+
## What We Care About
92+
93+
Use any libraries that you would normally use if this were a real production App. Please note: we're interested in your code & the way you solve the problem, not how well you can use a particular library or feature.
94+
95+
_We're interested in your method and how you approach the problem just as much as we're interested in the end result._
96+
97+
Here's what you should strive for:
98+
99+
- Good use of current HTML, CSS, JavaScript, Node.js & performance best practices.
100+
- Solid testing approach.
101+
- Extensible code.
102+
103+
## Q&A
104+
105+
> Where should I send back the result when I'm done?
106+
107+
Fork this repo and send us a pull request when you think you are done. There is no deadline for this task unless otherwise noted to you directly.
108+
109+
> What if I have a question?
110+
111+
Create a new issue in this repo and we will respond and get back to you quickly.

mockup1.png

179 KB
Loading

mockup2.png

133 KB
Loading

0 commit comments

Comments
 (0)