It's an app where people can put up what items they would like to trade or give away, giving the option for other people to trade for things they want.
Required Must-have Stories
Optional Nice-to-have Stories
Tab Navigation (Tab to Screen)
Flow Navigation (Screen to Screen)
Login
Profile
Messages
Feed/FeedMap
ComposePost
User
Property | Type | Description |
---|---|---|
objectId | String | unique id for the post (default field) |
author | Pointer to User | image author |
image | File | image that user posts |
title | String | image caption by author |
description | Number | number of comments that has been posted to an image |
likesCount | Number | number of likes for the post |
location | String | location for the trade |
createdAt | DateTime | date when post is created (default field) |
updatedAt | DateTime | date when post is last updated (default field) |
Property | Type | Description |
---|---|---|
objectId | String | unique id for the user (default field) |
image | File | image of user |
username | String | user's name |
password | String | user's password |
String | user's email | |
emailVerified | Bool | if user has verified his email |
authData | Object | user data |
createdAt | DateTime | date when post is created (default field) |
updatedAt | DateTime | date when post is last updated (default field) |
Property | Type | Description |
---|---|---|
objectId | String | unique id for the message (default field) |
userA | Pointer to User | user from chat |
userB | Pointer to User | user from chat |
createdAt | DateTime | date when post is created (default field) |
updatedAt | DateTime | date when post is last updated (default field) |
Property | Type | Description |
---|---|---|
objectId | String | unique id for the message (default field) |
message | String | user's message |
sender | Pointer to User | user object |
chat | Pointer to Chat | chat object |
createdAt | DateTime | date when post is created (default field) |
updatedAt | DateTime | date when post is last updated (default field) |
CRUD | HTTP Verb | Example |
---|---|---|
Create | POST | Creating a new user |
Create | POST | Create a post |
Create | POST | Create a direct messsage |
Create | POST | Logout from current session |
Create | POST | Send message to another user |
Read | GET | Login the user |
Read | GET | Get an existing user |
Read | GET | Fetching posts for user's feed |
Read | GET | Fetch the user's chats |
Read | GET | Get messages from a chat |
Update | PUT | Update existing user profile picture |
Update | PUT | Change user's name |
Update | PUT | Change user's password |
Delete | Delete | Delete an existing user |
Login Screen
(Create/POST) Creating a new user
if([self usernameEmpty:self.usernameText.text password:self.passwordText.text])
return;
PFUser *newUser = [PFUser user];
newUser.username = self.usernameText.text;
newUser.password = self.passwordText.text;
[newUser signUpInBackgroundWithBlock:^(BOOL succeeded, NSError * _Nullable error) {
if(succeeded){
//let user in
}else{
//alert user of error
}
}];
(Read/GET) Login the user
if([self usernameEmpty:self.usernameText.text password:self.passwordText.text])
return;
NSString *username = self.usernameText.text;
NSString *password = self.passwordText.text;
[PFUser logInWithUsernameInBackground:username password:password block:^(PFUser * _Nullable user, NSError * _Nullable error) {
if(error){
//alert user of error
}else{
//let user in
}
}];
Home Feed Screen
(Read/GET) Fetching posts for user's feed
PFQuery *query = [PFQuery queryWithClassName:@"Post"];
query.limit = 20;
[query orderByDescending:@"createdAt"];
[query includeKey:@"author"];
[query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable posts, NSError * _Nullable error) {
if(!error){
//do something with posts
}else{
//error
}
}];
//change scenes
[PFUser logOutInBackgroundWithBlock:^(NSError * _Nullable error) {
//do something
}];
Messages Screen
Profile Screen
Compose Post Screen
(Create/POST) Create a post
Post *newPost = [Post new];
newPost.image = [self getPFFileFromImage:image];
newPost.author = [PFUser currentUser];
newPost.caption = caption;
newPost.likeCount = @(0);
newPost.commentCount = @(0);
[newPost saveInBackgroundWithBlock:];
User Settings Screen
Compose Post Screen
Direct Messages Screen
[OPTIONAL: List endpoints if using existing API such as Yelp]
List an 3rd party libraries, icons, graphics, or other assets you used in your app.