Coder Social home page Coder Social logo

ufree's Introduction

uFree

An application for getting out and having fun!

Made by: Christian, Tianyue, Alice, Minqi (Team D)

uFree is an app to find friends who are available at the same times you are when you want to go out! The app provides options for users looking to spontaneously meet up with friends as well as for users interested in making plans in advance.

Test accounts

First Sprint Objectives:

  • Log In

    • Create LogIn activity.
    • Create "Log in" and "Sign up" buttons. The user can navigate to either the Sign Up page if they do not already have an account with us, or they can fill in the email and password fields and enter into the app.
    • Make email and password required input fields, with the email having to contain at least one @ symbol, and the password field having length 6 or more. We used Firebase to authenticate the users.
    • If either the email or the password is incorrect, a Toast box will appear on the Page, disallowing the user to continue into the app.
  • Sign Up

    • Create Sign Up activity, which can be navigated to from the sign up page.
    • Require new users to provide us with their full name, phone number, email, and password.
    • If an email is already in our database, the user would not be allowed to register and a Toast box will tell them accordingly.
    • If all the fields are completed, the user can press the sign up button, where they will be registered as an authenticated user, and their information will be propagated into our database, and proceed to the Welcome Activity.
  • Welcome

    • Create Welcome activity.
    • Create "Yes" and "No" button, and the user can select if he/she is free.
    • If "Yes" is selectd, add pop up window to ask for how long they are free. Add slider bar to read user input.
    • If "No" is selected, direct the user to Main activity.
    • Write user response to fireabse correspondingly.
  • Who is free

    • Create Main Activity.
    • Implement recycler view to display free users in the firebase.
    • Implement time machine at the bottom. User can select time, and the list of available freinds change correspondingly.
  • Events

    • Create Event Activity.
    • Add recycler view to see a list of events.
    • Can click on single item to see event detail.
    • Add floating button to create a new event.
  • Profile

    • Implement function of changing name, phone number, password, and deleting account.
    • Users can click the edit button on their profile page to edit their user names as well as phone numbers.
    • Users can click the “change password” tab to request emails with links to reset their passwords.- Users can delete their accounts at the bottom of the screen. A confirmation message is set up to prevent unintended deletion of account.
  • Navigation drawer

    • Add 5 main navigation menus
    • Add time button and toggle, so the user can change his/her free status.

Second Sprint Objectives:

  • Sign up

    • Implemented upload of profile picture in Sign Up from user's gallery
  • Who is free

    • Display free friends instead of all free users in the database
    • Order friends based on free time
    • Implement mutiple selection to create an event with mutiple friends
  • Friend

    • Receiving and sending friend request
    • Accepting and rejecting friend request
    • Deleting friends
    • Write search class that provides public functions to search for friends/all users with their names
  • Event

    • added features included invitations, switching spinners to timepickers in the newEvent activity, and editable events.
    • While formerly users could only view events that they participated in, they can now change the contents of the event, leave the event, and add new members to the event.
    • When an event is created, the user is required to send invitations to at least one of their friends. This means (among other things) that friends must be fully implements (another pseudo-relational action) and that user objects must be equipped with a new field that tracks references to invitations.
    • Invitations are read-only and users have the decision to either accept or deny invitations. Error handling on the new event page was also improved.
  • Profile

    • Users with profile picture will have their profile pictures displayed in all appropriate places, while users without will retain the default picture.
    • Users can change their profile picture in the Profile page

General State of the App

In our first sprint product, the user can create an account, log in and delete account. They will see all free users in the database, and can use time machine to filter free users based on their availability. They can create an event with a single person, and view events detail on Events page. The user can also revise their name, phone number, or change password in Profile page.

In our second sprint product, the user can upload a profile picture, change the profile picture. The user can search for freinds, send friend requests, and add/delete freinds. Only free friends are visible on Who is free page. The user can create event, send event invitation and edit events.

Meeting Notes:

4/1 Meet with Ryenne. Start making UI for all activities.

4/6 Work day. Merge all UIs to master.

