
Plush-это мобильное приложение для полного стека для обмена фотографиями. Он использует Expo и реагирует на себя для передней части, AWS Amplify в качестве среднего обслуживания, а служба API построена с GraphQL.
Демо -видео функциональности приложения здесь.
После регистрации/войны пользователи могут выполнить следующее:
Пользователи аутентифицируются, используя поток AWS AMPLIFY Authentication Flow.
Пользователи перенаправлены на единственный экран приложения: канал.
Когда пользователь загружает изображение:
Когда пользовательские флаги неподходящего контента:
Когда пользователю нравится/не снимается на картинке:
Когда пользователь удаляет изображение:
Когда пользователь обновляет канал:
Чтобы запустить это приложение на местной машине, вам нужны следующие инструменты:
Expo Cli
npm install -g expo-cliУчетная запись AWS
Узел JS с NPM
AWS Amplify 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, ковш Amazon S3 для хранения картинок каждого пользователя и API APS Appsync GraphQL, в котором используется Amazon DynamoDB для хранения метаданных о изображениях (то есть имя ведра, лайки, флаги, владелец, дата творения ... и т. Д.).
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, чтобы ввести запись в DynamoDB.
Затем вы можете нажать кнопку обновления, чтобы отобразить изображение на экране.
Вы можете любить/в отличие от фотографий других пользователей и удалить свои собственные фотографии.