As part of the #AmplifyHashnode hackathon, I’ll be building out a restaurant discovery/review app. Now because I only have 20 days and a full time job, these posts will be considered rough drafts that I will fine tune at a later date.
Disclaimer: I spent 2 years building something similar and worked in restaurants damn near my whole life. At the time I barely knew any of the software, except React-Native, including AWS Amplify and it's large ecosystem. I’m gonna try and recreate a portion of that app in a fraction of the time with the power of AWS Amplify. I'm also a part of the AWS Community Builders program, specializing in Web and Mobile developemnt
There’s lots of possibilities I’m considering for MVP but they’re pretty lofty and there’s a good chance I won’t get to them all. That said, I think it’s important to share the considerations I had from the beginning so that you can see how much things change as you start to build. Here’s a brain dump of thoughts that go into building this type of app.
Considerations:
Data Types (Data Access Patterns to come) with DynamoDB
1. User 2. Restaurant/Location/Establishment 3. User Feedback for restaurant 4. Follow/Like restaurants 5. Follow other users 6. Checkin 7. Menus
Sourcing Restaurant menus and details (Google or User sourced?)
- QR codes at restaurants for menus and checkin
- Storing photos in S3
- Setting up ElasticSearch for location
- React-Native for Web consideration
- Authentication with Cognito
- Location Awareness
- Take advantage of Expo
Steps to building app:
- Create App with Expo
- Initialize App with Amplify
- Set up Authorization (Discuss initial setup and attributes with cognito and gotchas)
- Set up GraphQL Schema
- Walk through data types
- Walk through data access patterns
- Discuss Auth directives
- Discuss @key and GSI’s
- @Searchable
- Add location awareness
- Decide on Restaurant data sourcing solutions
- Have restaurants populate data
- Use google / foursquare api
- Have Users add menus
- Add user ability to search/discover restaurants
- Add Checkin to restaurant based on proximity
- Add Feedback Screen with photo and text input
- Add history of checkins/reviews
- Add create user flow after checkin
- UI Screens to Consider
- List View of Restaurants
- Map View of Restaurants
- Search View of Restaurants
- Detail View of Restaurant
- Potential Menu View
- Review Screen
- History Screen
- Liked/Followed Restaurants screen
- User Profile
I'll be diving into a lot of these topics listed in the steps above, sharing the behind the scenes thinking as I go via posts and tweets.
Follow my the journey here and at twitter.com/andthensumm.