Code Monkey home page Code Monkey logo

495_roomies's Introduction

Roomies

Table of Contents

  1. Overview
  2. Product Spec
  3. Wireframes
  4. Schema

Overview

Description

Allows users to create Rooms with their house/roommates to assign and keep track of completion of household tasks.

App Evaluation

[Evaluation of your app across the following attributes]

  • Category: Household/Organizational
  • Mobile: iPhone app, Mobile first experience
  • Story: Users can keep track of chores in shared spaces. Giving them a convient way to keep a list of tasks that they have access to as long as they have a phone.
  • Market: College students, renters, families, office workers
  • Habit: users can create tasks as the chores arise, so multiple times a day
  • Scope: Allowing users to just keep track of tasks but would like to expand to messaging and commenting options among users.

Product Spec

1. User Stories (Required and Optional)

Required Must-have Stories

  • Users can create an account

    • Video Walkthrough
  • Users can login

    • Video Walkthrough
  • Users can see a list of all tasks assigned to them

  • Users can see a list of rooms they are in

  • Users can create a room

    • Previous 3 stories in this gif
    Video Walkthrough
  • Users can add other users to the room Video Walkthrough

  • Users can create tasks in the room Video Walkthrough

  • Users can assign tasks in the room Video Walkthrough

  • Users can mark a task complete

Optional Nice-to-have Stories

  • Users can delete a room
  • Users can see how many tasks they have completed
  • Users can add personal tasks without creating a room
  • Users can post comments in the room
  • Users can message other users

2. Screen Archetypes

  • Login
    • Users can login
  • Register
    • Users can create an account
  • Stream
    • Users can see a list of all tasks assigned to them
    • Users can mark a task complete
  • Rooms
    • Users can see a list of rooms they are in
    • Users can create a room
  • Room
    • Users can add other users to a room
    • Users can create tasks in the room
    • Users can assign tasks to others users
    • Users can mark a task complete
  • Task
    • Users can create a task

3. Navigation

Tab Navigation (Tab to Screen)

  • Stream
  • Rooms

Flow Navigation (Screen to Screen)

  • Login
    • Stream
    • Register
  • Register
    • Stream
  • Stream
    • Task
    • Rooms
  • Rooms
    • Room
  • Room
    • Task

Wireframes

[BONUS] Digital Wireframes & Mockups

[BONUS] Interactive Prototype

Schema

[This section will be completed in Unit 9]

Models

  • Users:
    • userId: String, unique ID for each user that is created
    • Username: String, a unique identifier chosen by the user
    • Rooms: List, a list of roomIDs that the user has been assigned to
    • Password: String, a password created by the user
  • Rooms:
    • roomID: String, a unique identifier for each room created
    • Roomname: String, a non unique identifier for the room created by the user
    • Tasks: List, a list of tasks created for that room
    • Users: List, all users assigned to a room
  • Tasks:
    • TaskID: string, a unique identifier generated for each task
    • Taskname:string, a non unique identifier given by the user
    • Description: string, a description of the task given by the user
    • createrID: string, the id of the user who created the task
    • assignID: string, the id of the user assigned to the task