4/8 Meet with Ryenne. Start with setting up firebase.

4/14 Work day. Sprint before deadline.

4/21 Plan Sprint 2 goals. Work day.

4/27 Meet with Ryenne. Prepare for demo.

5/2 Wrap up on sprint 2

5/3 Work day. Ready for submission

ufree's People

Contributors

mma05 avatar picsesalg avatar cseremetis avatar oootttyyy avatar

Watchers

James Cloos avatar  avatar Ryenne Dietrick avatar

ufree's Issues

Who’s Free

Create search bar at the top of the screen and the search view (including text edit space and back button) that navigates to a SearchUsers page
Create a layout (*.xml) for an entry of available users in the listview, including profile pic, name and placeholder for emoji.
Create buttons at the bottom of the screen to “time travel” to see others’ availability at a future time.
Long click to create checkboxes and to create floating action button to add an event, and link it to a new event page.
Clicking on a user in the ListView will navigate to the “events with a single person” page
Sort the page by favourite friends, and then by when their availability ends

Events

If the User is confirmed to go to an event, they may click on an event in the ListView to find an edit event page that will list:
Invitees
Participants
Time
Location
“Save Changes” button that will cement any changes to the event
“Cancle button” that will close the edit page without saving any new information
Else, they will see the same, but on View Only mode.
Click on FAB to navigate to new event fragment:
No longer an “add participants” feature, instead Users may “add invitees”
Invitations
Invitations may only be sent to friends
When an invitation is sent, the recipient will get a notification and an option to “accept” or “decline” the invitation
If they accept, they will be added to the event’s list of participants and the event will appear on that user’s “events” page, and can edit the event
If they reject, they will be removed from the event’s list of invitees

Time Machine

Embedded in Who’s Free page, and display current date and time.
Links to Java Android calendar and launch as a new activity
Create Time Picker to select time and launch as pop-up.
Implement Save/Cancel button for both, and change the date and time text accordingly
Implement to see 24 hours in advance
Once confirmed, users free at that time will show up

U Free Page

Place Yes/No buttons that will record user current availability
Update the user status in navigation drawer based on the user’s answer
Question the user about how long they will be available
“Available” variable stored in SharedPreferences determines whether or not user is free, set to true, does not change until user toggles availability bar in navigation drawer

Who’s Free

Create search bar at the top of the screen and the search view (including text edit space and back button) that navigates to a SearchUsers page
Create a layout (*.xml) for an entry of available users in the listview, including profile pic, name and placeholder for emoji.
Create buttons at the bottom of the screen to “time travel” to see others’ availability at a future time.
Long click to create checkboxes and to create floating action button to add an event, and link it to a new event page.
Clicking on a user in the ListView will navigate to the “events with a single person” page
Sort the page by favourite friends, and then by when their availability ends

Friends frontend

Recycler View Up top for Incoming Friend Requests
Recycler View down for all friends
Link to friends' account display
Swipe left to get unfriend. Click unfriend and a popup confirmation box

Navigation drawer

Create menu in the navigation drawer and set up each corresponding link
Display user info and status in the header
Implement a toggle button to change the user’s availability status

Friends backend

Receiving and sending friend request
Nav Drawer
Notifications (option)
Setting up the friends database - decide how to set up at your own discretion
Add friend
- Start a new .java file just for searching
- Make the searchAll() method public/protected so the rest of the document can access it

Testing

Creating and deleting an account
Editing account information
Creating an event
When someone is added to an event that event should appear in their events list
Leaving an event
Logging in/out
Changing availability
Availability should influence what other users see on their Who’s Free page

Friends

A User will only interact with their “friends” and no longer have access to availability for random application users
A “Friends” table will be included in our database scaffolding that stores Friendships (where each friendship is a new row)
To add a new friend, the user faces two options:
The user may navigate to the “Friends” page through the navigation drawer and click on the FAB, which will direct them to the SearchUsers page
The User may access the SearchUsers page by clicking on the search bar in the Who’s Free page
Friend-requests
Adding a new friend will create a new friend request
Outstanding friend requests will appear on the user’s friends page in a ListView above the friends list
The user may unfriend someone by navigating to the friends page and swiping left on the person they would like to unfriend
When the user attempts to unfriend someone, they will face a dialog box asking them to confirm this action

