Skip to content

Instantly share code, notes, and snippets.

@angus-ics
Last active April 29, 2016 07:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save angus-ics/0ae9537ab15b8146874aa2d9f93b4499 to your computer and use it in GitHub Desktop.
Save angus-ics/0ae9537ab15b8146874aa2d9f93b4499 to your computer and use it in GitHub Desktop.
Vint Design

Views

SplashView

Initial launch stuff happens, we get the Config object, authenticate the user, etc. If the User is not authenticated we show the Facebook button and allow them to login.

OnBoardingView

This is only shown the first time the user launches the app. We explain the concept of the app in a few slides. For example:

  1. Check out upcoming wine events
  2. Match with other Vinters.
  3. Chat with like minded people.

HomeView

A tabbed view, the user is taken here after authentication. that starts off with EventList

EventListView

List of up coming events to join. This is a child of HomeView.

EventView

All the details about an event. Enter here from EventListView.

BagelListView

List of people the user can like or dislike. If the users like eachother they are 'matched' and we open up a chat room in the ChatListView.

BagelView

The profile of another User in our app. Users can see profiles of other Users through the EventList or through Bagels in the BagelListView.

ChatListView

List of people the user can chat with. This list is comprised of people you have matched with and people who are in the same event with you, and have sent you a message or you have a sent a message to.

ChatView

Enter here after tapping on a row in ChatListView.

ProfileView

Your profile, this is where you set your biography, upload your profile pictures and manage your interests.

AddPaymentView

This is where the User adds in their payment information. Credit Card, Paypal, Bitcoin, Yencoin, etc.

PaymentConfirmView

After buying a ticket for an event, this View shows up, asking you to confirm your purchase,

FullImageView

Shows a full screen image. Allow swiping right/left to navigate between images in an album. Quite a simple view.... for now.

User Flows

###New User

  • SplashView
  • OnBoardingVIew
  • ProfileView
  • HomeView

###Returning User

  • SplashView
  • HomeView

###Buy Ticket (No Payment Method)

  • HomeView
  • EventListView
  • EventView
  • AddPaymentView
  • PaymentConfirmView

###Buy Ticket (Has Payment Method)

  • HomeView
  • EventListView
  • EventView
  • PaymentConfirmView

###Profile Updating

  • HomeView
  • ProfileView

###Handle Bagels

  • HomeView
  • BagelListView
  • BagelView

###Chatting Flow

  • TabView
  • ChatListView
  • ChatView

###Event Creation

  • We, IC Studio, search for Wine Tasting Events.
  • We contact the Event host and ask if we can list it in our app.
  • We copy textual information from the event, name, description, start time, end time, address.
  • We get pictures of the events somewhere.
  • We run an internal tool that uploads the pictures to S3 and writes the Event object into Firebase.

Model Objects

User

Similar to User objects in Hopsee. wineName is like display name, except the User gets to choose their wineName from a list of options.

[userId]
  userId
  biography
  firstName
  lastName
  birthDate
  wineName
  gender
  isBanned
  isJerk
  email
  imageList
    0
    1
    2
    3
  interestList
    0
    1
    2
    3

Event

Wine tasting events that the User's can join.

[eventId]
  eventId
  name_en-US
  name_zh-HK
  startTime
  endTime
  address_en-US
  address_zh-HK
  description_en-US
  description_zh-HK
  maxPeople
  imageList
    0
    1
    2
    3
  website

EventMember

Similar to PartyMember in Hopsee. Just here to list the members of an Event. An event can have multiple members. A User can join multiple events.

[eventId]
  [userId]
    userId
    wineName
    gender
    imageList
      0
      1
      2
      3

Interest

Things that a User has liked on Facebook.

[interestId]
  interestId
  name
  imageUrl

ChatMessage

Similar to the ChatMessage objects in Hopsee. Except we have time and type fields. Possiblility for voice/images/gifs messages later.

[chatId]
  [chatMessageId]
    chatMessageId
    parameters
    senderId
    senderName
    type {Text, SystemMessage}
    content
    time

ChatMessageUnread

Just like ChatMessage, these are here to indicate that they haven't been read by the User. Once the user has clicked into the Chat, we clear out this path.

[chatId]
  [chatMessageId]
    chatMessageId
    parameters
    senderId
    senderName
    type
    content
    time

Notification

Same as in Hopsee. These objects are processed by the back end and created by the clients. Once the back end has finished working with them they are deleted.

[notificationId]
  deviceToken
  deviceType {iOS, Android}
  locKey
  locArgs
  userId

LikeList

A list of userIds that a user has liked.

[userId]
  [likedUserId]
    likedUserId

EventPricing

Describes the different price points for event tickets. Examples "$140 for 1", "$238 for 2", "$300 for 3".

[eventId]
  [eventPricingId]
    price
    ticketCount

BagelList

A list of other Users a User can match with.

[userId]
  [otherUserId]
    userId
    wineName
    imageList
      0
      1
      2
    interestList
      0
      1
      2
    biography

ChatList

A list of chat rooms that a User can enter. These can be group or one on one chats.

[userId]
  [otherUserId]
    chatId
    chatName
    imageUrl
    userId

Config

Configuration object to control the app remotely. Just like in Hopsee.

  terms
  minIOSBuild
  minAndroidBuild
  googleWebApiKey
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment