Skip to content

An IOS dating app that uses deep learning to match people based on personality and interests.

Notifications You must be signed in to change notification settings

pb24578/matchus

Repository files navigation

Group number: 7
Team members: Pravat Bhusal, Taehyoung Kim, Andrew Le, Jinho Yoon
Name of project: MatchUs
Dependencies: Xcode 12.2, Swift 5

Special Instructions:

PLEASE OPEN THIS README.md file IN A MARKDOWN RENDERER.

You must first run the Django web server and web socket.

  1. Go inside of the server folder and run pip install -r requirements.txt for Python v3.8.6.
  2. cd into the server/server directory, then run the migrations using python manage.py makemigrations.
  3. Then migrate using python manage.py migrate.
  4. Lastly, run the server using python manage.py runserver.

Next, you need to run the Xcode simulator and register an account .

  1. Inside the client folder, run pod install to install the podfile dependencies.
  2. Now open the Matchus.xcworkspace file with Xcode.
  3. Run the app on an IPhone 11 Pro Max simulator on Xcode.
  • Note: If the build fails, you may want to use the Xcode Legacy Build system under Workspace Settings > Build System.
  1. The app will load the landing page, click the "Register" button and fill out the form to register your account.
  • Note: If you get issues with "Strong Password" then use the Software keyboard on the simulator to type into the text field instead because this is an issue with how the simulator handles the secure text field

Once you are finished registering your account, you will be directed to the dashboard page. The dashboard page will be empty if there's no users near your location. Therefore, to test the dashboard out we need to register more users.

Log out of the current user by clicking Profile Icon in the bottom tab bar. Then click the "Go to Settings" button, click "Account settings" button, then click the "Logout" button. You'll now be redirected to the home page, so create another account at a nearby location of the first user. Once this new user is created, if the account is close enough to the other user in terms of latitude/longitude, then it will show the other user on the dashboard.

To test chatting with another user, you need two simulators open. One simulator is the first user, and the other simulator is the other user. The chat system works in real-time because it uses web sockets.

Contributions

The contributions table will not look pretty if this README.md file isn't rendered on a Markdown viewer.

Table generated using https://www.tablesgenerator.com/markdown_tables.

Feature Description Release planned Release actual Deviations (if any) Who/Percentage
worked on
Login/Register with Google Login/Register the user using their Google OAuth credentials. Alpha Beta Originally planned to use Apple, but we instead used Google because
Apple required us to pay a $99 developer license fee. The Alpha release
did have the Apple credentials working originally, but we switched to
Google due to issues with an Apple developer account.
Taehyoung 75%

Pravat 25%
Login/Register Login/Register the user using their email and store the
password in the Django backend. Django handles hashing and
salting the passwords for us.
Alpha Alpha None Pravat 75%

Jinho 25%
Onboarding The "Tell us where you are", "Tell us your interests", and "Tell us about you"
view controllers. Including the backend to store the user's information from
these forms and store the user's profile photo.
Alpha Alpha We finished the onboarding pages in our original design doc for Alpha,
but we wanted to enhance the app further to allow the user to add their
biography and profile photo in the onboarding as well. This was done in
the Beta release.
Jinho 75%

Pravat 25%
Auto-login Logs the user into their account if there already exists a token in the
device's UserDefaults.
Final Final None Andy 100%
Dashboard Displays the nearby users to the logged-in user sorted in order by the matching
interests. Uses a deep learning algorithm from the backend called "Word2Vec" to
determine how users' interests are matched to each other.
Beta Beta None Andy 100%
Profile View View the user's match percent, interests, biography, profile photo, and featured photos. Beta Beta Originally the design document did not have a biography section, but
we decided to add it into the final release. Also, added a
scroll view with photos showing vertically instead of horizontally to
make viewing images easier.
Taehyoung 100%
Accumulate Interests from Others If the logged-in user swipes right on an interest from another user, then it adds it
into the list of interests that they have. This is done to help increase matches with
users that have interests similar to the user to the traits that the user just liked.
Beta Beta None Taehyoung 100%
Chat List View the list of chats the user has had with other users. Beta Beta None Pravat 50%

Jinho 25%

Taehyoung 25%
Chat Room A chat room connected to a web socket to chat between two users. The users are anonymous
at first, but if a user taps the other user's profile photo on the top right then it
initiates a request to reveal both profiles. If the other user types "ACCEPT", then both
profiles are no longer anonymous.
Beta Beta None Pravat 50%

Jinho 25%

Taehyoung 25%
Edit Profile View Allows the user to edit their profile photos and navigate to settings. Final Final Decided to show the biography text on the final release. Also, added a
scroll view with photos showing vertically instead of horizontally to
make editing images easier.
Taehyoung 100%
Settings Edit the personal information (such as profile photo, name, location, biography), edit
interests, edit password, and edit email.
Final Final Decided to allow for the user to edit their profile photo in the personal
information section.
Andy 75%

Jinho 25%
UI Colors, buttons, navigations, segues, text, tab bar, tables. Final Final None Jinho 85%

Pravat 5%

Taehyoung 5%

Andy 5%
Django Web Server and Socket Programs the endpoints to create, read, update, and delete user data. Also, the
real-time socket connection between users to allow for chatting.
Final Final None Pravat 85%

Taehyoung 5%

Andy 5%

Jinho 5%

About

An IOS dating app that uses deep learning to match people based on personality and interests.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •