Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions code-challenge-1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,28 @@

## The Challenge

Build a Serverless Framework API with AWS AppSync which supports CRUD functionality (Create, Read, Update, Delete) and has Serverless Pro CI/CD configured.
Build an AWS AppSync API that supports CRUD functionality (Create, Read, Update, Delete) and has CI/CD configured.

You can take screenshots of the Serverless Pro setup and include them in the README.
You can take screenshots of the CI/CD setup and include them in the README.

The CI/CD should trigger a deployment based on a git push to the master branch which goes through and deploys the backend Serverless Framework API.
The CI/CD should trigger a deployment based on a git push to the repository's default branch, for example `main`, and deploy the backend API.

### Requirements

1. All AWS Infrastructure needs to be automated with IAC using Serverless Framework and CloudFormation as needed
1. All AWS infrastructure must be automated with IaC using Serverless Framework, AWS CDK, or CloudFormation as needed

2. The AppSync API should store data in DynamoDB

3. Serverless Pro should be leveraged to build the CI/CD pipeline and support multi-stage deployments
3. GitHub Actions, AWS CodePipeline, or the CI/CD tooling for your chosen framework should be used to support multi-stage deployments

4. The template should be fully working and documented

4. A public GitHub repository must be shared with frequent commits
5. A public GitHub repository must be shared with frequent commits

5. A video should be recorded (www.loom.com) of you talking over the application code, IAC, and any additional areas you want to highlight in your solution to demonstrate additional skills
6. A video should be recorded (www.loom.com) of you talking over the application code, IaC, and any additional areas you want to highlight in your solution to demonstrate additional skills

Please spend only what you consider a reasonable amount of time for this.

## Optionally

Create a frontend with ReactJS and Material UI which uses the Amplify library to connect to your AppSync API for the CRUD functionality.
Create a frontend with React and a modern UI library such as MUI, Tailwind CSS, Chakra UI, or shadcn/ui. The frontend can use Amplify or the AWS SDK to connect to your AppSync API for CRUD functionality.
33 changes: 16 additions & 17 deletions code-challenge-2/README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
# AWS SAM to Serverless Framework Migration
# AWS SAM Migration

## The Challenge

Take an AWS SAM template and migrate it to Serverless Framework.
Take an AWS SAM template and migrate it to Serverless Framework or AWS CDK.

### Requirements

1. The AWS SAM template should be converted to a serverless framework template
1. The AWS SAM template should be converted to Serverless Framework or AWS CDK

2. AWS SAM extra properties which serverless framework doesn't support should be removed
2. AWS SAM-specific properties that the chosen framework does not support should be removed or replaced

3. All properties such as AWS Lambda memory size should be modified to use the proper casing and location

4. The converted template should be able to be deployed and support multi-stage deployments

5. A public GitHub repository must be shared with frequent commits

6. A video should be recorded (www.loom.com) of you talking over the application code, IAC, and any additional areas you want to highlight in your solution to demonstrate additional skills
6. A video should be recorded (www.loom.com) of you talking over the application code, IaC, and any additional areas you want to highlight in your solution to demonstrate additional skills

Please spend only what you consider a reasonable amount of time for this.

Take this AWS SAM template and turn it into Serverless Framework. High level instructions below.
Take this AWS SAM template and turn it into Serverless Framework or AWS CDK. High level instructions below.

## More Information

Expand All @@ -44,29 +44,28 @@ Take this AWS SAM template and turn it into Serverless Framework. High level ins

## Goal

1. Convert this AWS SAM template to Serverless Framework
1. Convert this AWS SAM template to Serverless Framework or AWS CDK

2. Remove all unecessary resources that Serverless Framework creates automatically
2. Remove all unnecessary resources that the chosen framework creates automatically

3. Replace all intrinsic functions with the Serverless Framework equivalent
3. Replace intrinsic functions with the chosen framework's equivalent syntax or construct patterns

4. Update all AWS resource names to be dynamic by stage

