
O Plush é um aplicativo móvel de pilha completa para compartilhamento de imagens. Ele usa a Expo e o React Native para o front-end, a AWS amplifica como o serviço de back-end e o serviço de API é construído com o GraphQL.
Vídeo de demonstração das funcionalidades do aplicativo aqui.
Após inscrição/login, os usuários podem executar o seguinte:
Os usuários são autenticados usando o fluxo de autenticação AWS da AWS.
Usuários são redirecionados para a única tela do aplicativo: o feed.
Quando um usuário envia uma imagem:
Quando um usuário sinaliza conteúdo inadequado:
Quando um usuário gosta de/improvisora uma foto:
Quando um usuário exclui uma imagem:
Quando um usuário atualiza o feed:
Para executar este aplicativo em sua máquina local, você precisa das seguintes ferramentas:
Expo cli
npm install -g expo-cliConta da AWS
Nó JS com NPM
AWS Amplify CLI
npm install -g @aws-amplify/cliamplify configure (link para um vídeo passo a passo). 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.
O AWS Amplify CLI criará um pool de usuários e pool de identidade do Amazon Cognito, um balde do Amazon S3 para armazenar imagens de cada usuários e uma API APPSYNC APPSYNC que usa a Amazon DynamoDB para armazenar metadados sobre as imagens (nome do balde, curtidas, sinalizadores, proprietário, data da criação ... etc).
yarn
# or
npm install
src/myKeys.js do seu projeto. const keys = {
accessKey : 'blablabla' ,
secretKey : 'blablabla' ,
}
export default keys expo start --ios
# or
expo start --android
Se o aplicativo executar com sucesso, você poderá pressionar o ícone da câmera, permita o acesso à biblioteca do dispositivo e selecione uma imagem do seu dispositivo. Isso fará o upload da imagem para o S3 e fará uma chamada grafql para inserir o registro no DynamoDB.
Você pode pressionar o botão Atualizar para exibir a imagem na tela.
Você pode gostar/diferente de imagens de outros usuários e excluir suas próprias fotos.