Networking

  • Login Screen (Read/GET) Query logged in user object let query = PFQuery(className:"User") query.whereKey("id", equalTo: currentUser) var user = [PFObject]? if let error = error { print(error.localizedDescription) } else if let user = { print("Successfully retrieved (user) ") // TODO: Do something with users... } }
  • Register Screen (Create/OBJECT) Create a new user object let newUser = PFUser()
    // set user properties newUser.username = usernameField.text newUser.email = emailField.text newUser.password = passwordField.text // call sign up function on the object newUser.signUpInBackground { (success: Bool, error: Error?) in if let error = error { print(error.localizedDescription) } else { print("User Registered successfully") // manually segue to logged in view } } }
  • Stream Screen let query = PFQuery(className:"Task") query.order(byDescending: "createdAt") query.findObjectsInBackground { (tasks: [PFObject]?, error: Error?) in if let error = error { print(error.localizedDescription) } else if let tasks = tasks { print("Successfully retrieved (tasks.count) tasks.") // TODO: Do something with posts... } } (Read/GET) Query existing task object(s)
  • Rooms Home Screen let query = PFQuery(className:"Room") query.order(byDescending: "createdAt") query.findObjectsInBackground { (posts: [PFObject]?, error: Error?) in if let error = error { print(error.localizedDescription) } else if let rooms = rooms { print("Successfully retrieved (rooms.count) rooms.") // TODO: Do something with rooms... } } (Read/GET) Query existing room object(s)
  • Create Room Screen (Create/OBJECT) Create a new room object let newRoom = PFUser()
    // set room properties newUser.roomName = roomnameField.text // call room creation on object newUser.signUpInBackground { (success: Bool, error: Error?) in if let error = error { print(error.localizedDescription) } else { print("Room created successfully") // manually segue to rooms view } } }
  • Individual Room Home Screen

let query = PFQuery(className:"Rooms") query.whereKey("id", equalTo: currentUser) query.order(byDescending: "createdAt") query.findObjectsInBackground { (rooms: [PFObject]?, error: Error?) in if let error = error { print(error.localizedDescription) } else if let rooms = rooms { print("Successfully retrieved (posts.count) posts.") // TODO: Do something with posts... } } (Read/GET) Query existing task object(s) for user-selected room

  • Add People Screen let query = PFQuery(className:"User") query.whereKey("id", equalTo: currentUser) var user = [PFObject]? if let error = error { print(error.localizedDescription) } else if let user = { print("Successfully retrieved (user) ") // TODO: Do something with users... } } (Read/GET) Query existing user object(s) for user-selected room
  • Add Task Screen let newTask = PFObject()
    // set task properties newTask.name = nameField.text newTask.description = descriptionField.text // call task creation on the object newTask.createInBackground { (success: Bool, error: Error?) in if let error = error { print(error.localizedDescription) } else { print("Task created successfully") // manually segue to individual room view } } } (Create/OBJECT) Create a new task object
  • Task Screen (Read/GET) Query user-selected task object

495_roomies's People

Contributors

sambusane avatar csteiner2000 avatar josec07 avatar

Watchers

 avatar

495_roomies's Issues

Project Feedback!

๐Ÿ‘ Nice work on the second implementation sprint! Excited to see your progress next week!

Project Feedback!

๐Ÿ‘ Nice job on the wireframes! Wireframing is a common practice when building apps as it lets you create a blueprint for the app before writing any code. Having a really good blueprint that you can refer to throughout the rest of the project is a really valuable resource and will make it much easier to split up work across your team.

With the wireframes in hand, you should have a good idea of what your app will look like when you finish the project. Next week we'll jump into the data schema.

Project Feedback!

It looks like the following deliverables are not included in this milestone:

  • Sprint Plan: Issues added to project and assigned to specific team members

In order for us to count these towards your submission, please push your updates and submit your group milestone again through the course portal within 48 hours from the posted deadline so that we can regrade it.

Project Feedback!

It looks like the following deliverables are not included in this milestone:

  • Sprint planned for next week -- Issues created, assigned & added to project board

Since the extension period is over, we will no longer regrade any resubmissions made after this date. We just want to let you know to make sure you reflect the features in your future submissions.

Project Feedback!

๐Ÿ‘ Great job on the first implementation sprint! The app is really starting to come together. There are 2 weeks left to complete all of the required stories so that you have an MVP (minimum viable product). The purpose of this is to get the minimum set of functionality implemented first and then focus on adding in optionals afterwards. This ensures you have all the basics in place before adding in the additionals and polish.

Project Feedback!

๐Ÿ‘ Thanks for submitting your progress for this sprint! This is a big milestone as now it's all about adding optionals and additional polish to the app. Next week we go into the final sprint before demo day.

Users can Login

Using valid credentials Users can login to their account and stay logged in.

Project Feedback!

๐Ÿ‘ Thanks for submitting your final GIF walkthrough! It's pretty remarkable when you step back and think about how far you've come in the course. ๐Ÿ‘ We started with a simple tip calculator and ended with a fully functional app that you've built from the ground up.

Make sure to review the demo day tips as these will help you put together an engaging demo. Best of luck on demo day! ๐ŸŽ‰

Project Feedback!

๐Ÿ‘ Nice work on getting the data schema defined! Next week we jump into the first implementation sprint. You'll have 3 sprints (one week each) to complete all the required stories for your app and 2 sprints (one week each) to work on optionals and add polish. Let us know if we can help in any way!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.