5. Update all hardcoded region/stage values to be dynamic

5. Split the resources up into separate serverless.yml files based on logical groupings and isolation of resources
6. Split the resources into separate files or stacks based on logical groupings and isolation of resources

6. Use Serverless Framework to add X-Ray tracing, API Gateway REST API logging, and lambda
packaging to only include the index.js file
7. Add X-Ray tracing, API Gateway REST API logging, and Lambda packaging or bundling so only required application files are deployed

7. Add dynamic stage/region flags
8. Add dynamic stage/region configuration

8. Send over to Serverless Guru for review
9. Send over to Serverless Guru for review

## Bonus

1. Add Serverless Framework Pro outputs to have each isolated serverless.yml communicate together
1. Add framework outputs so isolated services or stacks can communicate together

2. Setup Serverless Framework Pro AWS IAM role deployments versus using a local profile
2. Set up CI/CD deployments using an AWS IAM role instead of a local profile

3. Move the clientId and clientSecret to Serverless Framework Pro profiles for dev and prod
3. Move the clientId and clientSecret to a secure parameter store or secrets manager for dev and prod
8 changes: 4 additions & 4 deletions code-challenge-3/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ Build a link tracking backend API which does the following:

### Requirements

1. All AWS Infrastructure needs to be automated with IAC using Serverless Framework and CloudFormation as needed
1. All AWS infrastructure must be automated with IaC using Serverless Framework, AWS CDK, or CloudFormation as needed

2. A public GitHub repository must be shared with frequent commits

3. A video should be recorded (www.loom.com) of you talking over the application code, IAC, and any additional areas you want to highlight in your solution to demonstrate additional skills
3. A video should be recorded (www.loom.com) of you talking over the application code, IaC, and any additional areas you want to highlight in your solution to demonstrate additional skills

Please spend only what you consider a reasonable amount of time for this.

## Optionally

Create a frontend with ReactJS or Vue.js which will make the HTTPS request to the API Gateway or AppSync endpoint.
Create a frontend with React, Vue, or another modern frontend framework which will make the HTTPS request to the API Gateway or AppSync endpoint.

Automate the creation of the frontend with your preferred tooling.
Automate the creation of the frontend with your preferred tooling.
18 changes: 9 additions & 9 deletions code-challenge-4/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,30 @@

## The Challenge

Build a Serverless Framework API with AWS AppSync which supports CRUD functionality (Create, Read, Update, Delete) *don't use mapping templates directly to DynamoDB from AppSync and use GitHub Actions CI/CD pipeline, AWS CodePipeline, or Serverless Pro CI/CD.
Build an AWS AppSync API that supports CRUD functionality (Create, Read, Update, Delete). Don't use mapping templates directly to DynamoDB from AppSync. Use GitHub Actions, AWS CodePipeline, or the CI/CD tooling for your chosen framework.

You can take screenshots of the CI/CD setup and include them in the README.

The CI/CD should trigger a deployment based on a git push to the master branch which goes through and deploys the backend Serverless Framework API.
The CI/CD should trigger a deployment based on a git push to the repository's default branch, for example `main`, and deploy the backend API.

### Requirements

1. All AWS Infrastructure needs to be automated with IAC using Serverless Framework and CloudFormation as needed
1. All AWS infrastructure must be automated with IaC using Serverless Framework, AWS CDK, or CloudFormation as needed

2. The AppSync API should store data in DynamoDB

3. There should be 4-5 lambdas that include the following CRUD functionality (Create, Read, Update, Delete) *don't use mapping templates directly to DynamoDB from AppSync
3. There should be 4-5 Lambda functions that include the following CRUD functionality (Create, Read, Update, Delete). Don't use mapping templates directly to DynamoDB from AppSync

3. Build the CI/CD pipeline to support multi-stage deployments
4. Build the CI/CD pipeline to support multi-stage deployments

4. The template should be fully working and documented
5. The template should be fully working and documented

4. A public GitHub repository must be shared with frequent commits
6. A public GitHub repository must be shared with frequent commits

