Skip to content

Mobile app built with React Native that allows groups of people to create and track challenge benchmarks.

Notifications You must be signed in to change notification settings

DeliSauce/Team-Challenge-React-Native

Repository files navigation

logo Team Challenge

Team Challenge is a mobile app that allows users to set up challenges with their friends in order to push each other to meet individual goals (health, life, etc). Users can select the length and categories for the challenge and will receive a point for each category completed on any given day. The person with most points at the end of the challenge wins!!

This app was built with React Native and can run on both Android and iOS devices. It utilizes Firebase for authentication and syncing data in real time.

Android Play Store
Apple App Store (pending)

Logging In

Users can either log in with an email/password or via Facebook OAuth.
When signing up with Facebook, the user's photo and name is included in the navigation drawer.

Setting Up New Challenges

Users can create a new challenge and it is instantly added to each user's home page. Incorporates dynamic Firebase database user search in conjunction with data from user contacts.

Sample challenge: Health Challenge
  • 2 people, 10 days, 3 categories
  • receive 1 point per day for each category completed
  • person with the most points is the winner

Individual Challenge Status

There are 3 screens for each challenge:

  • Enter Data: allows the user to select completed goals for any given day
  • Overview: provides a view of the individual user's accumulated points
  • Standings: provides a large picture view of how each user's points stack up against each other

Firebase

  • Provides user authentication.

  • Utilizes realtime database to update information for all users when changes are made.

  • NoSQL as opposed to a relational database. Data is stored in a JSON tree.

    Firebase Database Model:
    {
      users: {
        "user_0001": {
          name: "John Doe",
          email: "JohnDoe@gmail.com",
          id: "user_0001",
          photo: "www.photo1.com",           
          provider: "facebook.com",
          contacts: { ... },
          challenges: {
            "challenge_001": {
              name: "Workout Challenge",
              adminID: "user_0001",
              days: "30",
              startDate: "2017-06-22"
            },
            "challenge_0002": {
              ...
            }
          }
        },
        Jane: { ... }
      },
    
      //indexed on email
      userLookup: {
        "user_0001": {
          name: "John Doe",
          email: "JohnDoe@gmail.com",
          photo: "www.photo1.com",
          provider: "facebook.com"
        },
        "user_0002": { ... }
      },
    
      challenges: {
        "challenge_0001": {
          name: "Workout Challenge",
          admin: "user_0001",
          days: "30"
          startDate: "2017-06-22",
          categories: {
            0: "60 sit-ups",
            1: "walk to work",
            ...
          }
          competitors: {
            0: {
              email: "JohnDoe@gmail.com",
              id: "user_0001"
              },
            1: {
              email: "JaneDoe@gmail.com",
              id: "user_0002"
              }
            ...
          },
          userData: {
            "user_0001": {
              [[false, true, true],
               [true, true, true],
               [false, false, false]]
            },
            "user_0002": {
              [[true, true, true],
               [true, true, false],
               [false, true, true]]
            }
          }
        },
        "challenge_0002": { ... }
      }
    }
    

Future goals

  • Add Firebase notifications (updates regarding leaders, new challenges, etc).
    • this may require a iOS developer account...Android may be simpler
  • "Beautify" challenge overview information and standings.
    • look into graphing modules for react native
  • Make user search more robust.
    • include option to email non-users with a link to the app in the Play store.

Other Important Information

Task List Items (completed and pending)
Setup and Installation
Notes
Privacy Policy

About

Mobile app built with React Native that allows groups of people to create and track challenge benchmarks.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published