Settings

Change password (launches Firebase change password subroutine)
Add Save/Cancel buttons that leads to a pop up that verifies if the user wants to do that action
Button to delete account with corresponding verification pop-up

Sign Up

Create registration page in list layout
Includes:
Email
Password
Phone number
Name
Profile Picture
Birthday
Login features (ie. password) managed by Firebase helpers
Users table in database stores user data

Time Machine

Embedded in Who’s Free page, and display current date and time.
Links to Java Android calendar and launch as a new activity
Create Time Picker to select time and launch as pop-up.
Implement Save/Cancel button for both, and change the date and time text accordingly
Implement to see 24 hours in advance
Once confirmed, users free at that time will show up

Settings

Change name
Change profile pic
Change phone number
Change birthday
Any changes saved automatically when the User exits from Settings
Change password button will be implemented using Firebase’s update password

Events

List view of all the user’s upcoming events accessed through the navigation drawer
Enable swipe left to exit event.
Click on each event to navigate to a view-only summary of the event that will list:
People
Time
Location -> Link to Google Maps
Link to external messaging app
Click on FAB to navigate to new event fragment. Form will include:
Location text-edit
Description text-edit
Date CalendarPicker
Time Spinner or DateTimePicker
Add participants button that will navigate to the SearchUsers page

Log In

In-app login (does not use Facebook, Google, or any other 3rd party entity)
Email and password required fields (uses email as login id)
Layout for error messages if the password is wrong, email and password is blank, etc
Navigation to U Free page after successful login
“Logged_In” variable stored in SharedPreferences determines whether or not user is logged in to app, set to true

Testing

Creating and deleting an account
Editing account information
Creating an event
When someone is added to an event that event should appear in their events list
Leaving an event
Logging in/out
Changing availability
Availability should influence what other users see on their Who’s Free page

Testing

Should be able to add a new friend
Adding friend should send a friend request to the recipient
Confirming a friend request should create a new friendship
Rejecting a friend request should eliminate the request and result in no friendship
Creating an event should send invitations to all new guests
Accepting an invitation should add the guest to the list of participants
Rejecting an invitation should remove the guest from any event data
Editing an event
Leaving an event
Destroying an event when all participants leave

U Free Page

Place Yes/No buttons that will record user current availability
Update the user status in navigation drawer based on the user’s answer
Question the user about how long they will be available
“Available” variable stored in SharedPreferences determines whether or not user is free, set to true, does not change until user toggles availability bar in navigation drawer

Log In

In-app login (does not use Facebook, Google, or any other 3rd party entity)
Email and password required fields (uses email as login id)
Layout for error messages if the password is wrong, email and password is blank, etc
Navigation to U Free page after successful login
“Logged_In” variable stored in SharedPreferences determines whether or not user is logged in to app, set to true

Events

List view of all the user’s upcoming events accessed through the navigation drawer
Enable swipe left to exit event.
Click on each event to navigate to a view-only summary of the event that will list:
People
Time
Location -> Link to Google Maps
Link to external messaging app
Click on FAB to navigate to new event fragment. Form will include:
Location text-edit
Description text-edit
Date CalendarPicker
Time Spinner or DateTimePicker
Add participants button that will navigate to the SearchUsers page

Sign Up

Create registration page in list layout
Includes:
Email
Password
Phone number
Name
Profile Picture
Birthday
Login features (ie. password) managed by Firebase helpers
Users table in database stores user data

Who’s Free

ListView should only show available friends instead of all available users

Settings

Change name
Change profile pic
Change phone number
Change birthday
Any changes saved automatically when the User exits from Settings
Change password button will be implemented using Firebase’s update password

Navigation drawer

Create menu in the navigation drawer and set up each corresponding link
Display user info and status in the header
Implement a toggle button to change the user’s availability status

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.