5. A video should be recorded (www.loom.com) of you talking over the application code, IAC, and any additional areas you want to highlight in your solution to demonstrate additional skills
7. A video should be recorded (www.loom.com) of you talking over the application code, IaC, and any additional areas you want to highlight in your solution to demonstrate additional skills

Please spend only what you consider a reasonable amount of time for this.

## Optionally

Create a frontend with ReactJS and Material UI which uses the Amplify library to connect to your AppSync API for the CRUD functionality.
Create a frontend with React and a modern UI library such as MUI, Tailwind CSS, Chakra UI, or shadcn/ui. The frontend can use Amplify or the AWS SDK to connect to your AppSync API for CRUD functionality.
27 changes: 14 additions & 13 deletions code-challenge-5/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,31 @@

## The Challenge

Build a Serverless Framework REST API with AWS API Gateway which supports CRUD functionality (Create, Read, Update, Delete) *don't use service proxy integration directly to DynamoDB from API Gateway
Build a REST API with AWS API Gateway that supports CRUD functionality (Create, Read, Update, Delete). Don't use service proxy integration directly to DynamoDB from API Gateway.

Please use GitHub Actions CI/CD pipeline, AWS CodePipeline, or Serverless Pro CI/CD to handle deployments.
Please use GitHub Actions, AWS CodePipeline, or the CI/CD tooling for your chosen framework to handle deployments.

You can take screenshots of the CI/CD setup and include them in the README.

The CI/CD should trigger a deployment based on a git push to the master branch which goes through and deploys the backend Serverless Framework REST API and any other resources e.g. DynamoDB Table(s).
The CI/CD should trigger a deployment based on a git push to the repository's default branch, for example `main`, and deploy the backend REST API and any other resources, such as DynamoDB tables.

### Requirements

0. All application code must be written using NodeJS, Typescript is acceptable as well
1. All application code must be written using Node.js. TypeScript is encouraged, and JavaScript is acceptable

