All Projects → aws-samples → Ask Around Me

aws-samples / Ask Around Me

Licence: other
The Ask Around Me example serverless web application. See the Compute Blog series and video series for more information. Contact @jbesw for info.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Ask Around Me

Binaryalert
BinaryAlert: Serverless, Real-time & Retroactive Malware Detection.
Stars: ✭ 1,125 (+1579.1%)
Mutual labels:  aws, serverless, lambda
Lambda Audio
Run Sound eXchange (SoX), the Swiss Army knife of audio manipulation, with Lame on AWS Lambda
Stars: ✭ 53 (-20.9%)
Mutual labels:  aws, serverless, lambda
Aws Lambda Workshop
Some incremental examples suitable to host an AWS Lambda Functions workshop
Stars: ✭ 18 (-73.13%)
Mutual labels:  aws, serverless, lambda
Aws Toolkit Vscode
AWS Toolkit for Visual Studio Code, an extension for working with AWS services including AWS Lambda.
Stars: ✭ 823 (+1128.36%)
Mutual labels:  aws, serverless, lambda
Up
Up focuses on deploying "vanilla" HTTP servers so there's nothing new to learn, just develop with your favorite existing frameworks such as Express, Koa, Django, Golang net/http or others.
Stars: ✭ 8,439 (+12495.52%)
Mutual labels:  aws, serverless, lambda
Lambdalogs
A CLI tool to trace AWS Lambda calls over multiple CloudWatch log groups.
Stars: ✭ 18 (-73.13%)
Mutual labels:  aws, serverless, lambda
Serverless Application Model
AWS Serverless Application Model (SAM) is an open-source framework for building serverless applications
Stars: ✭ 8,305 (+12295.52%)
Mutual labels:  aws, serverless, lambda
Lambda Packages
Various popular python libraries, pre-compiled to be compatible with AWS Lambda
Stars: ✭ 713 (+964.18%)
Mutual labels:  aws, serverless, lambda
Apex
Old apex/apex
Stars: ✭ 20 (-70.15%)
Mutual labels:  aws, serverless, lambda
Serverless Plugin Stackstorm
Plugin for serverless framework to run ready to use actions from StackStorm Exchange as AWS Lambda.
Stars: ✭ 28 (-58.21%)
Mutual labels:  aws, serverless, lambda
Serverless Plugin Warmup
Keep your lambdas warm during winter. ♨
Stars: ✭ 814 (+1114.93%)
Mutual labels:  aws, serverless, lambda
Serverless Api Example
Example of a Golang, Serverless API
Stars: ✭ 62 (-7.46%)
Mutual labels:  aws, serverless, lambda
Archive aws Lambda Go Shim
Author your AWS Lambda functions in Go, effectively.
Stars: ✭ 799 (+1092.54%)
Mutual labels:  aws, serverless, lambda
Serverless Es Logs
A Serverless plugin to transport logs to ElasticSearch
Stars: ✭ 51 (-23.88%)
Mutual labels:  aws, serverless, lambda
Dawson Cli
A serverless web framework for Node.js on AWS (CloudFormation, CloudFront, API Gateway, Lambda)
Stars: ✭ 721 (+976.12%)
Mutual labels:  aws, serverless, lambda
Lamb
monitoring tool for better visibility when developing AWS Lambda functions
Stars: ✭ 11 (-83.58%)
Mutual labels:  aws, serverless, lambda
Aws Mobile React Sample
A React Starter App that displays how web developers can integrate their front end with AWS on the backend. The App interacts with AWS Cognito, API Gateway, Lambda and DynamoDB on the backend.
Stars: ✭ 650 (+870.15%)
Mutual labels:  aws, serverless, lambda
Archive aws Lambda Go
A fast and clean way to execute Go on AWS Lambda.
Stars: ✭ 710 (+959.7%)
Mutual labels:  aws, serverless, lambda
Workshop Donkeytracker
Workshop to build a serverless tracking application for your mobile device with an AWS backend
Stars: ✭ 27 (-59.7%)
Mutual labels:  aws, serverless, lambda
Terraform Nextjs Plugin
A plugin to generate terraform configuration for Nextjs 8 and 9
Stars: ✭ 41 (-38.81%)
Mutual labels:  aws, serverless, lambda

Ask Around Me - Get your questions answered by local users

This example application shows how to build a serverless web application including features like authentication, geohashing and realtime messaging.

To learn more about how this application works, see the 3-part series on the AWS Compute Blog:

