Required Must-have Stories
- Set up Parse server & deploy with Heroku
- User is able to signup (and adds to user database) + login with Stripe
- Nonprofit able to signup + login with Stripe to receive
- User is able to logout
- User able to query from Parse to see Baskets on home page
- Basket detail view displays Basket info
- Nonprofit detail view displays nonprofit info
- User can make donation
- Keypad screen, integrates with payments API
- Screen animates when payment complete
- Profile screen displays nonprofit vs user status
- User can use camera to take profile pic
- Can zoom-in-out of prof pic/header pictures (gesture recognizer)
- Your app integrates with a SDK (e.g. Google Maps SDK, Facebook SDK)
- Your app incorporates an external library to add visual polish
Optional Nice-to-have Stories
- User can edit split percentages
- User can create new Baskets
- Profile page displays recent/fave causes/baskets
- Add social, see friends/public activity
- Search explore sees SearchVC for categories/recents/trending/etc
- Can change payment source (e.g. Paypal, Venmo, Coinbase)
- Use cryptocurrency to pay
- Pay in different currencies
- Splash
- Signup / Login
- User can signup/login
- (extra) Preview of Basket Explore page in background
- Explore
- See baskets on homepage
- Search baskets
- Basket Detail
- Nonprofit detail
- Payment flow
- Payment keypad screen
- Edit split percentage
- Payment SDK
- Thanks for donating!
- Profile page
- Settings
Tab Navigation (Tab to Screen)
- Explore Feed
- Search Screen
- (extra) Social Feed
- Profile
Flow Navigation (Screen to Screen)
- Login/Signup -> User Login Details -> PayPal signup -> Explore Feed
- Explore Feed -> Basket Page
- Search -> Basket or Nonprofit Page
- Profile -> Change profile pic page -> Camera
- Basket
- -> Nonprofit Page
- -> Donation Flow
- Donation Flow -> number keypad -> edit percentages (optional) -> PayPal API sign in -> Thank you for donation -> Exit to explore feed
- objectId (NSString)
- username (NSString)
- email (NSString)
- password (NSString)
- firstName (NSString)
- lastName (NSString)
- paymentInfo //unknown type for now, need to see how PayPal SDK works
- profilePicFile (PFFileObject)
- nonprofit (nil if not nonprofit, pointer to Nonprofit object if is)
- recentDonations (Array)
- favoriteNonprofits (Array)
- nonprofitId (NSString)
- nonprofitName (NSString)
- description (NSString)
- profilePicFile (PFFileObject)
- headerPicFile (PFFileObject)
- total value donated (double)
- user (pointer to User)
- belongsInBaskets (NSArray)
- basketTransactionsMadeToNonprofit (NSArray)
- PayPal payments
- paymentId (NSString)
- merchantId (NSString)
- email (NSString)
- website (NSString)
- category (NSString)
- updatedAt (NSDate; date joined or new activity)
- basketId (NSString)
- name (NSString)
- description (NSString)
- createdAt (NSDate)
- headerPicFile (PFFileObject)
- totalValueDonated (double)
- isFeatured (BOOL)
- nonprofits (Array)
- createdBy (pointer to User)
- basketTransactionId (NSString)
- payment method //unknown type yet, need to see how PayPal SDK works
- user (pointer to User)
- totalAmount (double)
- basketRecipient (pointer to Basket)
- individual nonprofit txs (Array)
- nonprofit (pointer to Nonprofit)
- percentage to nonprofit (double)
- individualTransactionId (NSString)
- createdAt (NSDate)
- Signup / Login
- User login / signup (GET or PUT new user)
- Nonprofit login/signup (PUT new nonprofit)
- Stripe account creation or login (PUT)
- Explore & Search
- (GET) Query featured baskets & recently added baskets
- Basket Detail
- (GET) Query baskets & nonprofits
- Nonprofit detail
- (GET) Nonprofit data and display
- Payment flow
- (POST) Create new transaction for each nonprofit (or batch tx, so you can undo entire tx if one fails)
- (POST to Parse) Save BasketTransaction to Parse API
- Profile page
- Settings
Stripe endpoints used: PaymentIntent, Customer, Connected Account, Charges.