This repo is the react native mobile app for anml.
anml is a social network for pets.
- Your pets can sign up or login using their paws.
- They can upload selfies or post their thoughts for other pets to see.
- They can also look at other pets posts and either paw (like) or scratch (dislike) it.
git clone https://github.com/ryanliszewski/anml.git
yarn install or npm install
To run the app locally:
exp ios (to run on iOS)
or
exp android (to run on android)
or
exp start
- Learn how to style screens and create navigation between them.
- Learn advanced RN styling and use LinearGradient, Image, Icons & Custom Fonts
- Learn creating custom components with proptypes
- Learn basic Redux
- Design & build an Intro Screen
- ⭐ Bonus: Add Snap Carousel with Lottie animations to Intro Screen
- [ x ] Design & build an Signup Screen
- ⭐ Bonus: Add buttons to sign up with Facebook & Twitter
- [ x ] Design & build an Login Screen
- ⭐ Bonus: Add buttons to login with Facebook & Twitter
- [ x ] Design & build an Profile Screen
- ⭐ Bonus: Add the Logout button
- [ x ] Design & build an Social Feed Screen
- Attach screenshots/gif of screens to
README.MD
####Landing
- Understand the 3 main navigation patterns for mobile apps:
- Setup a IntroStack (using StackNavigator) for the Intro Screen (root), Login Screen (push) & Sign Up Screen (push)
- Setup a HomeTabs (using TabNavigator) for the Social Feed Screen (default) and Profile Screen
- Setup a RootNavigator (using StackNavigator) with the IntroStack & HomeTabs with
mode: "modal" - Design & build an Edit Profile Screen
- Setup a ProfileStack (using StackNavigator) for the Profile Screen (root), Post Details Screen (push) & Edit Profile Screen (modal) with mode: "modal" and custom RNE header component
- Design & build a Post Details Screen
- Design & build a Create Post Screen
- Setup a SocialStack (using StackNavigator) for the Social Feed Screen (root), Post Details Screen (push) & Create Post Screen (modal) with mode: "modal" and custom RNE header component
- ⭐ Bonus: Display Posts on ProfileScreen
- ⭐ Bonus: Setup a HomeNavigator(using DrawerNavigator) with the HomeTabs (as root) and update RootNavigator to use HomeNavigator instead of HomeTabs
- Add working gif of app to
README.MD
- Intro Screen - Make simple
GETrequest to/apito check server status - Signup Screen - Make
POSTrequest to/auth/signupto create a new user- ⭐ Bonus: Add UI validation to Signup Screen - name (not null), email (format) & password (min. 8 characters)
- Login Screen - Make
POSTrequest to/auth/loginto validate and login an existing user- ⭐ Bonus: Add UI validation to Login Screen - email (format) & password (min. 8 characters)
- Social Feed Screen - Make
GETrequest to/api/feed/to get all posts for social feed- [] ⭐ Bonus: Use
ActivityIndicatorto show placeholder loading when fetching feed data - [] ⭐ Bonus: Use
DeviceEventEmitterto trigger fetching posts when thenew_post_createdevent is emitted - [] ⭐ Bonus: Use
timeSince()utility function to show relative times for post creation
- [] ⭐ Bonus: Use
- [] Create Post Screen - Make
POSTrequest to/api/users/:userId/poststo create a new post by the user- Use ImagePicker (expo) to allow the user to add a picture to the post - Snack demo here
- [] ⭐ Bonus: Use
DeviceEventEmitterto emitnew_post_createdevent once post is created
- [] ⭐ Bonus: Use
- Use ImagePicker (expo) to allow the user to add a picture to the post - Snack demo here
- Profile Screen - Make
GETrequest to/api/users/:userIdto get all the profile data- [] ⭐ Bonus: Use
ActivityIndicatorto show placeholder loading when fetching profile data - [] ⭐ Bonus: Use
DeviceEventEmitterto trigger fetching profile data when theuser_profile_updatedevent is emitted
- [] ⭐ Bonus: Use
- [] Edit Profile Screen - Make
PUTrequest to/api/users/:userIdto update a user's profile information- [] ⭐ Bonus: Use
DeviceEventEmitterto emituser_profile_updatedevent once user data is updated
- [] ⭐ Bonus: Use
- Setup Authentication flow for app using
AsyncStorage. Once the user has logged in then take them to home page each time they open the app again
- Add Like, Comment and Follow API functionality
- Clean up and format
README.MDto showcase app - follow this template - ⭐ Bonus: Add phone number UI to Edit Profile screen
- ⭐ Bonus: Add Camera functionality to Create Post screen
- ⭐ Bonus: Use Redux to share state between tab bar & screens
- Add working gif of app to
README.MD
- - Like functionality with Redux
- - Create pack functionality
**Namespace:** `/auth`
// User Authentication endpoints
router.post('auth/signup'); // CREATE
router.post('auth/login'); // VALIDATE / READ
**Namespace:** `/api`
// All data endpoints
router.get('api/users/all'); // READ
router.get('api/posts/all'); // READ
// Social Feed endpoints
router.get('api/feed'); // READ
// User data endpoints
router.get('api/users/:userId'); // READ
router.put('api/users/:userId'); // UPDATE
// Posts endpoints
router.get('api/posts/:postId'); // READ
router.post('api/users/:userId/posts'); // CREATE
router.put('api/users/:userId/posts/:postId'); // UPDATE
router.delete('api/users/:userId/posts/:postId'); // DELETE
// Follower endpoints
router.get('api/users/:userId/followers'); // READ
router.get('api/users/:userId/following'); // READ
router.post('api/users/:userId/follow/:followingId'); // CREATE
router.post('api/users/:userId/unfollow/:followingId'); // DELETE
// Like endpoints
router.get('api/posts/:postId/likes'); // READ
router.post('api/posts/:postId/like/:userId'); // CREATE
router.post('api/posts/:postId/unlike/:userId'); // DELETE
// Comment endpoints
router.get('api/posts/:postId/comments'); // READ
router.post('api/posts/:postId/comment/:userId'); // CREATE
router.post('api/posts/:postId/uncomment/:userId'); // DELETE