📺 Watch the YouTube video series at https://serverlessland.com/learn/ask-around-me

Important: this application uses various AWS services and there are costs associated with these services after the Free Tier usage - please see the AWS Pricing page for details. You are responsible for any AWS costs incurred. No warranty is implied in this example.

.
├── README.MD                   <-- This instructions file
├── backend                     <-- Source code for the serverless backend
├── frontend                    <-- Source code for the Vue.js frontend

Requirements

Auth0 configuration

  1. Sign up for an Auth0 account at https://auth0.com.
  2. Select Applications from the menu, then choose Create Application.
  3. Enter the name Ask Around Me and select Single Page Web Applications for application type. Choose Create.
  4. Select the Settings tab, and note the Domain and ClientID for installation of the application backend and frontend.
  5. Under Allowed Callback URLs, Allowed Logout URLs and Allowed Web Origins and Allowed Origins (CORS), enter http://localhost:8080. Choose Save Changes.
  6. Select APIS from the menu, then choose Create API.
  7. Enter the name Ask Around Me, and set the Identifier to https://auth0-jwt-authorizer. Choose Create.

Auth0 is now configured for you to use. The backend uses the domain value to validate the JWT token. The frontend uses the identifier (also known as the audience), together with the Client ID to validate authentication for this single application. For more information, see the Auth0 documentation.

Installation Instructions

  1. Create an AWS account if you do not already have one and login.

  2. Clone the repo onto your local development machine using git clone.

Installing the realtime stack

  1. From the command line, install the realtime messaging stack:
cd backend
sam deploy --guided --template-file realtime.yaml

During the prompts, enter askAroundMe-realtime for the Stack Name, enter your preferred Region, and accept the defaults for the remaining questions.

  1. Retrieve the IoT endpointAddress - note this for the frontend installation:
aws iot describe-endpoint --endpoint-type iot:Data-ATS
  1. Retrieve the Cognito Pool ID - note this for the frontend installation:
aws cognito-identity list-identity-pools --max-results 10

Installing the DynamoDB geohash library

  1. From the command line, setup the dynamodb-geo library and DynamoDB table:
cd setup
npm install
node ./setup.js <<REGION>>

Replace <<REGION>> with your preferred AWS Region (e.g. us-east-1)

This process takes up to 1 minute to complete.

  1. After this, retrieve the DynamoDB StreamArn value for the next part of the installation, using the following command:
aws dynamodbstreams list-streams --table-name aamQuestions

Installing the backend application

From the command line, deploy the SAM template. Note that your SAM version must be at least 0.48 - if you receive build errors, it is likely that your SAM CLI version is not up to date. Run:

cd .. 
sam build
sam deploy --guided

When prompted for parameters, enter:

  • Stack Name: askAroundMe-backend
  • AWS Region: your preferred AWS Region (e.g. us-east-1)
  • QuestionsTableName: leave as default
  • QuestionsTableStreamARN: enter the stream ARN you noted in the last section.
  • AnswersTableName: leave as default
  • IoTDataEndpoint: the IoT endpointAddress noted in the realtime stack installation.
  • Auth0issuer: this is the URL for the Auth0 account (the format is https://dev-abc12345.auth0.com/).
  • Accept all other defaults.

This takes several minutes to deploy. At the end of the deployment, note the APIendpoint value, as you need this in the frontend installation.

Installing the frontend application

The frontend code is saved in the frontend subdirectory.

  1. Before running, you need to set environment variables in the src\main.js file:
  • GoogleMapsKey: sign up for a Google Maps API key and enter the value here.
  • APIurl: this is the APIendpoint value from the last section.
  • PoolId: your Cognito pool ID from earlier.
  • Host: your IoT endpoint from earlier.
  • Region: your preferred AWS Region (e.g. us-east-1).
  1. Open the frontend\auth_config.json and enter the values from your Auth0 account:
  • domain: this is your account identifier, in the format dev-12345678.auth0.com.
  • clientId: a unique string identifying the client application.
  • audience: set to https://auth0-jwt-authorizer.
  1. Change directory into the frontend code, and run the NPM installation:
cd ../frontend
npm install
  1. After installation is complete, you can run the application locally:
npm run build

Next steps

The AWS Compute Blog series and video link at the top of this README file contains additional information about the application design and architecture.

If you have any questions, feel free to DM the author on Twitter or raise an issue in the GitHub repo.

==============================================

Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.

SPDX-License-Identifier: MIT-0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].