Git Product home page Git Product logo

cloud-backend-test's Introduction

Superformula Cloud Backend Test

Be sure to read all of this document carefully, and follow the guidelines within.

Branching strategy

  1. Create a branch from main to implement your solution
  2. Once you are done, open a PR from your development branch to main and let us know about it

What you will be building

Build a GraphQL API that can create/read/update/delete user data from a persistence store.

User Model

{
  "id": "xxx",                  // user ID (must be unique)
  "name": "backend test",       // user name
  "dob": "",                    // date of birth
  "address": "",                // user address
  "description": "",            // user description
  "createdAt": "",              // user created date
  "updatedAt": "",              // user updated date
  "imageUrl": ""                // user avatar image url
}

Requirements

Functionality

  • The API should follow typical GraphQL API design pattern
  • The data should be saved in the DB
  • Proper error handling should be used
  • Paginating and filtering (by name) users list
  • The API must have a Query to fetch geolocation information based off an address

Tech Stack

  • Use Typescript
  • Use Infrastructure-as-code tooling that can be used to deploy all resources to an AWS account. Examples:
    • Terraform (preferred)
    • CloudFormation / SAM
    • Serverless Framework
    • Feel free to use other IaC tooling if you prefer
  • Use AWS Lambda + API Gateway (preferred) or AWS AppSync
  • Use any AWS Database-as-a-Service persistence store. DynamoDB is preferred.
  • Location query must use NASA or Mapbox APIs to resolve the coordinate based on the address; use AWS Lambda.

Developer Experience

  • Write unit tests for business logic
  • Write concise and clear commit messages
  • Document and diagram the architecture of your solution
  • Write clear documentation:
    • Repository structure
    • Environment variables and any defaults.
    • How to build/run/test the solution
    • Deployment guide

API Consumer Experience

  • GraphQL API documentation
  • Ensure your API is able to support all requirements passed to the consumer team

Bonus

These may be used for further challenges. You can freely skip these; feel free to try out if you feel up to it.

Developer Experience (in order)

  1. E2E Testing
  2. Integration testing
  3. Code-coverage report generation
  4. Describe your strategy for Lambda error handling, retries, and DLQs
  5. Describe your cloud-native logging, monitoring, and alarming strategy across all queries/mutations
  6. Online interactive demo with a publicly accessible link to your API
  7. Brief description of the frameworks/tools used in the solution
  8. Optimized lambda build.
  9. Commit linting
  10. Semantic release

API Consumer Experience (in order)

  1. Document how consumers can quickly prototype against your APIs
    • GraphQL Playground setup
    • Insomnia setup
    • Feel free to use any other tool/client you might know that enable consumers to prototype against your API
  2. GraphQL Documentation Generation
  3. Client API generation

Client context

Assume the GraphQL API you are developing will be used by a hypothetical front-end team to build the following screens:

Superformula-front-end-test-mockup

Superformula-front-end-test-mockup-2

Source Figma file

  • Client will be performing real-time search against this API
  • List of users should be updated automatically after single user is updated

What We Care About

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.

We're interested in your method and how you approach the problem just as much as we're interested in the end result.

Here's what you should strive for:

  • Good use of current Typescript, Node.js, GraphQL & performance best practices.
  • Solid testing approach.
  • Extensible code and architecture.
  • Delightful experience for other backend engineers working in this repository
  • Delightful experience for engineers consuming your APIs

Q&A

Where should I send back the result when I'm done?

Send us a pull request when you think you are done. There is no deadline for this task unless otherwise noted to you directly.

What if I have a question?

Create a new issue in this repo and we will respond and get back to you quickly.

Should I validate inputs?

Please assume a hard requirement has not been set by the product owner. We welcome any input validations and your reasoning for why they add value.

What is the location format?

Examples:

  • Seattle, Washington
  • Digital Nomad
  • New Jersey
  • Northern Bergen County, NJ

I almost finished, but I don't have time to create everything what is required

Please provide a plan for the rest of the things that you would do.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.