Skip to content

App Design Document

Kristie Huang edited this page Aug 9, 2017 · 61 revisions

Table of Contents


App Design

Objective

[explain the goal of the app] A group of friends or family wants to find time to go out together, but scheduling & location decision is difficult. Enter app. Free, easy, and fast.

Audience

[who is this app targeting?] Groups of friends or family who want to coordinate times & locations to go out together. Want an easy way to coordinate events logistically without having to go through back-and-forth messaging/frequent changes.

Experience

[how will your users interact with this app?] Host creates event & determines timeframes. Host shares to event attendees. Event attendees select the times that they're available within the given timeframe. They may also optionally suggest locations or have the app generate a random location within preference parameters & in a given distance radius. The app generates the best timeslot & location for everyone, and creates event reminder for all attendees.

Back to top ^


Technical

Screens

  • [list the different screens used in the app]
  • Splash
  • Sign-in / Sign-up
  • Home - Groups
  • Add event
  • Event calendar
  • Event location
  • Share event
  • Event results
  • Vote
  • User profile

External services

  • [list which APIs or external services will your app use?]
  • Google Calendar
  • Firebase
  • Location choose based on preference (Picky-like)

Views, View Controllers, and other Classes

  • Views

    • [list all views you will need]
    • Event table view cell
  • View Controllers

    • [list all view controllers you will need]
    • Splash -> Sign-in / Sign-up -> Home
    • Home -> Edit event -> Event calendar -> Optional event location
    • Home -> Add event details -> Event calendar -> Optional event location -> Share event
    • Home -> Event results
    • External --> Vote -> Event results
    • Home -> Profile
  • Other Classes

    • [list any other classes you will need]

Data models

  • [list all Parse data models your app will need]

Back to top ^


MVP Milestones

[The overall milestones of first usable build, core features, and polish are just suggestions, plan to finish earlier if possible. The last 20% of work tends to take about as much time as the first 80% so do not slack off on your milestones!]

Week 1

planning your app

  • [goals for the week] Planning/Hackathon, Firebase implementation, user authentication, basic app architecture/UI

Week 2

finishing a usable build

  • [goals for the week, should be finishing a usable app]
  • Continue wk 1,
  • create event details
  • cocoapods calendar
  • create event class
  • save event/user to Firebase database
  • show saved events on home page (like Notes but using Firebase storage/database)
  • select more than 1 date at a time
  • save selected dates to database (select more than 1 at a time)
  • display table array on tableview
  • populate array w/ data from Firebase (show func)
  • have table reload every time

Week 3

  • [goals for the week] Continue wk2
  • display top results
  • display dates as Jan 1, 2017
  • reorganize view controllers/architecture
  • save logged in user
  • drag/longpress gestures to select range of dates
  • display users in findFriends popup
  • invite other users on same event
  • invited/hosting both displayed on table cell
  • differentiate view controller based on invited/hosting

Week 4

  • [goals for the week, should be finishing all core features] Continue wk3
  • fix invitee calendar view
  • allow invitees to select & save dates
  • merge votes, create new database entries
  • display in best dates controller
  • cannot select dates in indate/outdate
  • if date already selected, display
  • display invitees in invitee table view.
  • format dates as "July 23, 2017"
  • fix "host | responses | status"
  • remove invitees from inviteeVC

Week 5

starting the polish

  • [goals for the week] Continue wk4
  • user logout
  • slide to delete events
  • fix remove invitees from inviteeVC. when new, invitee delete broken.
  • when editing, not working as expected.
  • clean up inviteeEmails/Names/myInvitees/blahblah
  • show host (or existing) dates in light blue.
  • show selected date in orange
  • when invited, sends text/email to invitees. invitees prompted to download app. anonymous login, fill in name. see EventVC+BestDates. after, redirected to splash/login. //****can invite people who are not users
  • redesign invitee-view on event controller, orange select on top of highlighted
  • login cancel broken
  • tutorial alert when log in / tutorial in settings
  • create tutorial
  • create alertController from send -> send final invite or send invite friends
  • fix invitee
  • host finalizes best time
  • save dates to DatesChosen doesn't work in unwind segue
  • display events on timeline chronologically by creationDate
  • create different sections of EventTableView, sort by hosting/inviting
  • change indicator color
  • add to calendar
  • delete invited event, pops back up
  • tutorial

  • flag
  • username cannot be repeated; sort findFriends by name/alphabetical
  • create groups of users / family, team, etc
  • after download app, must log in using same email that invited with. then display events invited to using email
  • everyone's dates in separate database entry.
  • create popup when selected date, implement datePicker in popup
  • add time in view controller & database
  • select more than 1 range of dates
  • display range of dates as r a n ge
  • display friends only in invitee
  • see all invitees in bestDatesVC
  • share finalized event details via social platforms

Week 6

submitting to the App Store

  • [goals for the week, should be finishing the polish -- demo day on Saturday!]
  • Continue wk5
  • submit to App Store
  • clean UI
  • dynamic link invites on Firebase (https://firebase.google.com/docs/invites/ios)
  • sign-in via Google/implement Google Calendar
  • save to calendar EKEventKit
  • location randomize/suggest (use API?) // or just location textbox
  • notification
  • commenting features
  • user-testing, new features
  • screenshots/mockups

Back to top ^