
Plushは、写真を共有するためのフルスタックのモバイルアプリケーションです。フロントエンドにExpoとReactネイティブを使用し、AWSがバックエンドサービスとして増幅し、APIサービスはGraphQLで構築されています。
こちらのアプリ機能のデモビデオ。
サインアップ/サインインした後、ユーザーは以下を実行できます。
ユーザーは、認証フローを増幅するボックス外のボックスアウトを使用して認証されます。
ユーザーは、アプリの唯一の画面にリダイレクトされています:フィード。
ユーザーが画像をアップロードしたとき:
ユーザーが不適切なコンテンツにフラグを立てるとき:
ユーザーが写真を気に入る/解き放つとき:
ユーザーが画像を削除するとき:
ユーザーがフィードを再リッシュするとき:
このアプリをローカルマシンで実行するには、次のツールが必要です。
博覧会CLI
npm install -g expo-cliAWSアカウント
npmのノードJS
AWSはCLIを増幅します
npm install -g @aws-amplify/cliamplify configure (ステップバイステップビデオのリンク)。 git clone https://github.com/yhenni1989/plush
cd plush
yarn add aws-amplify aws-amplify-react-native
# or
npm install aws-amplify aws-amplify-react-native
amplify init

amplify add auth
# When prompt, choose: Yes, use the default configuration.
amplify add storage
# Choose: Content (Images, audio, video, etc.)
# Give access to only authenticated users.
# Give users read/write acces.
amplify add api
# Choose GraphQL as the API service.
# Choose an authorization type for the API: Amazon Cognito User Pool
# Do you have an annotated GraphQL schema? Yes
# Provide your schema file path: src/graphQL/schema.graphql
type Picture @model {
id : ID !
pictureOwnerId : String !
pictureOwnerUsername : String !
visibility : Visibility
file : S3Object
likes : [ Like ] @connection ( name : " PictureLikes " )
flags : [ Flag ] @connection ( name : " PictureFlags " )
}
type Like @model {
id : ID !
likeOwnerId : String !
likeOwnerUsername : String !
picture : Picture @connection ( name : " PictureLikes " )
}
type Flag @model {
id : ID !
flagOwnerId : String !
flagOwnerUsername : String !
picture : Picture @connection ( name : " PictureFlags " )
}
type S3Object {
bucket : String !
region : String !
key : String !
uri : String !
}
enum Visibility {
public
private
} amplify push

Do you want to generate code for your newly created GraphQL API: No.
AWS Amplify CLIは、Amazon CognitoユーザープールとID3バケツを作成し、各ユーザーの写真を保存するAmazon S3バケット、Amazon Dynamodbを使用してメタデータを写真(すなわち、バケット、フラグ、所有者、作成日など)を保存するAWS AppSync GraphQl APIを作成します。
yarn
# or
npm install
src/myKeys.jsファイルにアクセスと秘密の鍵をコピーします。 const keys = {
accessKey : 'blablabla' ,
secretKey : 'blablabla' ,
}
export default keys expo start --ios
# or
expo start --android
アプリケーションが正常に実行された場合は、カメラアイコンを押し、デバイスライブラリへのアクセスを許可し、デバイスから画像を選択できるはずです。これにより、写真がS3にアップロードされ、GraphQL呼び出しが作成され、RecordがDynamoDBに入力されます。
その後、更新ボタンを押して画面に画像を表示できます。
他のユーザーの写真とは異なり、違ってフラグを立てることができ、独自の写真を削除できます。