{"id":13533361,"url":"https://github.com/pjay79/PhotosApp","last_synced_at":"2025-04-01T21:32:13.825Z","repository":{"id":118470681,"uuid":"139349555","full_name":"pjay79/PhotosApp","owner":"pjay79","description":"React Native Photos App: AWS Amplify, AWS S3, Mobile Analytics with Pinpoint","archived":false,"fork":false,"pushed_at":"2018-07-20T23:04:37.000Z","size":1392,"stargazers_count":21,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-02T20:33:06.307Z","etag":null,"topics":["analytics","aws-amplify-react-native","aws-s3","camera","photo","photos","pinpoint","react-native","upload"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pjay79.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-07-01T17:50:48.000Z","updated_at":"2023-05-12T16:51:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"3a9da36c-5fee-4fb3-aaa7-2baae145945a","html_url":"https://github.com/pjay79/PhotosApp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjay79%2FPhotosApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjay79%2FPhotosApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjay79%2FPhotosApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjay79%2FPhotosApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pjay79","download_url":"https://codeload.github.com/pjay79/PhotosApp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246713346,"owners_count":20821876,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","aws-amplify-react-native","aws-s3","camera","photo","photos","pinpoint","react-native","upload"],"created_at":"2024-08-01T07:01:19.042Z","updated_at":"2025-04-01T21:32:12.953Z","avatar_url":"https://github.com/pjay79.png","language":"JavaScript","funding_links":[],"categories":["Example Projects"],"sub_categories":["Other blogs \u0026 tutorials"],"readme":"# PhotosApp\n\nReact Native, AWS Amplify, AWS S3. Plus Mobile Analytics with Pinpoint. Please note: this is a work still in progress, and many features are not fully developed yet.\n\n\u003cimg width=\"1348\" alt=\"photos-screenflow\" src=\"https://user-images.githubusercontent.com/14052885/42986266-3f1cee3e-8c38-11e8-847f-86d9c7aff1f3.png\"\u003e\n\n## Screenshots\n\n### iOS\n\n![img_2410](https://user-images.githubusercontent.com/14052885/42982756-2fab57e0-8c26-11e8-8e7e-e750ed2d0d0d.PNG)\n![img_2439](https://user-images.githubusercontent.com/14052885/42982767-32693f60-8c26-11e8-82f7-09196775968e.PNG)\n![img_2411](https://user-images.githubusercontent.com/14052885/42982757-2ff3ace8-8c26-11e8-84a8-bd071cd96100.PNG)\n![img_2413](https://user-images.githubusercontent.com/14052885/42982758-302d0754-8c26-11e8-83c5-dc580f1e8a35.PNG)\n![img_2419](https://user-images.githubusercontent.com/14052885/42982762-310ed9ea-8c26-11e8-934d-ea7d9c84de2f.PNG)\n![img_2415](https://user-images.githubusercontent.com/14052885/42982759-3076d05a-8c26-11e8-9124-4ae48fd23ca6.PNG)\n![img_2437](https://user-images.githubusercontent.com/14052885/42982764-3160392a-8c26-11e8-9681-50b319c626f2.PNG)\n![img_2441](https://user-images.githubusercontent.com/14052885/42983720-8b864ec6-8c2b-11e8-9f5f-5bb456b8d4a8.PNG)\n![img_2445](https://user-images.githubusercontent.com/14052885/42995128-65b4a3aa-8c53-11e8-9d38-62f9a0cf48a3.PNG)\n![img_2438](https://user-images.githubusercontent.com/14052885/42982766-31e0a286-8c26-11e8-8ba7-a66afdb30ceb.PNG)\n\n## Technology stack:\n\n- aws-amplify-react-native\n- prop-types\n- react-native-app-intro-slider\n- react-native-camera\n- react-native-fetch-blob\n- react-native-share\n- react-native-splash-screen\n- react-native-vector-icons\n- react-navigation\n- rn-fetch-blob\n\n## Installation\n\n### React Native setup:\n\n`brew install node`\n\nThis project is running with Node version 10.6.0.\n\n`brew install watchman`  \n`npm install -g react-native-cli`\n\n### Project setup:\n\nClone the repo:\n`git clone https://github.com/pjay79/PhotosApp.git`  \nChange to the project folder:\n`cd PhotosApp`  \nAdd dependencies:\n`npm install` or `yarn`\n\n### Amazon\n\nSign up to AWS Free Tier:  \nhttps://aws.amazon.com/free/\n\n### AWS Mobile CLI setup\n\n(note: you will be directed to create a new **IAM** user and prompted to enter the **accessKeyId** and **secretAccessKey**, store these in a safe place):\n\n`npm install -g awsmobile-cli`  \n`awsmobile configure`  \n`awsmobile init` (in the project folder)\n\n![awsmobile2](https://user-images.githubusercontent.com/14052885/41520984-b04a9234-7313-11e8-9d6e-ead22f033725.jpeg)\n\n`awsmobile user-files enable`  \n`awsmobile push`  \n`awsmobile console` (opens the aws console in browser)\n\nThis project's source directory is 'app'.\n\n### AWS S3 setup:\n\nGo to S3 and find your AWS S3 bucket (exact name can be seen in the aws-exports file). Select 'Permissions' and update the Bucket and CORS policy.\n\n#### Bucket policy:\n\n```\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"AddPerm\",\n            \"Effect\": \"Allow\",\n            \"Principal\": \"*\",\n            \"Action\": \"s3:GetObject\",\n            \"Resource\": [\n                \"arn:aws:s3:::{your-bucket-name}/*\",\n                \"arn:aws:s3:::{your-bucket-name}\"\n            ]\n        }\n    ]\n}\n```\n\n#### CORS configuration:\n\n```\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cCORSConfiguration xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\"\u003e\n\u003cCORSRule\u003e\n    \u003cAllowedOrigin\u003e*\u003c/AllowedOrigin\u003e\n    \u003cAllowedMethod\u003eHEAD\u003c/AllowedMethod\u003e\n    \u003cAllowedMethod\u003eGET\u003c/AllowedMethod\u003e\n    \u003cAllowedMethod\u003ePUT\u003c/AllowedMethod\u003e\n    \u003cAllowedMethod\u003ePOST\u003c/AllowedMethod\u003e\n    \u003cAllowedMethod\u003eDELETE\u003c/AllowedMethod\u003e\n    \u003cMaxAgeSeconds\u003e3000\u003c/MaxAgeSeconds\u003e\n    \u003cExposeHeader\u003ex-amz-server-side-encryption\u003c/ExposeHeader\u003e\n    \u003cExposeHeader\u003ex-amz-request-id\u003c/ExposeHeader\u003e\n    \u003cExposeHeader\u003ex-amz-id-2\u003c/ExposeHeader\u003e\n    \u003cExposeHeader\u003eETag\u003c/ExposeHeader\u003e\n    \u003cAllowedHeader\u003e*\u003c/AllowedHeader\u003e\n\u003c/CORSRule\u003e\n\u003c/CORSConfiguration\u003e\n```\n\n### AWS Analytics:\n\nSelect 'Mobile Analytics' in the AWS Services section. Check the Region Table to make sure Pinpoint is available in your country.\n\nhttps://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/\n\n### Launch\n\nConnect your hardware device via USB.\n\nRun on ios:\n`react-native run-ios --device \"iPhone\"`  \nRun on android:\n`react-native run-android`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpjay79%2FPhotosApp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpjay79%2FPhotosApp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpjay79%2FPhotosApp/lists"}