1. All AWS Infrastructure needs to be automated with IAC using [Serverless Framework](https://www.serverless.com)
2. All AWS infrastructure must be automated with IaC using [Serverless Framework](https://www.serverless.com), [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html), or CloudFormation as needed

2. The API Gateway REST API should store data in DynamoDB
3. The API Gateway REST API should store data in DynamoDB

3. There should be 4-5 lambdas that include the following CRUD functionality (Create, Read, Update, Delete) *don't use service proxy integration directly to DynamoDB from API Gateway
4. There should be 4-5 Lambda functions that include the following CRUD functionality (Create, Read, Update, Delete). Don't use service proxy integration directly to DynamoDB from API Gateway

3. Build the CI/CD pipeline to support multi-stage deployments e.g. dev, prod
5. Build the CI/CD pipeline to support multi-stage deployments, such as dev and prod

4. The template should be fully working and documented
6. The template should be fully working and documented

4. A public GitHub repository must be shared with frequent commits
7. A public GitHub repository must be shared with frequent commits

5. A video should be recorded (www.loom.com) of you talking over the application code, IAC, and any additional areas you want to highlight in your solution to demonstrate additional skills
8. A video should be recorded (www.loom.com) of you talking over the application code, IaC, and any additional areas you want to highlight in your solution to demonstrate additional skills

Please spend only what you consider a reasonable amount of time for this.

Expand All @@ -37,5 +37,6 @@ Please feel free to include any of the following to show additional experience:
1. Make the project fit a specific business case e.g. Coffee Shop APIs vs Notes CRUD directly from AWS docs
2. AWS Lambda packaging
3. Organization of YAML files
4. Bash/other scripts to support deployment
5. Unit tests, integration tests, etc
4. Scripts or package manager commands to support deployment
5. Unit tests, integration tests, contract tests, etc
6. CI/CD authentication using short-lived credentials, such as GitHub Actions OIDC, instead of long-lived AWS access keys
72 changes: 16 additions & 56 deletions code-challenge-6/README.md
Original file line number Diff line number Diff line change
@@ -1,101 +1,61 @@


# Full-Stack REST API Application on AWS

## The Challenge



### First Part: Serverless Backend

Build a Serverless Framework REST API with AWS API Gateway which supports CRUD functionality (Create, Read, Update, Delete) *don't use service proxy integration directly to DynamoDB from API Gateway


Build a REST API with AWS API Gateway that supports CRUD functionality (Create, Read, Update, Delete). Don't use service proxy integration directly to DynamoDB from API Gateway.

Please use GitHub Actions CI/CD pipeline, AWS CodePipeline, or Serverless Pro CI/CD to handle deployments.


Please use GitHub Actions, AWS CodePipeline, or the CI/CD tooling for your chosen framework to handle deployments.

You can take screenshots of the CI/CD setup and include them in the README.



The CI/CD should trigger a deployment based on a git push to the master branch which goes through and deploys the backend Serverless Framework REST API and any other resources e.g. DynamoDB Table(s).


The CI/CD should trigger a deployment based on a git push to the repository's default branch, for example `main`, and deploy the backend REST API and any other resources, such as DynamoDB tables.

### Second Part: React Frontend

Build a frontend application in React that connects to the serverless backend application. The React application must use all 4 CRUD functionality.



The frontend should be visually appealing and utilizes modern web design. Please use widely practiced CSS library instead of using your own custom CSS


The frontend should be visually appealing and use modern web design. Please use a widely practiced CSS or component library instead of custom CSS only.

Application must follow responsive web design for at least 4 different device sizes.



Deployment of the React application is up to your choice. Please provide your entry point url of the react application when finished.


Deployment of the React application is up to your choice. Please provide your entry point URL of the React application when finished.

### Requirements

0. All application code must be written using Javascript. Typescript is acceptable as well. Backend application is written in Node.js and frontend application written in React


1. All application code must be written using JavaScript or TypeScript. The backend application must be written in Node.js and the frontend application must be written in React

1. Backend AWS Infrastructure needs to be automated with IAC using [Serverless Framework](https://www.serverless.com)
2. Backend AWS infrastructure must be automated with IaC using [Serverless Framework](https://www.serverless.com), [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html), or CloudFormation as needed

3. The API Gateway REST API should store data in DynamoDB

2. The API Gateway REST API should store data in DynamoDB
4. There should be 4-5 Lambda functions that include the following CRUD functionality (Create, Read, Update, Delete). Don't use service proxy integration directly to DynamoDB from API Gateway

5. Build the CI/CD pipeline to support multi-stage deployments, such as dev and prod

3. There should be 4-5 lambdas that include the following CRUD functionality (Create, Read, Update, Delete) *don't use service proxy integration directly to DynamoDB from API Gateway
6. The template should be fully working and documented

7. A public GitHub repository must be shared with frequent commits

4. Build the CI/CD pipeline to support multi-stage deployments e.g. dev, prod



5. The template should be fully working and documented



6. A public GitHub repository must be shared with frequent commits



7. A video should be recorded (www.loom.com) of you talking over the application code, IAC, and any additional areas you want to highlight in your solution to demonstrate additional skills


8. A video should be recorded (www.loom.com) of you talking over the application code, IaC, and any additional areas you want to highlight in your solution to demonstrate additional skills

Please spend only what you consider a reasonable amount of time for this.



## Optionally



Please feel free to include any of the following to show additional experience:



1. Make the project fit a specific business case, instead of a skeleton CRUD request/response.

2. AWS Lambda packaging

3. Organization of YAML files

4. Bash/other scripts to support deployment
4. Scripts or package manager commands to support deployment

5. Unit tests, integration tests, load testing, etc

6. Setup AWS Cognito as part of the backend task and use it for app signup/login. All pages accessible only to authorized users except signup/login

7. CI/CD authentication using short-lived credentials, such as GitHub Actions OIDC, instead of long-lived AWS access keys